Инструкции целочисленной арифметики
Инструкции целочисленной арифметики.
ADD dest,src | Сложение двух операндов. Первый операнд может быть регистром или ячейкой памяти, второй - регистром, ячейкой памяти, константой. Невозможно только, когда оба операнда являются ячейками памяти. |
XADD dest,src | Данная операция производит в начале обмен операндами, а затем выполняет операцию ADD. Начиная 486-ого. |
ADC dest,src | Сложение с учетом флага переноса - в младший бит добавляется бит (флаг) переноса. |
INC r/m | Инкремент операнда. |
SUB dest,src | Вычитание двух операндов. Остальное аналогично сложению (команда ADD). |
SBB dest,src | Вычитание с учетом бита переноса. Из младшего бита вычитается бит (флаг) переноса. |
DEC r/m | Декремент операнда. |
CMP r/m,r/m | Вычитание без изменения операндов (сравнение). |
CMPXCHG r,m,a | Сравнение с обменом. Воспринимает три операнда (регистр-операнд-источник, ячейка памяти-операнд- получатель, аккумулятор, т.е. AL,AX или EAX) Если значения в операнде-получателе и аккумуляторе равны, операнд-получатель заменяется операндом-источником, исходное значение операнда-получателя загружается в аккумулятор. Начиная с 486-ого. |
CMPXCHG8B r,m,a | Сравнение и обмен восьми байт. Начиная с Pentium. |
NEG r/m | Изменение знака операнда. |
ААА | Коррекция после ASCII-сложения. Коррекция результата двоичного сложения двух неупакованных десятичных чисел. Например, АХ содержит число 9H. Пара команд ADD AL,8/AAA приводит к тому, что в АХ будет содержаться 0107, т.е. ASCII-число 17. |
AAS | Коррекция после ASCII-вычитания. Например: MOV AX,205H; загрузить ASCII 25 SUB AL,8; двоичное вычитание AAS ;теперь АХ содержит 107Н, т.е. 17. |
ААМ | Коррекция после ASCII-умножения. Для этой команды предполагается, что в регистре АХ находится результат двоичного умножения двух десятичных цифр (диапазон от 0 до 81). После выполнения команды образуется двухбайтное произведение в регистре АХ в ASCII-формате. |
AAD | Коррекция перед ASCII-делением. Предполагается, что младшая цифра находится в AL, а старшая - в АН. |
DAA | Коррекция после BCD-сложения.59 |
DAS | Коррекция после ВСD-вычитания. |
MUL r/m | Умножение АL(AX,EAX) на целое беззнаковое число. Результат, соответственно, будет содержаться в АХ, DX:AX, EDX:EAX. |
IMUL r/m | Знаковое умножение (аналогично MUL). Все операнды считаются знаковыми. Команда IMUL имеет также двухоперандный и трехоперандный вид. Двухоперандный вид IMUL r,src r<-r*src. Трехоперандный вид IMUL dst,src,imm dst<-src*imm. |
DIV r/m (src) | Беззнаковое деление. Аналогично беззнаковому умножению. Осуществляет деление аккумулятора и его расширения (AH:AL, DX:AX, EDX:EAX) на делитель src. Частное помещается в аккумуляторе, а остаток - в расширении аккумулятора. |
IDIV r/m | Знаковое деление. Аналогично беззнаковому. |
CBW | Расширение байта (AL) в слово с копированием знакового бита. |
CWD | Расширение слова (АХ) в двойное слово (DX:AX) с копированием знакового бита. |
CWDE | Расширение слова (АХ) в двойное слово (EAX) с копированием знакового бита. |
CDQ | Преобразование двойного слова (EAX) в учетверенное слово (EDX:EAX). |