КУРСОВАЯ РАБОТА
по дисциплине «Микропроцессорные средства»
Вариант № 18
Студент:Аксенов М.Д.
Группа: 14ВТИ-3ДБ-020
Преподаватель: Бурашников С.Р.
Ступино 2016
Вариант № 18
Линейная команда | Команда условного перехода | Тип внутрисегментного безусловного перехода | |
БП1к | БП2к | ||
OR | JNP |
Задание:
Составить программу, реализующую алгоритм. В программе должны быть использованы все возможные режимыадресации операндов в линейных командах (ЛК), атакжеспециальный формат ЛК,использующий аккумулятор. В одной из ЛК предусмотреть обработку байта данных, остальные ЛК должны обрабатывать слова. В вариантах, использующих в качестве ЛК команду MOV или XCHG, необходимо дополнить их в блоке ЛК1 командами CMP или TEST. Команды безусловных внутрисегментных переходов (БП1д и БП2д) должны реализовывать оба допустимых типа перехода (прямой и косвенный). Обозначения УП и БПк соответствуют условному и внутрисегментному безусловному переходам.
Режимы адресации линейных команд:
1) непосредственный
2) прямой
3) прямой регистровый
4) косвенный регистровый
5) регистровый
6) базово-индексный
7) относительный базово-индексный
Команды внутрисегментных безусловных переходов:
1) прямой короткий
2) прямой близкий
3) косвенный.
Схема алгоритма, подлежащего кодированию в домашнем задании
Листинг программы в FASM:
Отладка программы проводилась в TurboDebugger:
Текст программы в символическом виде и машинном представлении
Команда | CS16 | IP16 | Символическая запись команды | Машинное представление | |
2-е | 16-е | ||||
ЛК1 | OR AX,0101h | 0D | |||
УП | 000B | JNP LC2 | 7B | ||
ЛК3 | 000D | OR AX,BX | |||
D8 | |||||
ЛК4 | 000F | OR SI,[BX] | 0B | ||
БП1д | JMP far S2:LC5 | EA | |||
ЛК7 | OR AX,BX | ||||
D8 | |||||
ЛК8 | OR AX,[BX+SI+2] | 0B | |||
БП2к | 001B | JMPnear LC1 | EB | ||
EB | |||||
ЛК2 | 001D | OR BX,[0004h] | 0B | ||
1E | |||||
БП1к | JMP BX | FF | |||
E3 | |||||
ЛК5 | OR [BX+2],AX | ||||
ЛК6 | OR AX,[BX+SI] | 0B | |||
БП2д | JMP dword [DI] | FF | |||
2D |
|
Отладочные примеры
Результаты выполнения теста с условным переходом:
Исходное состояние | ЛК1 | УП | ЛК2 | БП1к | ЛК4 | БП1д | ЛК5 | ЛК6 | БП2д | ЛК7 | ЛК8 | БП2к | |
AX | 010F | 010F | |||||||||||
BX | 000F | 000F | 000F | 000F | 000F | 000F | 000F | 000F | 000F | ||||
CX | |||||||||||||
DX | |||||||||||||
SI | C3F8 | C3F8 | C3F8 | C3F8 | C3F8 | C3F8 | C3F8 | C3F8 | |||||
DI | |||||||||||||
CS | |||||||||||||
DS | |||||||||||||
IP | 000B | 001D | 000F | 001B | |||||||||
Время выполнения команды | |||||||||||||
Время выполнения программы |
Результаты выполнения теста без условного перехода:
|
Исходное состояние | ЛК1 | УП | ЛК3 | ЛК4 | БП1д | ЛК5 | ЛК6 | БП2д | ЛК7 | ЛК8 | БП2к | |
AX | 010F | 010F | 010F | 010F | 010F | 010F | 010F | 010F | 010F | 010F | 010F | 010F |
BX | 000F | 000F | 000F | 000F | 000F | 000F | 000F | 000F | 000F | 000F | 000F | 000F |
CX | ||||||||||||
DX | ||||||||||||
SI | C3F8 | C3F8 | C3F8 | C3F8 | C3F8 | C3F8 | C3F8 | C3F8 | C3F8 | C3F8 | C3F8 | C3F8 |
DI | ||||||||||||
CS | ||||||||||||
DS | ||||||||||||
IP | 000B | 000D | 000F | 001B | ||||||||
Время выполнения команды | ||||||||||||
Время выполнения программы |
Расчёт тактов каждой команды
Команда | Адресация | Число тактов |
OR AX,0101h | RI Непосредственная | |
JNP LC2 | PF = 0 => есть переход PF = 1 => нет перехода | 16 4 |
ORAX,BX | RR Прямая регистровая | |
ORSI,[BX] | RS Косвенная регистровая | 9 5 |
JMPS2:LC5 | Межсегментный прямой переход | |
ORAX,BX | RR Прямая регистровая | |
OR AX,[BX+SI+2] | RS Относительная базово-индексная | 9 11 |
JMP nearLC1 | Внутрисегментный прямой близкий переход | |
OR BX,[0004h] | RS Прямая | |
JMP farBX | Внутрисегментный косвенный переход | |
OR [BX+2],AX | SR Относительная регистровая | 16 9 |
ORAX,[BX+SI] | RS Базово-индексная | |
JMP dword [DI] | Межсегментный косвенный переход |
|
Используемые материалы:
Коды регистров Таблица 3.1. Режимы адресации Таблица 3.2
reg | регистр w=1 w=0 | |
AX | AL | |
CX | CL | |
DX | DL | |
BX | BL | |
SP | AH | |
BP | CH | |
SI | DH | |
DI | BH |
md | |||||
r/m | w=1 | w=0 | |||
(BX)+(SI) (DS) | (BX)+(SI)+disp8 (DS) | (BX)+(SI)+disp16 (DS) | AX | AL | |
(BX)+(DI) (DS) | (BX)+(DI)+disp8 (DS) | (BX)+(DI)+disp16 (DS) | CX | CL | |
(BP)+(SI) (SS) | (BP)+(SI)+disp8 (SS) | (BP)+(SI)+disp16 (SS) | DX | DL | |
(BP)+(DI) (SS) | (BP)+(DI)+disp8 (SS) | (BP)+(DI)+disp16 (SS) | BX | BL | |
(SI) (DS) | (SI)+disp8 (DS) | (SI)+disp16 (DS) | SP | AH | |
(DI) (DS) | (DI)+disp8 (DS) | (DI)+disp16 (DS) | BP | CH | |
disp16 (DS) | (BP)+disp8 (SS) | (BP)+disp16 (SS) | SI | DH | |
(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 | 9+EA 16+EA 16+EA | |
MOV | SA,AS RR RS SR RI SI | 8+EA 9+EA 10+EA | |
MUL | мн-ль 8 бит –R мн-ль 16 бит –R мн-ль 8 бит –S мн-ль 16 бит -S | 70…77 118…133 (76…83)+EA (124…139)+EA | |
CMP | RR RS, SR RI, AI SI | 9+EA 10+EA | |
INC,DEC | 16 бит – R 8 бит – R S | 15+EA | |
Условные переходы, кроме JCXZ | нет перехода есть переход | ||
LOOP | нет перехода есть переход | ||
JMP | короткий внутрисегментный прямой косвенный регистровый межсегментный прямой косвеный | 18+EA 24+EA |
Время вычисления эффективного адреса. Таблица 4.2
Режим адресации | Число тактов синхронизации для вычисления EA |
Прямой | |
Косвенный | |
Относительный | |
Базово-индексный (BP)+(DI) или (BX)+(SI) (BP)+(SI) или (BX)+(DI) | |
Относительный базово-индексный (BP)+(DI)+disp или (BX)+(SI)+disp (BP)+(SI)+dispили (BX)+(DI)+disp |