Процессоры Intel поддерживают операции с двумя форматами десятичных чисел: неупакованное двоично-десятичное число — байт, принимающий значения от 00 до 09, и упакованное двоично-десятичное число — байт, принимающий значения от 00 до 99h. Все обычные арифметическиe операции над такими числами приводят к неправильным результатам. Например, если увеличить 19h на 1, то получится число 1Ah, а не 20h. Для коррекции результатов арифметических действий над двоично-десятичными числами используются следующие команды.
· Команда:
|
DAA
|
· Назначение:
|
BCD-коррекция после сложения
|
· Процессор:
|
8086
|
DAA выполняет следующие действия:
-
Если младшие четыре бита AL больше 9 или флаг AF = 1, то AL увеличивается на 6, CF устанавливается, если при этом сложении произошел перенос, и AF устанавливается в 1.
-
Иначе AF = 0.
-
Если теперь старшие четыре бита AL больше 9 или флаг CF = 1, то AL увеличивается на 60h и CF устанавливается в 1.
-
Иначе CF = 0.
· Команда:
|
DAS
|
· Назначение:
|
BCD-коррекция после вычитания
|
· Процессор:
|
8086
|
DAS выполняет следующие действия:
-
Если младшие четыре бита AL больше 9 или флаг AF = 1, то AL уменьшается на 6, CF устанавливается, если при этом вычитании произошел заем, и AF устанавливается в 1.
-
Иначе AF = 0.
-
Если теперь старшие четыре бита AL больше 9 или флаг CF = 1, то AL уменьшается на 60h и CF устанавливается в 1.
-
Иначе CF = 0.
· Команда:
|
AAA
|
· Назначение:
|
ASCII-коррекция после сложения
|
· Процессор:
|
8086
|
Корректирует сумму двух неупакованных двоично-десятичных чисел в AL. Если коррекция приводит к десятичному переносу, АН увеличивается на 1.
· Команда:
|
AAS
|
· Назначение:
|
ASCII-коррекция после вычитания
|
· Процессор:
|
8086
|
Корректирует разность двух неупакованных двоично-десятичных чисел в AL сразу после команды SUB или SBB. Если коррекция приводит к займу, АН уменьшается на 1.
· Команда:
|
AAM
|
· Назначение:
|
ASCII-коррекция после умножения
|
· Процессор:
|
8086
|
Корректирует результат умножения неупакованных двоично-десятичных чисел, находящийся в АХ после выполнения команды MUL, преобразовывая полученный результат в пару неупакованных двоично-десятичных чисел (в АН и AL).
· Команда:
|
AAD
|
· Назначение:
|
ASCII-коррекция перед делением
|
· Процессор:
|
8086
|
Выполняет коррекцию неупакованного двоично-десятичного числа, находящегося в регистре АХ, так, чтобы последующее деление привело к корректному десятичному результату.
Логические операции
· Команда:
|
AND приемник, источник
|
· Назначение:
|
Логическое И
|
· Процессор:
|
8086
|
· Команда:
|
OR приемник, источник
|
· Назначение:
|
Логическое ИЛИ
|
· Процессор:
|
8086
|
· Команда:
|
XOR приемник, источник
|
· Назначение:
|
Логическое исключающее ИЛИ
|
· Процессор:
|
8086
|
· Команда:
|
NOT приемник
|
· Назначение:
|
Инверсия
|
· Процессор:
|
8086
|
· Команда:
|
TEST приемник, источник
|
· Назначение:
|
Логическое сравнение
|
· Процессор:
|
8086
|
Достарыңызбен бөлісу: |