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
Допустимо использование 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