Скачиваний:
37
Добавлен:
01.05.2014
Размер:
192 Кб
Скачать

2) Умножить без знака.

MUL SRC .

Аналогична команде IMUL, но операнды и произведения беззнаковые.

3) Разделить со знаком.

IDIV SRC

делитель-байт: (AL)  частное (AX)/(SRC) ,

(AH) остаток (AX)/(SRC) .

Делитель-слово: (AX)  частное (DX:AX)/(SRC),

(DX)  остаток (DX:AX)/(SRC) .

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

4) Разделить без знака

DIV SRC .

Аналогична команде IDIV, но операнды, частное и остаток, беззнаковые

Флажки. Команды IMUL, MUL устанавливают OF и CF в состояние 1, если для результата требуется два байта (слово). Иначе эти флажки нулевые. Остальные флажки не определены.

Режимы адресации. Операнды источники не могут быть непосредственными значениями, а все другие режимы адресации допустимы. Получателем должен быть регистр AX или DX:AX.

  1. Логические команды

Команды микропроцессора, реализующие логические операции. Все команды обрабатывают операнды (байты или слова) поразрядно. Логические команды наиболее часто используются для селективных установок, инвертирования, сброса или проверки бит в операнде получателе в соответствии с двоичным набором операнда-источника. Такие действия часто встречаются в операциях над битами регистров и данных ввода-вывода. При этом операнд источник называют маской, а сама операция называется маскированием. Их описание представлено в таблице 4.

Таблица 4 - Формат логических команд

Название команды

Мнемоника и формат команды

Описание действия

Инвертировать

NOT OPR

(OPR)not OPR

Объединить по "или"

OR DST,SRC

(DST)(DST) or (SRC)

Объединить по "и"

AND DST,SRC

(DST)(DST) and (SRC)

Сложить по MOD2

XOR DST,SRC

DST)(DST) xor (SRC)

Проверить

TEST OPR1,OPR2

OPR1 and OPR2

Флажки. Команда NOT не воздействует на флажки. Остальные команды сбрасывают OF и CF, оставляют АF не определенным и устанавливают СF, ZF, PF по обычным правилам.

Режимы адресации. В команде NOT не допускается непосредственный операнд. В остальных командах один из операндов должен быть регистром. Другой операнд может иметь любой режим адресации.

  1. Команды сдвигов и циклических сдвигов

Эти команды перемещают все биты операнда влево на указанное CNT число. В командах сдвига влево с правой стороны операнда "вдвигаются" нули, а старшие биты "выдвигаются" с левой стороны и теряются, но последний из них сохраняется во флаге CF. Команды сдвига вправо аналогичным образом сдвигают биты вправо. Но арифметический сдвиг вправо не помещает слева нули, а дублирует в старшие биты знак операнда. Команды циклического сдвига отличаются от команд сдвига тем, что операнд считается "кольцом", в котором выдвигаемые с одной стороны вдвигаются с другой стороны. Их описание представлено в таблице 5.

Таблица 5 - Формат команд сдвигов и циклических сдвигов

Название команды

Мнемоника и формат команды

Описание действия

Сдвинуть логически влево

SHL OPR,CNT

  0

CF OPR

Сдвинуть арифметически влево

SAL OPR,CNT

Аналогична SHL

Сдвинуть логически вправо

SHR OPR,CNT

0 

OPR CF

Сдвинуть арифметически вправо

SAR OPR,CNT

 

OPR CF

Сдвинуть циклически влево

ROL OPR,CNT

 

CF OPR

Сдвинуть циклически вправо

ROR OPR,CNT

OPR CF

Сдвинуть циклически влево через перенос

RCL OPR,CNT

CF OPR

Сдвинуть циклически вправо через перенос

RCR OPR,CNT

OPR CF

Число сдвигов определяется CNT. Он может быть 1, выражением - константой равной 1 или регистр CL. В CL любое число.

Флажки. Перенос CF устанавливается в соответствии с режимом адресации. Флажки SF, ZF, PF модифицируются командами сдвига, но команды циклических сдвигов на них не воздействуют. Флажок OF имеет смысл, если только счетчик равен 1. Команды сдвигов влияют на состояние флажка АF, но оно определенного смысла не имеет.

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

3.7.7 Команды безусловных переходов

Эти команды нарушают естественный порядок выполнения команд посредством загрузки в командный счетчик адреса команд, к которой осуществляют переход. Межсегментные передачи управления реализуются только командами безусловных переходов.

Название мнемоника и формат описание

Внутрисегментный прямой JMP SHORT OPR (IP)(IP)+ 8-битное

короткий переход смещение, определяемое OPR

Внутрисегментный прямой JMP NEAR OPR (IP) (IP)+ 16-битное

близкий переход смещение, определяемое OPR

Внутрисегментный прямой JMP OPR * (IP)(EA), где EA

косвенный переход определяется OPR

Межсегментный прямой JMP FAR PTR OPR (IP)  смещение OPR в

далекий переход сегменте (CS )  сегментный

адрес сегмента, содержащего OPR

Межсегментный JMP OPR * (IP)(EA), где EA определяется косвенный переход OPR, (CS)(EA+2), где EA

определяется OPR

Тип перехода определяется типом операнда.

Не модифицируются все флажки условий.

Режимы адресации. Во внутрисегментных прямых переходах применяется относительный режим, в межсегментных прямых переходах - прямой режим. В косвенных переходах не допускается непосредственный режим, а в межсегментных косвенных переходах должна адресоваться память.

  1. Команды условных переходов

В этих командах, также как и в командах безусловного перехода, нарушается естественный порядок выполнения команд. Но в условном переходе замена содержимого программного счетчика зависит от состояния флагов.

Название Мнемоника и формат Проверочное условие

Перейти, если нуль или равно JZ OPR или (JE) ZF = 1

Перейти, если не нуль или не равно JNZ OPR или (JNE) ZF = 0

Перейти, если знак установлен JS OPR SF = 1

Перейти, если знак сброшен JNS SF = 0

Перейти, если есть переполнение JO OPR OF = 1

Перейти, если нет переполнения JNO OPR OF = 0

Перейти, если паритет установлен JP OPR или (JPE) PF = 1

Перейти, если паритет сброшен JNP OPR или (JPO) PF = 0

Перейти, если ниже/не выше или JB OPR или (JC) CF = 1

равно (без знака)

Перейти, если не ниже/выше или JNB OPR или (JNC) CF = 0

равно (без знака)

Перейти, если ниже или равно/ JBE OPR или (JNA) CZ ZF=1

не выше (без знака)

Перейти, если не ниже или равно JNBE OPR или (JA) CF ZF=0

выше (без знака)

Перейти, если меньше/не больше JL OPR или (JNGE) SF OF=1

или равно (со знаком)

Перейти, если не меньше/больше JNL OPR или (JGE) SF OF=0

или равно (со знаком)

Перейти, если меньше или JLE OPR или (JNG) (SF OF) ZF=1

равно/не больше (со знаком)

Перейти, если не меньше или JNLE OPR или (JG) (SF OF) ZF=1

равно/ больше (со знаком)

Если проверочное условие удовлетворяется,

(Программный счетчик) ( Программный счетчик)+ 8-битное смещение с расширением знака. В противном случае программный счетчик не изменяется и программа продолжается в естественном порядке.

Не модифицируются все флажки условий.

Режимы адресации. Режим относительно программного счетчика. Операнд OPR должен быть в пределах -128...127 байт от команды, находящейся за командой перехода.

3.7.9 Команды циклов

НАЗВАНИЕ МНЕМОНИКА И ФОРМАТ ПРОВЕРЯЕМОЕ УСЛОВИЕ

Зациклить LOOP OPR (CX)  0

Зациклить, пока нуль или равно LOOPZ OPR ZF=1 и (CX)  0

Зациклить, пока не нуль или не равно LOOPNZ OPR ZF=0 и (CX)  0 Перейти по CX JCXZ OPR (CX) = 0

За исключением команды JCXZ, которая не изменяет (CX), производится (CX)(CX)-1, затем, если проверяемое условие удовлетворяется, (IP)(IP)+D8 с расширением знака; в противном случае (IP) не изменяется и программа продолжается в естественном порядке.

Не модифицируются все флажки условий.

Режимы адресации. Режим относительно IP. Операнд OPR должен быть меткой, которая находится в диапазоне -128...127 байт от команды, следующей за командой цикла.

  1. Стековые команды

НАЗВАНИЕ МНЕМОНИКА И ФОРМАТ ОПИСАНИЕ

Включить в стек PUSH SRC (SP)(SP)-2 ((SP)+1:(SP) (SRC)

Извлечь из стека POP DST (DST)((SP)+1:(SP) (SP)(SP)+2