Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Micro_systK.doc
Скачиваний:
4
Добавлен:
01.04.2025
Размер:
4 Мб
Скачать
☆

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

Арифметические команды реализуют операции арифметического сложе­ния, вычитания, умножения, деления, сравнения и десятичной коррекции. Команды данной группы представлены в табл. П.2. В таблице использованы следующие условные обозначения:

  • op, op1, op2 – операнды;

  • i8, i16, i32 – 8-, 16- и 32-разрядные константы находящиеся непосредственно в командах;

  • r8, r16 – имя регистра РОН, содержащего 8-разрядный или 16-разрядный операнд;

  • m8, m16, m32 – адрес ячейки памяти, содержащей 8-,16- или 32-разрядный операнд;

  • CF – флаг переноса;

  • mod op – остаток от деления;

  • div op – неполное частное от деления;

  • КЧ – корректирующее число.

Таблица П.2. Арифметические команды

Мнемоника

Операция

Допустимые комбинации операндов

Описание команды

op1

op2

Команды воздействуют на флаги AF, CF, OF, PF, SF, ZF

ADD op1,op2

op1:=op1+op2

r8

m8

r16

m16

i8, r8, m8

i8, r8

i16, r16, m16

i16, r16

Сложение (addition)

ADC op1,op2

op1:=op1+op2+

+CF

r8

m8

r16

m16

i8, r8, m8

i8, r8

i16, r16, m16

i16, r16

Сложение с учетом переноса (addition with carry)

SUB op1,op2

op1:=op1-op2

r8

m8

r16

m16

i8, r8, m8

i8, r8

i16, r16, m16

i16, r16

Вычитание (subtract)

SBB op1,op2

op1:=op1-op2-

-CF

r8

m8

r16

m16

i8, r8, m8

i8, r8

i16, r16, m16

i16, r16

Вычитание с учетом заема (subtract with barrow)

CMP op1,op2

op1-op2

r8

m8

r16

m16

i8, r8, m8

i8, r8

i16, r16, m16

i16, r16

Сравнение (compare)

NEG op

op :=-op

r8, m8, r16, m16

Изменение знака (negative)

Команды воздействуют на флаги AF, OF, PF, SF, ZF

INC op

op :=op +1

r8, m8, r16, m16

Увеличение на 1 (increment)

DEC op

op :=op -1

r8, m8, r16, m16

Уменьшение на 1 (decrement)

Команды воздействуют на флаги AF, OF, PF, SF, ZF

MUL op

AX:=AL  op

r8, m8

Умножение целых без знака (multiply)

(DX, AX):=

AXop)

r16, m16

IMUL op

AX:=AL  op

r8, m8

Умножение целых со знаком (integer multiply)

(DX, AX):=

AXop)

r16, m16

DIV op

AH:=AX mod op AL:=AX div op

r8, m8

Деление целых без знака (divide)

DX:=

(DX,AX) mod op

AX:=

(DX,AX) div op

r16, m16

IDIV op

AH:=AX mod op AL:=AX div op

r8, m8

Деление целых со знаком (integer divide)

DX:=

(DX,AX) mod op

AX:=

(DX,AX) div op

r16, m16

Команды не воздействуют на флаги

CBW

AH := 00h при AL0

AH := 0FFh при AL0

AL

Расширение байта до слова (convert byte to word)

CWD

DX := 0000h при AX0

DX := 0FFFFh при AX0

AX

Расширение слова до двойного слова (convert word to double)

Команды воздействуют на флаги AF, CF, PF, SF, ZF

DAA

AL:=AL+КЧ

AL

Десятичная коррекция после сложения (decimal adjust after addition)

DAS

AL:=AL+КЧ

AL

Десятичная коррекция после вычитания (decimal adjust after subtraction)

Команды воздействуют на флаги AF, CF

AAA

AL:=AL+КЧ

AL

ASCII-коррекция после сложения (ASCII adjust after addition)

AAS

AL:=AL+КЧ

AL

ASCII-коррекция после вычитания (ASCII adjust after subtraction)

Команды воздействуют на флаги AF, OF, PF, SF, ZF

AAM

AX:=AX+КЧ

AX

ASCII-коррекция после умножения (ASCII adjust after multiply)

AAD

AL:=AL+КЧ

AL

ASCII-коррекция перед делением (ASCII adjust before division)

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]