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

Ino: Переход, если нет переполнения

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

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

определенному адресу после проверки на отсутствие переполнения. Если флаг

OF равен, нулю (нет переполнения), то команда прибавляет к регистру IP

значение операнда (относительное смещение) и выполняет таким образом

переход. См. также команду JO.

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

О б ъ е к т н ы й к о д: |01110001|--disp--|

JNP/JPO: Переход, если нет паритета или паритет нечетный

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

О п е р а ц и я: Приводит к передаче управления по определенному

адресу, если в результате операции обнаружено отсутствие паритета или

паритет нечетный. Нечетный паритет в данном случае означает, что в

результате операции в . младших восьми битах получено нечетное число

битов. Если флаг PF равен нулю (нечетный паритет), то команда прибавляет к

регистру IP значение операнда (относительное смещение) и выполняет таким

образом переход. См. также команду JP/JPE.

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

О б ъ е к т н ы й к о д: |01111011|--disp--|

JHS: Переход, если нет знака

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

О п е р а ц и я: Приводит к передаче управления по определенному

адресу, если в результате операции получен положительный знак. Если флаг

SF равен нулю (положительное), то команда JNS прибавляет к регистру IP

значение операнда (относительное смещение) и выполняет таким образом

переход. См. также команду JS.

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

О б ъ е к т н ы й к о д: |01111001|--disp--|

JO: Переход по переполнению

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

О п е р а ц и я: Приводит к передаче управления по определенному

адресу, если в результате операции получено состояние переполнения. Если

флаг OF равен единице (переполнение), то команда JO прибавляет к регистру

Ip значение операнда (относительное смещение) и выполняет таким образом

переход. См. также команду JNO.

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

О б ъ е к т н ы й к о д: |01110000|--disp--|

JP/JPE: Переход, если есть паритет или паритет четный

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

О п е р а ц и я: Приводит к передаче управления по определенному

адресу, если в результате операции обнаружен четный паритет. Четный

паритет в данном случае означает, что в результате операции в младших

восьми битах получено четное число битов. Если флаг PF равен единице

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

(относительное смещение) и выполняет таким образом переход. См. также

команду JNP/JPO.

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

О б ъ е к т н ы й к о д: |01111010|--disp--|

JS: Переход по знаку

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

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

результате операции получен отрицательный знак. Если флаг SF равен единице

(отрицательно), то команда JS прибавляет к регистру IP значение операнда

(относительное смещение) и выполняет таким образом переход. См. также

команду JNS.

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

О б ъ е к т н ы й к о д: |01111000|--disp--|

LAHF: Загрузка флагов в регистр АН

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

О п е р а ц и я: Загружает значение флагового регистра в регистр АН.

Данная команда обеспечивает совместимость с процессором 8080. См. также

команду SAHF. Команда LAHF заносит правый байт флагового регистра в

регистр АН в следующем виде:

SZ * A * P * C (* обозначает неиспользуемые биты)

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

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

LDS: Загрузка регистра сегмента данных

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

О п е р а ц и я: Инициализирует начальный адрес сегмента данных и

адрес смещения к переменной для обеспечения доступа к данной переменной.

Команда LDS загружает в необходимые регистры четыре байта из области

памяти, содержащей относительный адрес и сегментный адрес. Сегментный

адрес помещается в регистр DS, а относительный адрес - в любой из общих

или индексных регистров или в регистровый указатель. Следующая команда

загружает относительный адрес в регистр DI:

LDS DI,адрес_памяти

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

О б ъ е к т н ы й к о д: |11000101|modregr/m|

LES: Загрузка регистра дополнительного сегмента

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

О п е р а ц и я: Инициализирует начальный адрес дополнительного

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

переменной. См. также команду LDS.

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

О б ъ е к т н ы й к о д: |11000100|modregr/m|

LOCK: Блокировка шины доступа к данным

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

О п е р а ц и я: Запрещает другим (сопроцессорам одновременно

изменять элементы данных. Команда LOCK представляет собой однобайтовый

префикс, который можно кодировать непосредственно перед любой командой.

Данная операция посылает сигнал в другой процессор, запрещая использование

данных, пока не будет завершена следующая команда.

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

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

LODS/LODSB/LODSW: Загрузка однобайтовой или двухбайтовой строки

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

О п е р а ц и я: Загружает из памяти один байт в регистр AL или одно

слово в регистр AХ. Несмотря на то, что команда LODS выполняет строковую

операцию, нет смысла использовать ее с префиксом REP. Регистровая пара

DS:SI адресует в памяти байт (для LODSB) или слово (для LODSW), которые

загружаются в регистр AL или AХ соответственно. Если флаг DF равен нулю,

то операция прибавляет 1 (для байта) или 2 (для слова) к регистру SI. Если

флаг DF равен единице, то операция вычитает 1 (для байта) или 2 (для

слова) из регистра SI.

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

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

LOOP: Цикл

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

О п е р а ц и я: Управляет выполнением группы команд определенное

число раз. До начала цикла в регистр CX должно быть -загружено число

выполняемых циклов. Команда LOOP находится в конце цикла, где она

уменьшает значение в регистре СХ. на единицу. Если значение в регистре CX

не равно нулю, то команда передает управление по адресу, указанному в

операнде (прибавляет к регистру IP значение операнда); в противном случае

управление передается на следующую после LOOP команду (происходит выход из

цикла).

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

О б ъ е к т н ы й к о д: у11100010у--disp--у

LOOPE/LOOPZ: Цикл, если равно или нуль

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

О п е р а ц и я: Управляет выполнением группы команд определенное

число раз или пока установлен флаг ZF (в единичное состояние). Команды

LOOPE/LOOPZ аналогичны команде LOOP, за исключением того, что по этим

командам цикл прекращается либо по нулевому значению в регистре CX, либо

по нулевому значению флага ZF (ненулевое состояние). См. также команды

LOOPNE/LOOPNZ.

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

О б ъ е к т н ы й к о д: |11100001|--disp--|

LOOPNE/LOOPNZ: Цикл, если не равно или не нуль

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

О п е р а ц и я: Управляет выполнением группы команд определенное

число раз или пока сброшен флаг ZF (в нулевое состояние)., Команды

LOOPNE/LOOPNZ аналогичны команде LOOP за исключением того, что по этим

командам цикл прекращается либо по нулевому значению в регистре CX, либо

по единичному значению флага ZF (нулевое состояние). См. также команды

LOOPE/LOOPZ.

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

О б ъ е к т н ы й к о д: |11100000|--disp--|

MOV: Пересылка данных

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

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

или между регистром и памятью, а также передает непосредственное значение

в регистр или в память. Команда MOV не может передавать данные между двумя

адресами памяти (для этой цели служит команда MOVS). Существует семь типов

команды MOV.

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

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

Регистр/память в/из регистр:

|100010dw|modregr/m|

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

|1100011w|mod000r/m|--data--|data если w=1|

Непосредственное значение в регистр:

|1011wreg|--data--|data если w=1|

Память в регистр AX (AL):

|1010000w|addr-low|addr-high|

Регистр AX (AL) в память:

|1010001w|addr-low|addr-high|

Регистр/память в сегментный регистр:

|10001110|mod0sgr/m| (sg - сегментный регистр)

Сегментный регистр в регистр/память:

|10001100|mod0sgr/m| (sg - сегментный регистр)

MOVS/MOVSB/MOVSW: Пересылка строки байт или строки слов

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

О п е р а ц и я: Пересылает данные между областями памяти. Команды

MOVS(B/W) обычно используются с префиксом REP. Команда MOVSB пересылает

любое число байтов, а команда MOVSW - любое число слов. Перед выполнением

команды регистровая пара DS:SI должна адресовать источник пересылки

("откуда") а регистровая пара ES:DI - получатель пересылки ("куда"). Если

флаг DF равен нулю, то операция пересылает данные слева направо и

увеличивает регистры SI и DI. Если флаг DF равен единице то операция

пересылает данные справа налево и уменьшает регистры SI и DI.

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

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

MUL: Беззнаковое умножение

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

О п е р а ц и я: Умножает беззнаковое множимое (8 или 16 бит) на

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

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

8-битового умножения множимое должно находиться в регистре AL, а множитель

возможен в регистре или в памяти, например MUL CL. Произведение получается

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

регистре АХ, а множитель возможен в регистре или в памяти, например MUL

ВХ. Произведение получается в регистровой паре DX:AX. См. также команду

IMUL.

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

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

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

NEG: Изменение знака числа

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

О п е р а ц и я: Меняет двоичное значение из положительного в

отрицательное и из отрицательного в положительное. Команда NEG вычисляет

двоичное дополнение от указанного операнда: вычитает операнд из нуля и

прибавляет единицу. Операндом может быть байт или слово в регистре или в

памяти. См. также команду NOT. Флаги: Команда воздействует на флаги AF,

CF, OF, PF, SF и ZF.

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

NOP: Нет операции

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

О п е р а ц и я: Применяется для удаления или вставки машинных кодов

или для задержки выполнения программы. Команда NOP выполняет операцию XCHG

АХ,АХ, которая ничего не меняет.

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

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

NOT: Логическое НЕТ

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

О п е р а ц и я: Меняет нулевые биты на единичные и наоборот.

Операндом может быть байт или слово в регистре или в памяти. См. также

команду NEG.

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

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

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

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

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

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

памяти, второй операнд может иметь непосредственное значение. Команда OR

обрабатывает операнды побитово. Если любой из проверяемых бит равен

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

бит в операнде 1 не изменяется. См. также команды AND и XOR.

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

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

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

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

|000010dw|modregr/m|

Непосредственное с аккумулятором:

|0000110w|--data--|data если w=1|

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

|1000000w|mod001r/m|--data--|data если w=1|

OUT: Вывод байта или слова в порт

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

О п е р а ц и я: Передает в выводной порт байт из регистра AL или

слово из регистра AХ. Порт кодируется как фиксированный числовой операнд

(OUT порт#,АХ) или как переменная в регистре DX (OUT DX.AX). Процессоры