Слайд 2
Вычитание:
обычное - SUB,
вычитание с заемом - SBB,
декрементация (-1)
– DEC.
Команда Выполнение команды процессором:
sub bx, 4 ; bx ← bx –4
sbb ds:[8], cl ; ds:[8]←ds:[8]– cl - CF
dec ax ; ax ← ax - 1
Слайд 3
Сравнение: CMP
Команда Выполнение команды процессором:
cmp ax, 7 ; ах
- 7
При выполнении команды сравнения CMP процессор вычисляет разность между первым и вторым операндом, которая никуда не записывается.
Результат команды являются установленные арифметические флаги, по которым можно судить о соотношении этих величин.
Слайд 4
Изменение знака числа: NEG
Команда Выполнение команды процессором:
neg edx ;
edx ← 0 - edx
Изменение знака числового операнда получается вычитанием его из нуля.
Слайд 5
Умножение:
беззнаковых – MUL, знаковых – IMUL
Команды имеют один явный
операнд. Второй - по умолчанию.
Произведение размещается процессором в определенных регистрах (см.описание команды в системе команд)
Важно!
- форматы операндов должны быть одинаковые
- формат произведения получится в два раза длиннее
Слайд 6Пример. Получить произведение 258 на 7
Выбор формата операндов – слова.
Один из
операндов по умолчанию надо разместить в АХ
mov сx, 258 ; 1-й операнд в сх
mov ax, 7 ; 2-й операнд в ах
mul сx ; dx-ax ← ах * сx
Полученное 4-байтное произведение процессор «разложит» по регистрам dx - старшее слово и ax -младшее слово
Ручная отладка: 258*7=180610 = 70е16
Ожидаем 4-х байтное произведение 00 00 07 0e (в hex):
в DX=00 00, в AX - 070e
Слайд 7
Деление (целочисленное):
беззнаковых – DIV, знаковых – IDIV
Команды имеют один
явно задаваемый операнд - делитель. Делимое берется процессором по умолчанию из определенных регистров (см. систему команд).
Важно !:
- Формат делимого должен быть в 2 раза длиннее формата делителя;