Логические команды

Арифметические команды

Команды пересылок

Команды пересылок являются эквивалентами операций присваивания в языках высокого уровня. Команды пересылки данных не изменяют состояния флагов независимо от результата операции.

MOV - переслать значение второго операнда в первый согласно способам адресации. Пример:

MOV AX, BX

MOV VAR, AX

MOV AX, [BX]

MOV CX, 10

LEA (Load effective address) присваивает значение смещения второго аргумента первому аргументу. Второй аргумент может быть не только переменной, но и некоторым способом адресации. Пример:

LEA BX, VAR

LEA DX, [BX]

PUSH записывает на вершину стека значение операнда, и изменяет значение регистра SP на величину равную размеру операнда. Так, запись слова в стек уменьшает значение регистра SP на 2. Операндом команды может быть только слово и двойное слово. Пример:

PUSH BX

PUSH CS

POP записывает в указанный операнд значение находящееся на вершине стека, и увеличивает значение регистра SP на размер операнда. Пример:

POP AX

POP DS

Команда XCHG (Exchange) выполняет обмен значений двух операндов. Пример:

XCHG AX, BX

XCHG AX, VAR

ADD - сложить содержимое двух операндов и результат оставить в приемнике. Синтаксис согласно методам адресации. Команда не различает чисел со знаком и без знака, но операции со знаком производятся корректно. Пример:

ADD AX, BX ; AX=AX+BX

ADD BX, 5

ADD CX, VAR

ADD AL, [BX]

SUB – вычитает второй операнд из первого, и помещает значение в первый операнд. Пример:

SUB AX, BX ; AX=AX-BX

SUB AX, 5

MUL – беззнаковое умножение регистра AL, AX на указанный операнд, в зависимости от размера операнда. И помещает результат в AX, DX:AX соответственно. Команда IMUL производит знаковое умножение операндов. Пример:

MUL BX ; DX:AX=AX*BX)

MUL 5

DIV – целочисленное беззнаковое деление аккумулятора на операнд. Если происходит деление байтов — частное в AL, остаток в AH. При делении слов — частное в AX, остаток в DX. Для деления чисел со знаком используется команда IDIV. Пример:

DIV BX

IDIV DH

INC – увеличивает операнд на 1. Пример:

INC AX

INC VAR

DEC – уменьшает операнд на 1. Пример:

DEC AX

DEC VAR

CMP – сравнение двух операндов. Команда не изменяет содержимое регистров, состояние флагов после выполнения этой команды эквивалентно выполнению команды SUB. Пример:

CMP AX, 2

CMP DX, VAR

AND – побитовое логическое «И». Пример:

AND AL, 01110101b

AND AX, [BX]

OR – побитовое логическое «ИЛИ». Пример:

OR AL, 01110101b

OR AX, [BX]

XOR – побитовое логическое «исключающее ИЛИ»

XOR AL, AL

XOR AX, [BX]

NOT – побитовое логическое «НЕ»

NOT AX

NOT VAR

TEST – команда не изменяет содержимое операндов, а лишь выставляет флаги эквивалентно выполнению операции AND.

TEST AX, AX

TEST AX, VAR