ХАНДЫФАР

Сложение


_______________ADD AL, imm8 - Добавление imm8 к AL.

_______________ADD AX, imm16 - Добавление imm16 к AX.

_______________ADD reg/mem8, imm8 - Добавление imm8 к reg/mem8.

_______________ADD reg/mem16, imm16 - Добавление imm16 к reg/mem16.

_______________ADD reg/mem16, imm8 - Добавление знаково-расширенного imm8 к reg/mem16.

_______________ADD reg/mem8, reg8 - Добавление reg8 к reg/mem8.

_______________ADD reg/mem16, reg16 - Добавление reg16 к reg/mem16.

_______________ADD reg8, reg/mem8 - Добавление reg/mem8 к reg8.

_______________ADD reg16, reg/mem16 - Добавление reg/mem16 к reg16.


Добавляет целевой операнд (первый операнд) и исходный операнд (второй операнд), а затем сохраняет результат в целевом операнде. Целевым операндом может быть регистр или ячейка памяти; исходным операндом может быть непосредственное значение, регистр или ячейка памяти. (Однако два операнда памяти не могут быть использованы в одной инструкции.) Когда в качестве операнда используется непосредственное значение, оно расширяется по знаку до длины формата целевого операнда.


Инструкция add выполняет сложение целых чисел. Она вычисляет результат как для целочисленных операндов со знаком, так и без знака и устанавливает флаги OF и CF для указания переноса (переполнения) в результате со знаком или без знака соответственно. Флаг SF указывает на знак результата со знаком.


Эта инструкция может использоваться с префиксом lock, чтобы разрешить выполнение инструкции атомарно.


Флаги OF, SF, ZF, AF, CF и PF устанавливаются в соответствии с результатом.


Предположим, что регистр al содержит 1810 (001216), регистр bl содержит 410 (000416). После выполнения add al, bl регистр al будет содержать 2210 (001616).


  1. title Автор: Довгополов Евгений Сергеевич
  2. .model small
  3. .stack 100h
  4. code segment public _______; Начало сегмента кода
  5. ____assume cs:code
  6. ____main proc _____________; Начало процедуры main
  7. ________mov_____al, 18_____; Копируем значение 18 в регистр al
  8. ________mov_____bl, 4______; Копируем значение 4 в регистр bl
  9. ________add_____al, bl_____; К регистру al прибавляем значение регистра bl
  10. ________mov_____ax, 4C00h__; Копируем значение функции завершения процесса в ah а значение в al
  11. ________int_____21h _______; Вызываем прерывание DOS
  12. ____main endp _____________; Конец процедуры main
  13. code ends _________________; Конец сегмента кода
  14. end main __________________; Конец файла. Точкой входа указывается процедура main
Made on
Tilda