Способ устранения переполнения
При работе с байтовыми данными состояния переполнения можно избежать, применив команду CBW(ConvertBytetoWord– преобразователь байта в слово). Для командыCBWоперандом является младший байтовый регистрAL, при этом значение левого бита заполняет старший байтовый регистрAH.
CBW;AL=60h, расширениеALдоAX,AX=0060h
ADDAX, 20H; прибавить к АХ,AX=0080&CF=0
2.3.2 Команды умножения и деления
Команды знакового (IMUL) и беззнакового (MUL) умножения используются в 2-х основных форматах:
умножение байта на байт: множимое – AL, множитель –REG(8)/MEM(8), произведение –AX.
умножение слова на слово: множимое – AX, множитель –REG(16)/MEM(16), произведение –DX:AX.
Быстрое умножение: при умножении на степень числа 2 (21, 22, 23, 24)более быстрым является сдвиг влево. Количество сдвигов – в СХ.
SHLAL,1 ;умножение на 2
MOVAL,3 ; умножение
SHL AL,1 ; на 8
2.4 Контрольные вопросы
Какими командами можно изменить содержимое CS.
Напишите программу сложения 2-х 128 разрядных чисел.
Какое назначение универсальных регистров МП.
Являются ли ошибочными команды: PUSHAL,POPAH.
Какое назначение команд PUSHF,POPF. Почему значениеSPвсегда четное.
Как изменить содержимое SPдля обращения к произвольной ячейке стека.
В каких случаях команды MULиIMULформируют различные результаты
Составьте ГСА программы умножения двойных слов.
Приложение
Таблица вариантов арифметических операций
N |
Арифмет. операции |
Тип операндов |
Знак операндов |
Разрядность операндов | ||||||
ОП1 |
ОП2 |
ОП3 |
ОП4 |
ОП1, ОП2 |
ОП3, ОП4 |
ОП1, ОП2 |
ОП3, ОП4 |
ОП1, ОП2 |
ОП3, ОП4 | |
1 |
+ |
|
* |
/ |
binary |
DB, 2:1 |
зн |
бзн |
3 |
|
2 |
|
- |
* |
/ |
BCD1 |
DW, 2:1 |
бзн |
бзн |
5 |
|
3 |
+ |
|
* |
/ |
BCD2 |
DB, 4:2 |
бзн |
зн |
6 |
|
4 |
|
- |
* |
/ |
binary |
DW, 4:2 |
зн |
зн |
7 |
|
5 |
+ |
|
* |
/ |
BCD1 |
DB, 4:2 |
бзн |
бзн |
3 |
|
6 |
+ |
- |
* |
/ |
BCD2 |
DW, 4:2 |
бзн |
зн |
5 |
|
7 |
|
- |
* |
/ |
binary |
DB, 2:1 |
бзн |
бзн |
6 |
|
8 |
+ |
- |
* |
/ |
BCD1 |
DW, 2:1 |
бзн |
зн |
7 |
|
9 |
+ |
|
* |
/ |
BCD2 |
DB, 4:2 |
бзн |
бзн |
3 |
|
10 |
+ |
- |
* |
/ |
binary |
DB, 4:2 |
зн |
зн |
5 |
|
11 |
|
- |
* |
/ |
BCD1 |
DW, 4:2 |
бзн |
зн |
6 |
|
12 |
+ |
- |
* |
/ |
BCD2 |
DB, 2:1 |
бзн |
бзн |
7 |
|
13 |
+ |
|
* |
/ |
binary |
DB, 2:1 |
бзн |
бзн |
3 |
|
14 |
+ |
- |
* |
/ |
BCD1 |
DW, 2:1 |
бзн |
зн |
5 |
|
15 |
|
- |
* |
/ |
BCD2 |
DW, 2:1 |
бзн |
зн |
6 |
|
16 |
+ |
- |
* |
/ |
binary |
DB, 4:2 |
бзн |
бзн |
7 |
|
17 |
+ |
|
* |
/ |
BCD1 |
DB, 2:1 |
бзн |
бзн |
3 |
|
18 |
+ |
- |
* |
/ |
BCD2 |
DW, 2:1 |
бзн |
зн |
5 |
|
19 |
+ |
|
* |
/ |
binary |
DB, 4:2 |
зн |
зн |
6 |
|
20 |
|
- |
* |
/ |
BCD1 |
DW, 4:2 |
бзн |
бзн |
7 |
|
21 |
+ |
|
* |
/ |
BCD2 |
DW, 4:2 |
бзн |
бзн |
3 |
|
22 |
|
- |
* |
/ |
binary |
DB, 2:1 |
зн |
зн |
5 |
|
23 |
+ |
|
* |
/ |
BCD1 |
DW, 4:2 |
бзн |
зн |
6 |
|
24 |
|
- |
* |
/ |
BCD2 |
DW, 2:1 |
бзн |
бзн |
7 |
|
25 |
+ |
|
* |
/ |
binary |
DW, 2:1 |
бзн |
зн |
3 |
|
BCD1 – неупакованный двоично-десятичный формат.
BCD2 – упакованный двоично-десятичный формат.
Binary – двоичный формат числа.