Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Arkhiv_WinRAR / 4 лаба / Лабораторная N4

.docx
Скачиваний:
17
Добавлен:
15.04.2015
Размер:
28.32 Кб
Скачать

Федеральное агентство по образованию

Рязанский государственный радиотехнический университет

Кафедра ЭВМ

Аппаратные средства вычислительной техники

Лабораторная работа №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

Кодирование таблицы преобразования адресов:

Соседние файлы в папке 4 лаба