Здавалка
Главная | Обратная связь

ADD - сложить, SUB - вычесть.



Описание команд: Работают с 8 и 16 битовыми операндами, инструкция ADD выполняет сложение операнда источника (правого операнда) с содержимым операнда приемника (левый операнд), результат помещается в операнд приемник. Инструкция SUB делает тоже самое, только она вычитает операнд источник из операнда приемника, результат помещается в операнд приемник. Операндами могут быть регистры, константы, ячейки памяти в различных комбинациях, но нельзя добавить (вычесть) значение одной ячейки памяти к другой, а так же в качестве операнда источника использовать константу (непосредственное значение. Команда воздействует на шесть флагов: AF,CF,OF,PF,SF,ZF.

Например, флаг переноса CF=1 если результат действия не помещается в операнде приемнике, в противном случае CF=0.

MUL умножить.

Описание команд: инструкция MUL перемножает 8 и 16 битовые безнаковые множители, создавая 16 или 32 битовое произведение. При 8 битовом произведении один из операндов в регистре AL другой может быть 8 битовым регистром общего назначения или переменной памяти соответствующего назначения. Результат помещается в регистр АХ (16 битовый). При 16 битовых множителях один из сомножителей в 16 битовом регистре общего назначения другой в переменной памяти, 32 битовый результат в регистрах DX:AX. При этом младшие 16 бит в AX старшие в DX.

Команда воздействует на два флага: CF, OF.

DIV - разделить.

Описание команд: позволяет разделить 32 битовое значение на 16 битовое значение или 16 битовое на 8 битовое. При делении 16 битового значения делимое помещается в AX, 8 битовый делитель помещается в регистр или в переменную соответствующего размера, Результат (8 битовый) помещается в AL, остаток в AH.

Состояние флагов не определено, но если частное не помещается в регистре AL (AX) процессор генерирует прерывание типа 0 (деление на 0). В заданиях используются директивы и команды, изученные на предыдущих лабораторных работах.

 

БИТОВЫЕ КОМАНДЫ

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

Логические операции(или булевы команды) - как, следует из названия, выполняют логические операции - отрицание, конъюнкцию, дизъюнкцию и им присуще ряд черт.

Инвертировать not opr
"И" (конъюнкция) and dst,src
Логическое сравнение test opr1,opr2
"ИЛИ" (дизъюнкция) or dst,src
"Исключающее ИЛИ" xor dst,src

Командаnotна флаги не действует и работает по следующему принципу. Например:

mov al, 1100b ;al=00001100b

not al ;al=11110011b

Все остальные команды сбрасывают CF и OF, а флаги SF, ZF, PF изменяют по обычным правилам.

 

Команда and производит поразрядное логическое умножение операндов и записывает результат на место первого операнда. Например:

mov al, 1100b ;al=00001100b

and al, 1010b ;al=00001000b

 

Команда проверка test, аналог предыдущей команды, но результат логического умножения никуда не записывается, основное назначение - установка флагов, особенно флаг нуля ZF.

mov bh, 1100b

test bh, 0011b ;al=00000000b ® ZF=1

test bh, 1010b ;al=00001100b ® ZF=0

 

Команда or производит поразрядное логическое сложение операндов и записывает результат на место первого операнда. Например:

mov al, 1100b ;al=00001100b

or al, 1010b ;al=00001110b

 

Команда xor производит поразрядное логическое сложение операндов и записывает результат на место первого операнда. Данная операция соответствует фразе " или то, или другое, но не то и не другое одновременно", т.е. если биты совпадают, записывается 0, иначе 1.

mov cl, 1100b

xor cl, 1010b ;al=00000110b

xor cl, cl ;cl=00000000b

Команды сдвига - эти команды перемещают содержимое ячейки влево или вправо. Одним из операндов этих команд является количество сдвигов cnt. Оно либо равно 1, либо определяется содержимым регистра CL (при этом CL сохраняет своё содержимое после операции).

Логические сдвиги - команды сдвига, где участвуют все биты первого операнда, при этом бит, уходящий за пределы ячейки, заносится в флаг CF, а с другого конца в операнд добавляется ноль.







©2015 arhivinfo.ru Все права принадлежат авторам размещенных материалов.