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


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

Допустимо использование 32-битовых операндов и дополнительных режимов адресации 32-разрядных процессоров. Команда adc с 32-разрядными операндами может использоваться для сложения 64-разрядных целых чисел.

Пример


; В полях данных

mem321 dd 0FFFFFFFFh ;Младшая часть 1-го слагаемого

mem32h dd 98765432h ;Старшая часть 1-го слагаемого

; В программном сегменте

mov EAX,1 ;Младшая часть 2-го слагаемого

mov EBX,0 ;Старшая часть 2-го слагаемого

add EAX,mem321 ;Складываем младшие половины

;Сумма=100000000Ь>32 бит

;EAX=000000h, перенос

adc EBX,mem32h ;Складываем старшие половины

;и перенос. EBX=90000001h ;Сумма: 9876543300000000h

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


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




Начало  Назад  Вперед



Книжный магазин