Иллюстрированный самоучитель по Assembler

A

ADC Целочисленное сложение с переносом

Команда adc осуществляет сложение первого и второго операндов, прибавляя к результату значение флага переноса CF. Исходное значение первого операнда (приемника) теряется, замещаясь результатом сложения. Второй операнд не изменяется. В качестве первого операнда команды adc можно указывать регистр (кроме сегментного) или ячейку памяти, в качестве второго – регистр (кроме сегментного), ячейку памяти или непосредственное значение, однако не допускается определять оба операнда одновременно как ячейки памяти.

Операнды могут быть байтами или словами и представлять числа со знаком или без знака. Команда adc (совместно с командой add) обычно используется для сложения 32-разрядных чисел. Команда воздействует на флаги OF, SF, ZF, AF, PF и CF.

Пример 1:

mov AX,1125h
adc AX,2C25h; AX=3D4Bh, если CF был = 1
;AX=3D4Ah, если CF был = 0

Пример 2:

; В полях данных:
numlow dw 0FFFFh; Младшая часть 2-го слагаемого
numhigh dw 000Sh; Старшая часть 2-го слагаемого
;Число 0005FFFFh=393215
;В программном сегменте:
mov AX,000Sh; Младшая часть 1-го слагаемого
mov BX,0002h; Старшая часть 1-го слагаемого
;Число 00020005h=131077
add АХ,numlow; Сложение младших частей. АХ=4, CF=1
adc BX, numhigh; Сложение старших частей с переносом.
ВХ:АХ=0008:0004h.
;Число 00080004h=524292

Иллюстрированный самоучитель по Assembler › Приложение. Система команд процессоров Intel. › A Допустимо использование 32-битовых операндов и дополнительных режимов адресации 32-разрядных процессоров. Команда adc с 32-разрядными операндами может использоваться для сложения 64-разрядных целых чисел.

Пример:

; В полях данных
mem321 dd 0FFFFFFFFh; Младшая часть 1-го слагаемого
mem32h dd 98765432h; Старшая часть 1-го слагаемого
; В программном сегменте
mov EAX,1; Младшая часть 2-го слагаемого
mov EBX,0; Старшая часть 2-го слагаемого
add EAX,mem321; Складываем младшие половины
;Сумма=100000000h>32 бит
;EAX=000000h, перенос
adc EBX,mem32h; Складываем старшие половины и перенос.
 EBX=90000001h; Сумма: 9876543300000000h

ADD Целочисленное сложение

Команда add осуществляет сложение первого и второго операндов. Исходное значение первого операнда (приемника) теряется, замещаясь результатом сложения. Второй операнд не изменяется. В качестве первого операнда команды add можно указывать регистр (кроме сегментного) или ячейку памяти, в качестве второго – регистр (кроме сегментного), ячейку памяти или непосредственное значение, однако не допускается определять оба операнда одновременно как ячейки памяти.

Операнды могут быть байтами или словами и представлять числа со знаком или без знака. Команду add можно использовать для сложения как обычных целых чи-сел, так и двоично-десятичных (с использованием регистра АХ для хра-нения результата). Если складываются неупакованные двоично-десятичные (BCD) числа, после команды add следует использовать команду ааа; если складываются упакованные числа, то команду daa. Команда воздействует на флаги OF, SF, ZF, AF, PF и CF.

Пример 1:

mov BX,lFFEh
mov CX,3
add BX,CX; BX=2001h, CX=0003h

Пример 2:

mov AX,25h
add AX,12h; AX=0037h

Пример 3:

; В полях данных:
mem dw 128
;B программном сегменте:
add mem,100; mem=228
Если Вы заметили ошибку, выделите, пожалуйста, необходимый текст и нажмите CTRL + Enter, чтобы сообщить об этом редактору.