DEC уменьшениt содержимого приемника на единицу
Команда DEC (decrement - уменьшить) вычитает 1 из содержимого регистра или ячейки памяти, но при этом (в отличие от команды SUB) не воздействует на флаг переноса CF. Команда DEC часто используется в циклах для уменьшения значения счетчика до тех пор, пока оно не станет нулевым или отрицательным. Ее можно использовать также для уменьшения значения индексного регистра или указателя при доступе к последовательно расположенным ячейкам памяти. Например:
DEC CX ;Уменьшить значение 16-битового
DEC AL ; или 8-битового регистра
DEC MEM_BYTE ;Уменьшить значение байтовой ячейки памяти
DEC MEM_WORD[BX] ;или слова памяти.
CMP сравнениt значений источника и приемника
Большая часть программ выполняет команды вовсе не в том порядке, в котором они хранятся в памяти. Обычно в программах есть переходы, циклы вызовы процедур и другие команды, заставляющие микропроцессор передавать управление от одной последовательности команд к другой. Эта передача управления происходит при выполнении или невыполнении определенных условий, например равенстве или неравенстве операнда какому либо значению. Выполнение условий фиксируется микропроцессором в регистре флагов. А команда СМР (compare - сравнить), обычно используется для изменения состояния флагов, на основании которых команды передачи управления "принимают решение" передавать или не передавать управление.
Подобно команде SUB команда СМР вычитает операнд-источник из операнда-приемника и в зависимости от результата устанавливает или обнуляет флаги Но в отличие от команды SUB команда СМР не сохраняет результат вычитания. Формат команды:
CMP приемник,источник
Другими словами, команда СМР не изменяет операнды. Она целиком предназначена для установки значений флагов, на основании которых команды условного перехода будут "принимать решение" о передаче управления.
MUL, IMUL умножение опреандов
Команда MUL (multiply - умножить) умножает числа без знака, a IMUL (integer multiply - умножить целые числа) - числа со знаком. Обе команды могут умножать как байты, так и слова.
Эти команды имеют следующий формат:
MUL источник
IMUL источник
где источник - регистр общего назначения или ячейка памяти размером в байт или слово. В качестве второго операнда команды MUL и IMUL используют содержимое регистра AL (при операциях над байтами) или регистра АХ (при операциях над словами). Произведение имеет двойной размер и возвращается следующим образом:
Умножение байтов- возвращает 16-битовое произведение в регистры АН (старший байт) и AL (младший байт).
Умножение слов- возвращает 32-битовое произведение в регистры DX (старшее слово) и АХ (младшее слово).
То есть размер n – битных сомножителей равен 2n.
После исполнения команды MUL флаги CF и OF равны 0, если старшая половина произведения равна 0; в противном случае оба этих флага равны 1. После исполнения команды IMUL флаги CF и OF равны 0, если старшая половина произведения представляет собой лишь расширение знака младшей половины. В противном случае они равны 1.
Несколько примеров умножения:
MUL BX ;Умножить ВХ на АХ без знака
MUL MEM_BYTE ;Умножить содержимое ячейки памяти на AL без знака
IMUL DL ;Умножить DL на AL со знаком
IMUL MEM_WORD ;Умножить содержимое ячейки памяти на АХ со знаком
Команды MUL и IMUL не дозволяют в качестве операнда использовать непосредственное значение. Такое значение- перед умножением надо загрузить в регистр или в ячейку памяти. Например, в результате исполнения команд
MOV DX,1O
MUL DX
содержимое регистра АХ будет умножено на 10.
Дата добавления: 2016-01-26; просмотров: 1701;