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

Xor и test.

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

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

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

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

|001000dw|modregr/m|

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

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

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

|1010000w|modl00r/m|--data--|data, если w=1|

CALL: Вызов процедуры

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

О п е р а ц и я: Выполняет короткий или длинный вызов процедуры для

связи подпрограмм. Для возврата из процедуры используется команда RET.

Команда CALL уменьшает содержимое SP на 2 и заносит в стек адрес следующей

команды (из IP), а затем устанавливает в регистре IP относительный адрес

процедуры. Впоследствии команда RET использует значение в стеке для

возврата. Существует четыре типа команды CALL для вызова внутри сегмента и

между сегментами. Команда межсегментного вызова сначала уменьшает SP,

заносит в стек адрес из регистра CS, а затем загружает в стек

внутрисегментный указатель.

Ф л а г и: Не меняются.

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

Прямая адресация в сегменте:

|11101000|disp-low|diep-high|

Косвенная адресация в сегменте:

|11111111|mod010r/m|

Косвенная адресация между сегментами:

|11111111|mod011r/m|

Прямая адресация между сегментами:

|10011010|offset-low|offset-high|seg-low|seg-high|

CBW: Преобразование байта в слово

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

О п е р а ц и я: Расширяет однобайтовое арифметическое значение в

регистре AL до размеров слова. Команда CBW размножает знаковый бит (7) в

регистре AL по всем Битам регистра АН. См также команду CWD.

Ф л а г и: Не меняются.

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

CLC: Сброс флага переноса

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

О п е р а ц и я: Устанавливает значение флага переноса, равное 0, так

что, например, команда ADC не прибавляет единичный бит. Команда CLC не

имеет операндов. См. также команду STD.

Ф л а г и: Команда воздействует на флаг CF (устанавливается в 0).

О б ъ е к т н ы й к о д: 11111000.

CLD: Сброс флага направления

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

О п е р а ц и я: Устанавливает значение флага направления, равное 0.

В результате такие строковые операции, как CMPS или MOVS обрабатывают

данные слева направо. См. также команду STD.

Ф л а г и: Команда воздействует на флаг DF (устанавливается в 0).

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

CLI: Сброс флага прерывания

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

О п е р а ц и я: Запрещает маскируемые внешние прерывания по

процессорной шине INTR посредством установки значения флага прерывания IF

в 0. См. также команду STI.

Ф л а г и: Команда воздействует на флаг IF (устанавливается в 0).

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

CMC: Переключение флага переноса

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

О п е р а ц и я: Инвертирует флаг CF, т.е. преобразует нулевое

значение флага CF в единичное и наоборот.

Ф л а г и: Команда воздействует на флаг CF (инвертируется).

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

CMP: Сравнение

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

О п е р а ц и я: Сравнивает содержимое двух полей данных. Фактически

команда CMP вычитает второй операнд из первого, но содержимое полей не

изменяет. Операнды должны иметь одинаковую длину: байт или слово. Команда

CMP может сравнивать содержимое регистра, памяти или непосредственное

значение с содержимым регистра; или содержимое регистра или

непосредственное значение с содержимым памяти. См. также команду CMPS.

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

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

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

|001110dw|modregr/m|

Непосредственное значение с регистром AX (AL):

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

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

|100000sw|mod111r/m|--data--|data, если sw=0|

CMPS/CMPSB/CMPSW: Сравнение строк

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

О п е р а ц и я: Сравнивают строки любой длины. Этим командам обычно

предшествует префикс REPn, например REPE CMPSB. Команда CMPSB сравнивает

память по байтам, а команда CMPSW - по словам. Первый операнд этих команд

адресуется регистровой парой DS:SI, а второй - регистровой парой ES:DI.

Если флаг DF установлен в 0, то сравнение происходит слева направо,

регистры SI и DI при этом увеличиваются после каждого сравнения. Если флаг

DF установлен в 1, то сравнение происходит справа налево, а регистры SI и

DI при этом уменьшаются после каждого сравнения.

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

О б ъ е к т н ы й к о д: 1010011w.

CWD: Преобразование слова в двойное слово

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

О п е р а ц и я: Расширяет арифметическое значение в регистре АХ до

размеров двойного слова в регистровой паре DX:AX, дублируя при этом

знаковый бит (15-й бит в регистре АХ) через регистр DX. Обычно

используется для получения 32-битового делимого. См. также команду CBW.

Ф л а г и: Не меняются.

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

DAA: Десятичная коррекция для сложения

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

О п е р а ц и я: Корректирует результат сложения двух BCD (десятичных

упакованных) элементов в регистре AL. Если четыре правых бита имеют

значение больше 9 или флаг AF установлен в 1, то команда DAA прибавляет 6

к регистру AL и устанавливает флаг AF. Если регистр AL содержит значение

больше, чем 9F, или флаг CF установлен в 1, то команда DAA прибавляет 60Н

к регистру AL и устанавливает флаг CF. См. также команду DAS.

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

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

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

DAS: Десятичная коррекция для вычитания

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

О п е р а ц и я: Корректирует результат вычитания двух BCD

(десятичных упакованных) чисел в регистре AL. Если четыре правых бита

имеют значение больше 9 или флаг AF установлен в 1, то команда DAS

вычитает 60Н из регистра AL и устанавливает флаг CF. См. также команду

DAA.

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

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

DEC: Декремент

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

О п е р а ц и я: Вычитает 1 из байта или слова в регистре или в

памяти например DEC СХ. См. также команду INC.

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

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

Регистр: |01001reg|

Регистр или память: |1111111w|mod001r/m|

DIV: Деление

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

О п е р а ц и я: Выполняет деление беззнакового делимого (16 или 32

бит) на беззнаковый делитель (8 или 16 бит). Левый единичный бит

рассматривается как бит данных, а не как минус для отрицательных чисел.

Для 16-битового деления делимое должно находиться в регистре АХ, а

8-битовый делитель возможен в регистре или в памяти, например DIV BH.

Частное от деления получается в регистре AL, а остаток - в регистре AН.

Для 32-битового деления делимое должно находиться в регистровой паре DX:AX

а 16-битовый делитель возможен в регистре или в памяти, например DIV СХ.

Частное от деления получается в регистре AХ, а остаток - в регистре DX.

См. также команду IDIV.

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

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

О б ъ е к т н ы й к о д: |1111011w|mod110r/m|

ESC: Переключение на сопроцессор

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

О п е р а ц и я: Обеспечивает использование сопроцессора для

выполнения специальных операций. Для выполнения арифметических операций

над числами с плавающей запятой используются сопроцессоры 8087 или 80287.

Команда ESC передает в сопроцессор инструкцию и операнд для выполнения

необходимой операции.

Ф л а г и: Не меняются.

О б ъ е к т н ы й к о д: |11011xxx|modxxxr/m| (x - любое знач.).

HLT: Останов микропроцессора

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

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

происходит ожидание прерывания. При завершении команды HLT регистры CS:IP

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

записывает в стек регистры CS и IP и выполняет подпрограмму обработки

прерывания. При возврате из подпрограммы команда IRET восстанавливает

регистры CS и IP из стека и управление передается на команду, следующую за

командой HLT.

Ф л а г и: Не меняются.

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