Арифметические команды.
&&&
$$$003-003-001$3.3.3.1
Методические
указания к
практическому занятию №3
Данная
лабораторная работа освещает принципы
работы с арифметическими операциями
ассемблера, а также командами сдвига,
умножения, сложения и вращения битов.
Рассматривается применение некоторых
специфических команд пересылки и
передачи управления, и, кроме того,
освещается принцип функционирования
команды десятичной коррекции после
сложения DAA.
Для
работы с арифметикой процессор Intel80x86 использует сравнительно
немного команд – сложение, вычитание,
умножение, деление и бинарные (битовые,
двоичные) операции. Основные из них
приведены в таблице 1:
Таблица 1. Арифметические команды.
Мнемоника (опN
= операндN) |
Типы
операндов (см.
табл. 2) |
Логика
выполнения |
Изменяющиеся
флаги |
ADD
оп1, оп2 |
R,
A A,
I R,
I R,
M M,
R M,
I |
оп1
= оп1 + оп2 простое
сложение |
O,
S, Z, A, P, C |
ADC
оп1, оп2 |
R,
A A,
I R,
I R,
M M,
R M,
I |
оп1
= оп1 + оп2 + CF сложение
с учетом переноса, т.е., если CF
= 1, то оп1
= оп1
+ оп2 + 1
|
O,
S, Z, A, P, C |
SUB
оп1, оп2 |
R,
R M,
R R,
M A,
I R,
I M,
I |
оп1
= оп1 - оп2 вычитание |
O,
S, Z, A, P, C |
SBB
оп1, оп2 |
R,
R M,
R R,
M A,
I R,
I M,
I |
оп1
= оп1 - оп2 - CF вычитание
с учетом переноса (с заёмом) |
O,
S, Z, A, P, C |
MUL
оп1 |
R8 R16 M8 M16 |
AX
= AL
* оп1, если
оп1 имеет размер 1 байт, или DX:AX
= AX
* оп1, если
оп1 имеет размер 2 байта |
O,
C Значение
флагов S, Z, A, P после выполнения операции
непредсказуемо
|