Команда сравнения
СМР Сравнение
Команда СМР выполняет вычитание второго операнда из первого. В соответствии с результатом вычитания устанавливаются состояния флагов CF, PF, AF, ZF, SF и OF. Сами операнды не изменяются. Таким образом, если команду сравнения записать в общем виде
cmp операнд_1, операнд_2
то ее действие можно условно изобразить следующим образом:
операнд_1 - операнд_2 -> флаги процессора
В качестве первого операнда можно указывать регистр (кроме сегментного) или ячейку памяти, в качестве второго - регистр (кроме сегментного), ячейку памяти или непосредственное значение, однако не допускается определять оба операнда одновременно как ячейки памяти. Операнды могут быть байтами или словами и представлять числа со знаком или без знака. Обычно вслед за командой СМР стоит одна из команд условных переходов, анализирующих состояние флагов процессора.
Пример
cmp AX,562Dh
Je equal ; Переход на метку equal, если AX=562Dh
Ja above ; Переход, на метку above, если
; содержимое АХ, рассматриваемое как
; число без знака, превышает
; беззнаковое число 562Dh
NEG Изменение знака, дополнение до 2
Команда NEG выполняет вычитание знакового целочисленного операнда из нуля, превращая положительное число в отрицательное и наоборот. В качестве операнда можно, указывать регистр (кроме сегментного) или ячейку памяти размером как в байт, так и в слово. Не допускается использовать в качестве операнда непосредственное значение.
Примеры
mov АХ, 0001
neg AX ; AX=FFFfh=-l
mov BX, -2 ; BX=FFFgh=-2
neg BX ; BX=0002h
Команды умножения
MUL Умножение целых беззнаковых чисел
Команда MUL выполняет умножение целого беззнакового числа, находящегося в регистре AL (в случае умножения на байт) или АХ (в случае умножения на слово), на операнд-источник (целое число без знака). Размер произведения в два раза больше размера сомножителей.
Для однобайтовых операций один из сомножителей помещается в регистр
AL, после выполнения операции произведение записывается в регистр АХ.
Для двухбайтовых операции один из сомножителей помещается в регистр АХ;
после выполнения операции произведение .записывается в регистры DX:AX (в DX - старшая часть, в АХ – младшая). В качестве операнда-сомножителя можно указывать регистр данных или ячейку памяти; не допускается умножение на непосредственное значение.
Пример1
mov AL.5 ;Первый сомножитель
mov BL, 3 ;Второй сомножитель
mul BL ;AX=OOOFh (произведение)
Пример 2
mov AX,256 ;Первый сомножитель
mov BX,256 ;Второй сомножитель
mul BX ;DX=0001h, AX=OOOOh
;(число 65536)
Пример 3
mov AL, 251 ;AL=FBh
mov BL,3 ;BL=03h
mu1 BL ;AX=02Flh