Арифметические команды. Команды сложения и вычитания. Установка флагов. Команды сдвига. Быстрое умножение. Команды умножения и деления. Сложение и вычитание чисел с произвольной точностью. Команды десятичной арифметики. Трансляция арифметических выражений. Идентификация математических операторов.
Операции | Расшифровка | Значение | Формат вызова | флаги |
сложение/вычитание | CF, PF, AF, ZF, SF,OF |
add | | сложение | add приемник,источник | CF, PF, AF, ZF, SF, OF. |
adc | add with carry | Сложение с учетом значения флажка CF | adc приемник,источник | PF, AF, ZF, SF, OF. |
inc | increment | Увеличение на 1 | inc приемник | PF, AF, ZF, SF, OF. |
dec | decrement | Уменьшение на 1 | dec приемник | CF, PF, AF, ZF, SF, OF. |
neg | negate | Изменяет знак операнда | neg приемник | CF, PF, AF, ZF, SF, OF. |
xadd | exchange and add | Сложение и смена значений | add приемник,источник | CF, PF, AF, ZF, SF, OF. |
sub | subtract | Вычитание | sub приемник,источник | CF, PF, AF, ZF, SF, OF. |
sbb | subtract with borrow | Для учета заема из старшего бита | sbb приемник,источник | CF и OF |
умножение/деление | CF, PF, AF, ZF, SF, OF. |
mul | multiply | Беззнаковое умножение eax/ax/al на источник | mul источник | все, но полезные CF и OF |
imul | integer multiply | Знаковое умножение Результат заноситься в: Байт ax Слово dx:ax Двойное слов edx:eax | imul источник imul приемник,источник imul приемник,операнд1,операнд2 | все, но полезные CF и OF |
div | divide | Беззнаковое деление | div источник | - |
idiv | integer divide | Знаковое деление | idiv источник | - |
cbw | convert byte to word | преобразует байт в слово | cbw | - |
cwd | convert word to dword | преобразует слово в двойное слово | cwd | - |
cwde | convert word to dword extended | преобразует слово в двойное слово расширенное | cwde | - |
установка флагов | - |
cdq | convert dword to quadword | преобразует двойное слово в учетверенное слово | cdq | |
clc | clear carry flag | сбрасывает CF в 0 | clc | |
stc | set carry flag | устанавливает CF в 1 | stc | |
cmc | complement carry flag | инвертирует флаг CF | cmc | |
cld | clear direction flag | сбрасывает DF в 0 | cld | |
std | set direction flag | устанавливает DF в 1 | std | |
cli | clear interrupt enable flag | сбрасывает IF в 0 | cli | |
sti | set interrupt enable flag | устанавливает IF в 1 | sti | |
команды сдвигов | |
sal | shift arithmetic left | арифметический сдвиг влево | sal приемник,счетчик | |
sar | shift arithmetic right | арифметический сдвиг вправо | sar приемник,счетчик | |
shl | shift logical left | логический сдвиг влево | shl приемник,счетчик | |
shr | shift logical right | логический сдвиг вправо | shr приемник,счетчик | |
shld | shift left double | реализует сдвиг повышенной точности влево | shld операнд1, операнд2, счетчик | |
shrd | shift right double | реализует сдвиг повышенной точности вправо | shrd операнд1,операнд2, счетчик | |
rol | rotate left | реализует циклический сдвиг влево | rol приемник,счетчик | |
ror | rotate right | реализует циклический сдвиг вправо | ror приемник,счетчик | |
rcl | rotate through carry left | предназначена для циклического сдвига через флаг CF влево | rcl приемник,источник | |
rcr | rotate through carry right | предназначена для циклического сдвига через флаг CF вправо | rcr приемник,источник | |
двоично-десятичная арифметика | |
aaa | ASCII adjust for add | коррекция неупакованного BCD-сложения | aaa | |
aas | ASCII adjust for subtract | коррекция неупакованного BCD-вычитания | aas | |
aam | ASCII adjust for multiply | коррекция неупакованного BCD-умножения | aam | |
aad | ASCII adjust for divide | коррекция неупакованного BCD-деления | aad | |
daa | decimal adjust for add | коррекция результата сложения неупакованного BCD | daa | |
das | decimal adjust for subtract | коррекция результата вычитания неупакованного BCD | das | |
| | | | | |