Арифметические команды.
&&&
$$$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 после выполнения операции непредсказуемо
|