- •Листинг программы в fasm:
- •Отладка программы проводилась в TurboDebugger:
- •Текст программы в символическом виде и машинном представлении
- •Отладочные примеры Результаты выполнения теста с условным переходом:
- •Результаты выполнения теста без условного перехода:
- •Расчёт тактов каждой команды
- •Используемые материалы:
Используемые материалы:
Коды регистров Таблица 3.1. Режимы адресации Таблица 3.2
reg |
регистр w=1 w=0 |
|
000 |
AX |
AL |
001 |
CX |
CL |
010 |
DX |
DL |
011 |
BX |
BL |
100 |
SP |
AH |
101 |
BP |
CH |
110 |
SI |
DH |
111 |
DI |
BH |
md |
00 |
01 |
10 |
11 |
|
r/m |
w=1 |
w=0 |
|||
000 |
(BX)+(SI) (DS) |
(BX)+(SI)+disp8 (DS) |
(BX)+(SI)+disp16 (DS) |
AX |
AL |
001 |
(BX)+(DI) (DS) |
(BX)+(DI)+disp8 (DS) |
(BX)+(DI)+disp16 (DS) |
CX |
CL |
010 |
(BP)+(SI) (SS) |
(BP)+(SI)+disp8 (SS) |
(BP)+(SI)+disp16 (SS) |
DX |
DL |
011 |
(BP)+(DI) (SS) |
(BP)+(DI)+disp8 (SS) |
(BP)+(DI)+disp16 (SS) |
BX |
BL |
100 |
(SI) (DS) |
(SI)+disp8 (DS) |
(SI)+disp16 (DS) |
SP |
AH |
101 |
(DI) (DS) |
(DI)+disp8 (DS) |
(DI)+disp16 (DS) |
BP |
CH |
110 |
disp16 (DS) |
(BP)+disp8 (SS) |
(BP)+disp16 (SS) |
SI |
DH |
111 |
(BX) (DS) |
(BX)+disp8 (DS) |
(BX)+disp16 (DS) |
DI |
BH |
Машинные коды команд Таблица 3.3
-
Команда
Байты кода команды
Схема операции
байт 1
байт 2
байты 3…6
ADD
000000dw
md reg r/m
(disp8/16)
r(r/m) = r + r/m
100000sw
md 000 r/m
(disp8/16)d8/16
r/m = r/m + d
0000010w
data L
(data H)
ac = ac + d
SUB
001010dw
md reg r/m
(disp8/16)
r(r/m)=r(r/m)-(r/m)r
100000sw
md 101 r/m
(disp8/16)d8/16
r/m = r/m – d
0010110w
data L
(data H)
ac = ac – d
AND
001000dw
md reg r/m
(disp8/16)
r(r/m) = r & r/m
100000sw
md 100 r/m
(disp8/16)d8/16
r/m = r/m & d
0010010w
data L
(data H)
ac = ac & d
OR
000010dw
md reg r/m
(disp8/16)
r(r/m) = r V r/m
100000sw
md 001 r/m
(disp8/16)d8/16
r/m = r/m V d
0000110w
data L
(data H)
ac = ac V d
XOR
001100dw
md reg r/m
(disp8/16)
r(r/m) = r + r/m
100000sw
md 110 r/m
(disp8/16)d8/16
r/m = r/m + d
0011010w
data L
(data H)
ac = ac + d
MOV
100010dw
md reg r/m
(disp8/16)
r = r/m, r/m = r
1100011w
md 000 r/m
(disp8/16)d8/16
r/m = d
1011wreg
data L
(data H)
reg = d
1010000w
disp L
disp H
ac=m;прямой адрес
1010001w
disp L
disp H
m=ac;прямой адрес
CMP
0011101w
md reg r/m
(disp8/16)
r – r/m
0011100w
md reg r/m
(disp8/16)
r/m – r
100000sw
md 111 r/m
(disp8/16)d8/16
r/m – d
0011110w
data L
(data H)
ac – d
INC
1111111w
md 000 r/m
(disp8/16)
r/m = r/m+1
01000reg
reg = reg+1
DEC
1111111w
md 001 r/m
(disp8/16)
r/m = r/m-1
01001reg
reg = reg-1
Базовые времена выполнения некоторых команд Таблица 4.1
R - адресация к регистру; A - к аккумулятору; S - к памяти; I - непосредственная адресация
-
Команды
Адресация
Число тактов
Число обращений к памяти
ADD,SUB, AND,OR
RR
RS
SR
RI, AI
SI
3
9+EA
16+EA
4
16+EA
0
1
2
0
2
MOV
SA,AS
RR
RS
SR
RI
SI
10
2
8+EA
9+EA
4
10+EA
1
0
1
1
0
1
MUL
мн-ль 8 бит –R
мн-ль 16 бит –R
мн-ль 8 бит –S
мн-ль 16 бит -S
70…77
118…133
(76…83)+EA
(124…139)+EA
0
0
1
1
CMP
RR
RS, SR
RI, AI
SI
3
9+EA
4
10+EA
0
1
0
1
INC,DEC
16 бит – R
8 бит – R
S
2
3
15+EA
0
0
2
Условные переходы, кроме JCXZ
нет перехода
есть переход
4
16
0
0
LOOP
нет перехода
есть переход
5
17
0
0
JMP
короткий
внутрисегментный
прямой
косвенный
регистровый
межсегментный
прямой
косвеный
15
15
18+EA
11
15
24+EA
0
0
1
0
0
2
Время вычисления эффективного адреса. Таблица 4.2
Режим адресации |
Число тактов синхронизации для вычисления EA |
Прямой |
6 |
Косвенный |
5 |
Относительный |
9 |
Базово-индексный (BP)+(DI) или (BX)+(SI) (BP)+(SI) или (BX)+(DI) |
7 8 |
Относительный базово-индексный (BP)+(DI)+disp или (BX)+(SI)+disp (BP)+(SI)+disp или (BX)+(DI)+disp |
11 12 |
