October 19 2017 19:10:41
Навигация
Авторизация
Логин

Пароль



Вы не зарегистрированы?
Нажмите здесь для регистрации .

Забыли пароль?
Запросите новый здесь.
КОМАНДЫ АРИФМЕТИЧЕСКИХ ОПЕРАЦИЙ
ПРОЦЕССОРЫ ОБЩЕГО НАЗНАЧЕНИЯ И СИСТЕМЫ НА ИХ ОСНОВЕ

Команды данной группы приведены в табл. 2.16. При выполнении команд производится установка признаков OF, SF, ZF, AF, DF, CF в регистре EFLAGS в соответствии с табл. 2.17.

Таблица 2.16 Команды арифметических операций

Синтаксис команды Операция
ADD r/m(8,16,32), r(8,16,32)
r(8,16,32), /m(8,16,32)
r/m(8,16,32), im(8,16,32)
r/m( 16,32), im8
EAX(AX,AL), im(16,8)
r/m(8,16,32) + r(8,16,32) ® r/m(8,16,32)
r(8,16,32) + r/m(8,16,32) ® r(8,16,32)
r/m(8,16,32) + im(8,16,32) ® r/m(8,16,32)
r/m(16,32) + im8(знак) ® r/m(8,16,32)
EAX(AX,AL) + im32(16,8) ® EAX(AX.AL)
ADC r/m(8,16,32), r(8,16,32)
EAX(AX.AL), im(16,8)
r/m(8,16,32) + r(8,16,32) + CF ® r/m(8,16,32) + CF
r(8,16,32) + r/m(8,16,32) + CF ® r(8,16,32) + CF
r/m(8,16,32) + im(8,16,32) + CF ® r/m(8,16,32) + CF
r/(16,32) + im8(знак) + CF ® r/m(8,16,32) + CF
EAX(AX,AL)+im32(16,8)+CF ® EAX(AX,AL)+CF
SUB r/m(8,16,32), r(8,16,32)
r(8,16,32), r/m(8,16,32)
r/m(8,16,32), im(8,16,32)
r/m( 16,32), im8
EAX(AX.AL), im(16,8)
r/m(8,16,32) - r(8,16,32) ® r/m(8,16,32)
r(8,16,32) - r/m(8,16,32) ® r(8,16,32)
r/m(8,16,32) - im(8,16,32) ® r/m(8,16,32)
r/m(16,32) - im8(знак) ® r/m(8,16,32)
EAX(AX.AL) - im32(16,8) ® EAX(AX.AL)
SBB r/m(8,16,32), r(8,16,32)
r(8,16,32), r/m(8,16,32)
r/m(8,16,32), im(8,16,32)
r/m(16,32), im8
EAX(AX.AL), im(16,8)
r/m(8,16,32) - r(8,16,32) - CF ® r/m(8,16,32)
r(8,16,32) - r/m(8,16,32) - CF ® r(8,16,32)
r/m(8,16,32) - im(8,16,32) - CF ® r/m(8,16,32)
r/m(16,32) - im8(знак) - CF ® r/m(8,16,32)
EAX(AX.AL) - im32(16,8) - CF ® EAX(AX.AL)
CMP r/m(8,16,32), r(8,16,32)
r(8,16,32), r/m(8,16,32)
r/m(8,16,32), im(8,16,32)
r/m(16,32), im8
EAX(AX,AL), im(16,8)
r/m(8,16,32) - r(8,16,32), установка OF,SF,ZF,AF,PF,CF
r(8,16,32) - r/m(8,16,32), установка OF,SF,ZF,AF,PF,CF
r/m(8,16,32)-im(8,16,32), установка OF,SF,ZF,AF,PF,CF
r/m(16,32) - im8(знак), установка OF,SF,ZF,AF,PF,CF
EAX(AX,AL)-im32(16,8), установка F,SF,ZF,AF,PF,CF
MUL AL, r/m8 AL*r/m8 ® AX
AX*r/m16*EAX
EAX * r/m32 ® EDX : EAX
IMUL r/m(8,16,32) r(16,32), r/m(16,32) r(16,32), im(16,32) r(16,32), im8 r(16,32), r/m(16,32),im8 r(16,32),r/m(16,32),im(16,32) AL(AX,EAX) * r/m(8,16,32) ® AX(EAX,EDX: EAX)
r(16,32) * r/m(16,32) ® r(16,32)
r(16,32) * im(16,32) ® r(16,32)
r(16,32) * im8(3HaK) ® r(16,32)
r(16,32) * r/m(16,32) * im8(знак) ® r(16,32)
r(16,32) * r/m(16,32) * im(16,32) ® r(16,32)
DIV AL, r/m8
AX, r/m16
EAX, r/m32
AX / r/m8 ® AL, остаток ® АН
DX : AX / r/m16 ® AX, остаток ® DX
EDX : EAX / r/m32 ® EAX, остаток ® EDX
IDIV AL, r/m8
AX, r/m16
EAX, r/m32
AX / r/m8 ® AL, остаток ® АН
DX : AX / r/m16 ® AX, остаток ® DX
EDX : EAX / r/m32 ® EAX, остаток ® EDX
CBW
CWOE
CWD
CDQ

Знаковое расширение AL ® АХ
Знаковое расширение АХ ® ЕАХ
Знаковое расширение АХ ® DX : АХ
Знаковое расширение ЕАХ ® EDX : ЕАХ
ААА

AAS

ААМ

AAD

Десятичная коррекция после сложения (команда ADD) двух неупакованных двоично-десятичных чисел
Десятичная коррекция после вычитания (команда SUB) двух неупакованных двоично-десятичных чисел
Десятичная коррекция после умножения (команда MUL) двух неупакованных двоично-десятичных чисел
Десятичная коррекция после деления (команда DIV) двух неупакованных двоично-десятичных чисел
DAA

DAS

Десятичная коррекция после сложения (команды ADD, INC) двух упакованных двоично-десятичных чисел
Десятичная коррекция после вычитания (команды SUB, DEC) двух упакованных двоично-десятичных чисел
INC r/m (8,16,32)
r(16,32)
r/m(8,16,32) + 1 ® r/m(8,16,32)
r(16,32) + 1 ® r(16,32)
DEC r/m(8,16,32) r(16,32) r/m(8,16,32) - 1 ® r/m(8,16,32)
r(16,32) - 1 ® r(16,32)
NEG r/m (8,16,32) - r/m(8,16,32) - 1 ® r/m(8,16,32)
XADD r/m(8,16,32), r(8,16,32) r/m (8,16,32) « r(8,16,32)
r/m (8,16,32) + r(8,16,32) ® r/m (8,16,32)
CMPXCHG  r/m(8,16,32),r(8,16,32) r(8,16,32) ® r/m(8,16,32), ZF=1, если (AL,AX,EAX) = r(8,16,32)
r/m(8,16,32) ® (AL,AX,EAX), ZF=0, если (AL,AX,EAX) ¹ r(8,16,32)
CMPXCHG8B         r/m(64) ЕСХ:ЕВХ ® r/m64, ZF=1, если EDX:EAX = r(m64), расширение нулями
EDX:EAX ® r/m64, ZF=0, если EDX:EAX ¹ r(m64), расширение нулями

Команды сложения, вычитания (ADD, SUB) и сложения, вычитания с переносом/заемом (ADC, SBB), учитывающие значение признака CF, имеют несколько модификаций для различных вариантов адресации операндов. Отметим, что при операциях, использующих 16- или 32-разрядный операнд, хранящийся в регистре или памяти, и непосредственно заданный 8-разрядный операнд im8, производится его знаковое расширение до разрядности слова или двойного слова.

При выполнении команды сравнения СМР производится вычитание содержимого адресуемых регистров и ячеек памяти без их изменения и устанавливаются значения признаков в регистре EFLAGS, определяющих результат сравнения. При равенстве операндов устанавливается значение ZF = 1, при неравенстве - ZF = 0. Если при сравнении операндов

без знака уменьшаемое выше (больше) вычитаемого, то устанавливается значение CF = 0, если уменьшаемое ниже (меньше) вычитаемого, то CF = 1. Если при сравнении операндов со знаком уменьшаемое больше вычитаемого, то устанавливаются значения SF = OF = 0 или SF = OF = 1; если меньше, то SF = 0, OF = 1 или SF = 1, OF = 0.

Для умножения 8-, 16- или 32-разрядных операндов используются одноадресная команда MUL и команда IMUL, имеющая одно-, двух- или трехадресную форму. Команда MUL служит для умножения беззнаковых операндов, команда IMUL -для умножения операндов со знаком.

Комментарии
Нет комментариев.
Добавить комментарий
Пожалуйста, залогиньтесь для добавления комментария.
Рейтинги
Рейтинг доступен только для пользователей.

Пожалуйста, авторизуйтесьили зарегистрируйтесь для голосования.

Нет данных для оценки.

Время загрузки: 0.03 секунд 2,256,252 уникальных посетителей