Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Абель.docx
Скачиваний:
13
Добавлен:
26.11.2018
Размер:
569.84 Кб
Скачать

80286 И 80386 выходят за рамки данной книги и поэтому в данной главе также

отсутствуют. При пояснении команд и способов адресации используются

следующие сокращения:

addr адрес памяти;

addr-high первый байт адреса (старший);

addr-low левый (младший) байт. адреса;

data непосредственный операнд (8 бит при w=0 и 16 бит при w= 1);

data-high правый (старший) байт непосредственного операнда;

data-low левый (младший) байт непосредственного операнда;

disp смещение (относительный адрес);

rеg ссылка на регистр.

AAA: Коррекция ASCII-формата для сложения

-------------------------------------------

О п е р а ц и я: Корректирует сумму двух ASCII-байтов в регистре AL.

Если правые четыре бита регистра AL имеют значение больше 9 или флаг AF

установлен в 1, то команда AAA прибавляет к регистру АН единицу и

устанавливает флаги AF и CF. Команда всегда очищает четыре левых бита в

регистре AL.

Ф л а г и: Команда воздействует на флаги AF и CF (флаги OF, PF, SF и

ZF не определены).

О б ъ е к т н ы й к о д: 00110111 (без операндов).

AAD: Коррекция ASCII-формата для деления

------------------------------------------

О п е р а ц и я: Корректирует ASCII-величины для деления. Команда AAD

используется перед делением неупакованных десятичных чисел в регистре AХ

(удаляет тройки ASCII-кода). Эта команда корректирует делимое в двоичное

значение в регистре AL для последующего двоичного деления. Затем умножает

содержимое регистра AН на 10. прибавляет результат к содержимому регистра

AL и очищает AН. Команда AAD не имеет операндов.

Ф л а г и: Команда воздействует на флаги PF, CF, ZF (флаги AF CF и OF

не определены).

О б ъ е к т н ы й к о д: |11010101|00001010|.

AAМ: Коррекция ASCII-формата для умножения

--------------------------------------------

О п е р а ц и я: Команда AAM используется для коррекции результата

умножения двух неупакованных десятичных чисел. Команда делит содержимое

регистра AL на 10, записывает частное в регистр AН, а остаток в регистр

AL.

Ф л а г и: Команда воздействует на флаги PF, SF и ZF (флаги AF CF и

OF не определены).

О б ъ е к т н ы й к о д: |11010100|00001010| (без операндов).

AAS: Коррекция ASCII-формата для вычитания

--------------------------------------------

О п е р а ц и я: Корректирует разность двух ASCII-байтов в регистре

AL. Если первые четыре бита имеют значение больше 9 или флаг CF установлен

в 1, то команда AAS вычитает 6 из регистра AL и 1 из регистра АН, флаги AF

и CF при этом устанавливаются в 1. Команда всегда очищает левые четыре

бита в регистре AL.

Ф л а г и: Команда воздействует на флаги AF и CF (флаги OF PF SF и ZF

не определены).

О б ъ е к т н ы й к о д: 00111111 (без операндов).

ADC: Сложение с переносом

---------------------------

О п е р а ц и я: Обычно используется при сложении многословных

величин для учета бита переполнения в последующих фазах операции. Если

флаг CF установлен в 1, то команда ADC сначала прибавляет 1 к операнду 1.

Команда всегда прибавляет операнд 2 к операнду 1, аналогично команде ADD.

Ф л а г и: Команда воздействует на флаги AF, CF, OF, PF, SF и ZF.

О б ъ е к т н ы й к о д (три формата):

Регистр плюс регистр или память:

|000100dw|modregr/m|

Регистр АХ (AL) плюс непосредственное значение:

|0001010w|-- data--|data, если w=1|

Регистр или память плюс непосредственное значение:

y100000sw|mod010r/m|--data--|data, если sw=01|

ADD: Сложение двоичных чисел

------------------------------

О п е р а ц и я: Прибавляет один байт или одно слово в памяти,

регистре или непосредственно к содержимому регистра или прибавляет один

байт или слово в регистре или непосредственно к памяти.

Ф л а г и: Команда воздействует на флаги AF, CF, OF, PF, SF и ZF.

О б ъ е к т н ы й к о д (три формата):

Регистр плюс регистр или память:

|000000dw|modregr/rm|

Регистр AX (AL) плюс непосредственное значение:

|0000010w|--data--|data, если w=1|

Регистр или память плюс непосредственное значение:

|100000sw|mod000r/m|--data--|data, если BW=01|

AND: Логическое И

-------------------

О п е р а ц и я: Команда выполняет поразрядную конъюнкцию (И) битов

двух операндов. Операнды представляют собой одно- или двухбайтовые

величины в регистре или памяти. Второй операнд может содержать

непосредственные данные. Команда AND проверяет два операнда поразрядно.

Если два проверяемых бита равны 1, то в первом операнде устанавливается

единичное значение бита, в других случаях - нулевое. См. также команды OR,