Инструкция add выполняет сложение двух операндов, а инструкция sub - вычитание. Они имеют следующий синтаксис:
add destination, source sub destination, source
Инструкция add складывает операнды destination и source и результат помещает в операнд destination. Инструкция sub вычитает из destination операнд source и результат вычитания помещает в операнд destination.
; для add destination = destination + source ; для sub destination = destination - source
В качестве операндов могут участвовать регистры, переменные, константы и непосредственные операнды. Следует учитывать, что константы и непосредственные операнды могут быть размером не более 32 бита, даже если первый операнд представляет 64-битный регистр.
Пример сложения:
.code main proc mov rdx, 6 mov rax, 10 add rax, rdx ; rax = rax + rdx ret main endp end
Здесь к числу в регистре rax прибавляем значение из регистра rdx. В итоге в rax будет число 16.
Пример вычитания:
.code main proc mov rdx, 6 mov rax, 10 sub rax, rdx ; rax = rax - rdx ret main endp end
В данном случае из значения в регистре rax (10) вычитаем значение регистра rdx (6). В итоге в регистре rax будет число 4.
Инструкции inc и dec увеличивают и уменьшают соответственно на единицу значение операнда. В качестве операнда может передаваться регистр или переменная:
.code main proc mov rdx, 3 mov rax, 8 inc rdx ; RDX = RDX + 1 dec rax ; RAX = RAX - 1 ret main endp end
Здесь значение регистра RDX увеличивается на 1 с помощью инструкции inc
, а значение регистра RAX уменьшается на 1 с помощью инструкции dec