Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Справка.docx
Скачиваний:
84
Добавлен:
22.05.2015
Размер:
247.47 Кб
Скачать

Учебная модель эвм: краткое описание

Модель можно рассматривать как некий собирательный образ простой ЭВМ (без конвейеров, многоядерности, суперскалярности, динамического параллелизма и других «наворотов» современных мощных процессоров). Однако, она адекватно иллюстрирует принципы организации командного цикла (в том числе на уровне микрокоманд), механизмы взаимодействия процессора и внешних устройств, работы с кэш-памятью. Программирование может осуществляться как в машинных кодах, так и на языке Ассемблер. При кодировании команд и данных использована десятичная система счисления.

Моделируемая ЭВМ включает процессор, оперативную (ОЗУ) и сверхоперативную (РОН + КЭШ) память, устройства вода/вывода.

В процессоре выделены относящиеся к арифметическому устройству (АУ) аккумулятор Acc и регистр данных DR и системные регистры: CR – регистр команд, PC - счётчик команд, SP - указатель стека, RB - регистр базы, RA - регистр адреса, регистр флагов IF, OV, S, Z.

К процессору постоянно подключена оперативная память объёмом 1000 ячеек, блок регистров общего назначения (РОН) – 10 регистров и по одному устройству ввода IR и вывода OR.

При желании можно подключить дополнительно модели кэш-памяти, контроллера клавиатуры, символьного дисплея, блока таймеров, тоногенератор, и контроллер семисегментной индикации.

Учебная модель ЭВМ: форматы данных и команд

Форматы данных

Ячейки ОЗУ и РОН содержат по шесть десятичных разрядов. Данные в модели представляются в формате целые десятичные числа, изменяющиеся в диапазоне минус 99 999…+99 999, содержащие знак и 5 десятичных цифр. Под знак отводится старшая десятичная цифра, причём «плюс» кодируется «0», а «минус» - любой другой цифрой (привычно – «1»).

Если результат арифметической операции выходит за пределы указанного диапазона, то формируется флаг переполнения OV=1. Результатом операции деления является целая часть частного. Деление на ноль вызывает переполнение.

Форматы команд

Система команд учебной ЭВМ содержит около 50 команд, большинство которых является безадресными или одноадресными. Только две команды являются двухадресными: MOV Ri, Rj - команда пересылки из регистра в регистр и JRN Zri, ADR -организация цикла. Все форматы команд приведены на рисунке

Два старших разряда (0 и 1) всех форматов отводится под код операции, разряд 2 определяет тип адресации, три младших разряда (3, 4 и 5) могут использоваться для задания адреса операнда в памяти, непосредственного операнда (в диапазоне 0..999), адреса передачи управления или двух адресов РОН. В случаях, когда требуется использовать непосредственный операнд в диапазоне минус 99999 .. +99999, используется формат 4, занимающий две ячейки памяти. Символ «Х» означает безразличное значение разряда в данном формате.

При описании форматов команд используются следующие сокращения: COP – код операции; TA – тип адресации; ADR – адрес операнда (прямой, косвенный или относительный – в зависимости от типа адресации) или трёхразрядный непосредственный операнд; R, R1, R2 – номер (адрес) регистра общего назначения (R0 – R9); ADC – адрес перехода в командах передачи управления; X – значение разряда безразлично.

Учебная модель ЭВМ: кодирование команд

Способы адресации

Код ТА

Тип адресации

Исполнительный адрес

0

Прямая (регистровая)

ADR (R)

1

Непосредственная

2

Косвенная

O3У(ADR)[3:5]

3

Относительная

ADR + RB

4

Косвенно-регистровая

POH(R)[3:5]

5

Индексная с постинкрементом

POH(R)[3:5], R:= R + l

6

Индексная с преддекрементом

R:= R – l, POH(R)[3:5]

Таблица команд

\Ст. \ Мл.\

0

1

2

3

4

0

NOP

JMP

MOV

1

IN

JZ

RD

RD

RDI

2

OUT

JNZ

WR

WR

3

IRET

JS

ADD

ADD

ADI

4

WRRB

JNS

SUB

SUB

SBI

5

WRSP

JO

MUL

MUL

MULI

6

PUSH

JNO

DIV

DIV

DIVI

7

POP

JRNZ

IN

8

RET

INT

EI

OUT

9

HLT

CALL

DI

Мнемокоды команд и соответствующие им машинные коды операций. Старшая цифра кода – номер столбца, младшая – номер строки. Команды столбца 2 относятся к операциям с ячейками ОЗУ, а подобные команды столбца 3 – к операциям с РОН. Команды столбца 4 имеют формат 4 (двойную длину). Полное описание команд, упорядоченных по коду операций, приведено в таблице

Таблица команд, упорядоченная по кодам операций:

КОП

Мнемо- код

Название

Действие

00

NOP

Пустая операция

Нет

01

IN

Ввод

Acc <== IR

02

OUT

Вывод

OR <== Acc

03

IRET

Возврат из прерывания

FLAGS.PC <== M(SP); INC(SP)

04

WRRB

Загрузка RB

RB <== CR[ADR]

05

WRSP

Загрузка SP

SP <== CR[ADR]

06

PUSH

Поместить в стек

DEC(SP); M(SP) <== R

07

POP

Извлечь из стека

R <== M(SP); INC(SP)

08

RET

Возврат

PC <== M(SP); INC(SP)

09

HLT

Стоп

Конец командных циклов

10

JMP

Безусловный переход

PC <== CR[ADR]

11

JZ

Переход, если 0

if Acc = 0 then PC <== CR[ADR]

12

JNZ

Переход, если не 0

if Acc ≠ 0 then PC <== CR[ADR]

13

JS

Переход, если отрицательно

if Acc < 0 then PC <== CR[ADR]

14

JNS

Переход, если неотрицательно

if Acc ≥ 0 then PC <== CR[ADR]

15

JO

Переход, если переполнение

if |Acc| > 99999 then PC <== CR[ADR]

16

JNO

Переход, если нет переполнения

if |Acc| ≤ 99999 then PC <== CR[ADR]

17

JRNZ

Цикл

DEC(R); if R ≠ 0 then PC <== CR[ADR]

18

INT

Программное прерывание

DEC(SP); M(SP) <== FLAGS.PC; PC <== M(V)

19

CALL

Вызов подпрограммы

DEC(SP); M(SP) <== PC; PC <== CR(ADR)

20

Нет

21

RD

Чтение

Acc <== DD

22

WR

Запись

M(*) <== Acc

23

ADD

Сложение

Acc <== Acc + DD

24

SUB

Вычитание

Acc <== Acc – DD

25

MUL

Умножение

Acc <== Acc x DD

26

DIV

Деление

Acc <== Acc/DD

27

Нет

28

EI

Разрешить прерывание

IF <== 1

29

DI

Запретить прерывание

IF <== 0

30

MOV

Пересылка

R1 <== R2

31

RD

Чтение

Acc <== R*

32

WR

Запись

R* <== Acc

33

ADD

Сложение

Acc <== Acc + R*

34

SUB

Вычитание

Acc <== Acc – R*

35

MUL

Умножение

Acc <== Acc x R*

36

DIV

Деление

Acc <== Acc/R*

37

IN

Ввод

Acc <== ВУ(CR[ADR*])

38

OUT

Вывод

ВУ(CR[ADR*]) <== Acc

39

Нет

40

Нет

41

RDI

Чтение

Acc <== I

42

Нет

43

ADI

Сложение

Acc <== Acc + I

44

SBI

Вычитание

Acc <== Acc –& I

45

MULI

Умножение

Acc <== Acc x I

46

DIVI

Деление

Acc <== Acc/I

В таблице приняты следующие обозначения:

Acc – аккумулятор PC – счётчик команд SP – указатель стека RB – регистр базы IR – регистр ввода OR – регистр вывода FLAGS – вектор флагов: IF,OV,S,Z IF - флаг разрешения прерывания DD – данные, формируемые командой в качестве (второго) операнда: прямо или косвенно адресуемая ячейка памяти или трехразрядный непосредственный операнд; R – содержимое регистра общего назначения (РОН) R* – содержимое РОН или косвенно адресуемой через регистр ячейки памяти; M( ) – содержимое ячейки памяти M(*) – содержимое ячейки памяти, прямо или косвенно адресуемой в команде; CR – регистр команды CR[ADR] – трёхразрядное поле ADR регистра CR; CR[ADR*] – два младших разряда поля ADR регистра CR; V – адрес памяти, соответствующий вектору прерывания; I – пятиразрядный непосредственный операнд со знаком.