Синтаксис | ADC приемник,источник |
Машинный код | 14 ib — ADC AL,imm8 15 iw — ADC AX,imm16 15 id — ADC EAX,imm32 80 /2 ib — ADC r/m8,imm8 81 /2 iw — ADC r/m16,imm16 81 /2 id — ADC r/m32,imm32 83 /2 ib — ADC r/m16,imm8 83 /2 ib — ADC r/m32,imm8 10 /r — ADC r/m8,r8 11 /r — ADC r/m16,r16 11 /r — ADC r/m32,r32 12 /r — ADC r8,r/m8 13 /r — ADC r16,r/m16 13 /r — ADC r32,r/m32 |
Описание | Сложение с учётом переноса. |
Действие | Сложение двух целочисленных двоичных операндов с учётом флага переноса CF. приёмник = приёмник + источник + CF |
Флаги | OF=r SF=r ZF=r AF=r PF=r CF=r |
При сложении чисел которые в результате дадут больше 16 бит происходит перенос старшего бита, из-за чего флаг CF (carry flag) меняет значение. Команда ADC учитывает значение флага CF предыдущей операции сложения и при вызове складывает операнды и добавляет значение CF (единицу или ноль) к младшему разряду результата.
Пример использования команды adc:
1 2 3 4 5 6 7 8 9 10 11 12 | jmp start x dw 56767 y dw 32000 z dd ? start: mov ax,[x] mov bx,[y] add ax,bx mov word[z],ax ;Сохранение младшей части результата xor ax,ax ;Обнуление ax adc ax,0 ;Если CF=1, он будет перенесен в регистр ax mov word[z+2],ax ;Сохранение старшей части результата |