Арифметические операции

ADD Сложение

Признаки: O D I T S Z A P C

* * * * * *

Команда: ADD destination, source.

Логика: destination=destination+source.

ADC Сложение с переносом

Признаки: O D I T S Z A P C

* * * * * *

Команда: ADC destination,source.

Логика: destination=destination+source+CF.

INC Инкремент

Признаки: O D I T S Z A P C

* * * * *

Команда: INC destination.

Логика: destination=destination+1.

SUB Вычитание

Признаки: O D I T S Z A P C

* * * * * *

Команда: SUB destination, source.

Логика: destination=destination-source.

SBB Вычитание с заемом

Признаки: O D I T S Z A P C

* * * * * *

Команда: SBB destination, source.

Логика: destination=destination-source-CF.

DEC Декремент

Признаки: O D I T S Z A P C

* * * * * *

Команда: DEC destination.

Логика: destination=destination-1.

MUL Умножение без учета знака

Признаки: O D I T S Z A P C

* ? ? ? ? *

Команда: MUL source.

Логика: AX=AL*source, если операнд source ‑ байт

или

DX:AX=AX*source, если операнд source ‑ слово.

IMUL Умножение с учетом знака

Признаки: O D I T S Z A P C

* ? ? ? ? *

Команда: IMUL source.

Логика: AX=AL*source, если операнд source ‑ байт

или

DX:AX=AX*source, если операнд source ‑ слово.

DIV Деление без учета знака

Признаки: O D I T S Z A P C

? ? ? ? ? ?

Команда: DIV source.

Логика: AL=AX/source

AH=remainder, если операнд source ‑ байт

или

AX=DX:AX/source

DX=remainder, если операнд source ‑ слово.

IDIV Деление с учетом знака

Признаки: O D I T S Z A P C

? ? ? ? ? ?

Команда: IDIV source.

Логика: AL=AX/source

AH=remainder, если операнд source ‑ байт

или

AX=DX:AX/source

DX=remainder, если операнд source ‑ слово.

CBW Преобразование байта в слово

Признаки не меняются.

Команда: CBW.

Логика: if (AL<80h) then

AH=0

else

AH=FFh.

CWD Преобразование слова в двойное слово

Признаки не меняются.

Команда: CWD.

Логика: if (AX<8000h) then

DX=0

else

DX=FFFFh.

NEG Получение дополнительного кода

Признаки: O D I T S Z A P C

* * * * * *

Команда: NEG destination.

Логика: destination=-destination; дополнительный код.

 

КОМАНДЫ ИТЕРАЦИИ

LOOP Переход по счетчику

Признаки не меняются.

Команда: LOOP short-label.

Логика: CX=CX-1

if (CX<>0) then JMP short-label.

LOOPE Переход пока равно

Признаки не меняются.

Команда: LOOPE short-label.

Логика: CX=CX-1

if (CX<>0) and (ZF=1) then JMP short-label.

LOOPNE Переход пока не равно

Признаки не меняются.

Команда: LOOPNE short-label.

Логика: CX=CX-1

if (CX<>0) and (ZF=0) then JMP short-label.

LOOPNZ Переход пока не ноль

Признаки не меняются.

Команда: LOOPNZ short-label.

LOOPNZ синоним LOOPNE. См. описание LOOPNE.

LOOPZ Переход пока ноль

Признаки не меняются.

Команда: LOOPZ short-label.

LOOPZ синоним LOOPE. См. описание LOOPE.

 

Команды коррекции

DAA Десятичная коррекция при сложении

Команда: DAA.

DAS десятичная коррекция при вычитании

Команда: DAS.