Arkhiv_WinRAR / 4 лаба / Лабораторная N4
.docx
Федеральное агентство по образованию
Рязанский государственный радиотехнический университет
Кафедра ЭВМ
Аппаратные средства вычислительной техники
Лабораторная работа №4
по теме: “ЭМУЛЯЦИЯ КОМАНД МИКРОПРОЦЕССОРА i8086”.
Выполнил:
Студент группы 942:
Маслов А.В.
Проверил: старший преподаватель кафедры ЭВМ:
Елесина Светлана Ивановна.
Рязань 2010 год
Цель работы:
Определить остаток от деления двоичного числа на 15 (см. указания к варианту №8 лабораторной работы №2).
В общем виде порядок выполнения команд (программы на машинном языке) в процессоре представлен на рисунке. В регистре IP записан начальный адрес программы в ОП. Микропроцессор обращается к ОП и осуществляет выборку команды по адресу из IP. Затем загружает ее в регистр команд RGK и дешифрирует ее с одновременным инкрементом IP для адресации следующей по порядку команды. Если команда не является командой перехода, то выполняем ее и переходим к следующей по порядку команде. Команды выполняются последовательно до тех пор, пока не встретится команда перехода. Если встречается команда безусловного перехода, то изменяется естественный порядок следования команд путем замещения содержимого IP адресом, определяемым самой командой перехода. Команды условных переходов замещают или не замещают содержимое IP в зависимости от результатов предыдущих команд, т.е. от состояния регистра FLAG. Если, например, после команды «вычитания» находится команда «перехода по нулю», переход осуществляется, если в регистре FLAG флажок ZF=1. Если же ZF=0, то переход не производится. Когда реализован переход, начинается новая последовательность команд с адреса, к которому осуществлен переход.
Алгоритм:
начало
BX:=BX&DX
DX:=SHR(DX)
BX:=000F
AX:=AX+BX
CX<>0
да
нет
BX:=000F
BX:=000F
AX:=AX +BX
BX<0
BX:=BX - AX
нет
конец
да
Разработка решаемой программы на языке ассемблера:
MOV SP,CX :
MOV CX, CONST :
AND BX,DX : Выделяем младший бит;
ADD AX,BX :
SHR4 (DX) :
MOV BX,CONST :
MOV CX,SP :
JNZ
SUB AX,BX :
JS
MOV BX,CONST
SUB AX,BX :
JMP
HALT
Команда |
Формат |
Код команды в двоичном коде |
Код команды в 16-ричном коде |
||||||||||||||||||||||||||||||||||||
MOV |
RRM |
КОП mod reg r/m |
8BE1 |
||||||||||||||||||||||||||||||||||||
100010011 |
11 |
100 |
001 |
||||||||||||||||||||||||||||||||||||
SP CX |
|||||||||||||||||||||||||||||||||||||||
MOV |
RI |
КОП mod reg r/m |
B904 |
||||||||||||||||||||||||||||||||||||
10111001 |
00 |
000 |
000 |
||||||||||||||||||||||||||||||||||||
CX |
|||||||||||||||||||||||||||||||||||||||
AND |
RRM |
КОП mod reg r/m |
23DA |
||||||||||||||||||||||||||||||||||||
00100011 |
11 |
011 |
010 |
||||||||||||||||||||||||||||||||||||
BX DX |
|||||||||||||||||||||||||||||||||||||||
ADD |
RRM |
КОП mod reg r/m |
03C3 |
||||||||||||||||||||||||||||||||||||
00000011 |
11 |
000 |
011 |
|
|||||||||||||||||||||||||||||||||||
AX BX |
|||||||||||||||||||||||||||||||||||||||
SHR |
RM |
КОП mod reg r/m |
D3EA |
||||||||||||||||||||||||||||||||||||
11010011 |
11 |
101 |
010 |
|
|||||||||||||||||||||||||||||||||||
DX |
|||||||||||||||||||||||||||||||||||||||
MOV |
RI |
КОП mod reg r/m |
BB0F |
||||||||||||||||||||||||||||||||||||
10111011 |
|
|
|
||||||||||||||||||||||||||||||||||||
|
|||||||||||||||||||||||||||||||||||||||
MOV |
RRM |
КОП mod reg r/m |
8BCC |
||||||||||||||||||||||||||||||||||||
10001011 |
11 |
001 |
100 |
||||||||||||||||||||||||||||||||||||
CX SP |
|||||||||||||||||||||||||||||||||||||||
JNZ |
|
КОП mod reg r/m |
73F0 |
||||||||||||||||||||||||||||||||||||
01110011 |
|
|
|
|
|||||||||||||||||||||||||||||||||||
|
|||||||||||||||||||||||||||||||||||||||
SUB |
RRM |
КОП mod reg r/m |
2B08 |
||||||||||||||||||||||||||||||||||||
00101011 |
11 |
011 |
000 |
||||||||||||||||||||||||||||||||||||
|
|||||||||||||||||||||||||||||||||||||||
JS |
|
КОП mod reg r/m |
7806 |
||||||||||||||||||||||||||||||||||||
01111000 |
|
|
|
||||||||||||||||||||||||||||||||||||
|
|||||||||||||||||||||||||||||||||||||||
MOV |
RI |
КОП mod reg r/m |
BB0F |
||||||||||||||||||||||||||||||||||||
100111011 |
|
|
|
||||||||||||||||||||||||||||||||||||
|
|||||||||||||||||||||||||||||||||||||||
SUB |
RRM |
КОП mod reg r/m |
2BC3 |
||||||||||||||||||||||||||||||||||||
00101011 |
11 |
000 |
011 |
||||||||||||||||||||||||||||||||||||
|
|||||||||||||||||||||||||||||||||||||||
JMP |
|
КОП mod reg r/m |
EBF6 |
||||||||||||||||||||||||||||||||||||
11101011 |
|
|
|
||||||||||||||||||||||||||||||||||||
|
|||||||||||||||||||||||||||||||||||||||
HALT |
|
КОП mod reg r/m |
FF00
|
||||||||||||||||||||||||||||||||||||
11111111 |
|
|
|
||||||||||||||||||||||||||||||||||||
|
Кодирование таблицы преобразования адресов: