Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
17
Добавлен:
01.05.2014
Размер:
1.27 Mб
Скачать

5.3. Структура регистровой памяти

Согласно заданию регистровая память должна удовлетворять следующим требованиям:

количество – 16;

универсальные;

разрядность – 32.

Предполагается следующая структура регистров:

Z (zero) - признак нулевого результата;

C (carriage) - признак переноса из старшего разряда;

S (sign) - знак результата;

O (overflow) - признак переполнения результата;

I (interrupt) - разрешения прерывания;

T (trace) - пошаговый режим;

U (user) - флаг супервизор- пользователь;

PE (precision exception) – потеря точности

NE (normalization exception) – денормализация

ZE (zero exception) – деление на 0

IE (integer exception) – действительный операнд

R0..15 – пользовательские регистры, содержимое доступно для изменений

Регистр флагов – системный регистр, который указывает признаки результатов арифметических или логических операций.

SP – системный регистр, хранящий указатель на вершину стека

TINT – системный регистр, хранящий указатель на таблицу прерываний.

PC – системный регистр, хранящий счетчик команд.

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

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

Согласно заданию необходимо предусмотреть следующие способы адресации:

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

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

База, Индекс – адреса регистров, в которых адреса базы и индекса.

  1. Косвенная

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

Согласно заданию команды имеют максимальную адресность равную 2, т.е. операции имеют вид:

  1. О1:=O1 (операция) O2

  2. (операция) O1

  3. (операция)

Также команды можно разделить на:

  1. арифметические

  1. логические

  1. пересылки

A – указывает, какая адресность используется для второго операнда:

00 – непосредственная

11 – относительная

10 – косвенная

01 – зарезервировано

  1. переходов

  1. управления

  1. Система команд

Таблица 1.

MC

Содержание

Функция

Флаги

Код

Z

C

S

O

I

T

U

7.1. Обращение пересылки

1

RDB

Чтение байта

R1<=<R1>+R2

-

-

-

-

-

-

-

000000

2

RDHW

Чтение полуслова

R1<=<R1>+R2

-

-

-

-

-

-

-

000001

3

RDW

Чтение слова

R1<=<R1>+R2

-

-

-

-

-

-

-

000010

4

WRB

Запись байта

<R1>=><R1>+R2

-

-

-

-

-

-

-

000011

5

WRHW

Запись полуслова

<R1>=><R1>+R2

-

-

-

-

-

-

-

000100

6

WRW

Запись слова

<R1>=><R1>+R2

-

-

-

-

-

-

-

000101

7

IN

Чтение из порта

R2<=порт<R1>

-

-

-

-

-

-

-

000110

8

OUT

Запись в порт

R2=>порт<R1>

-

-

-

-

-

-

-

000111

9

MOV

Обмен RG<>RG

<R2><=<R1>

-

-

-

-

-

-

-

001000

10

MOVI

Занос в регистр значения

<R1><= R2

-

-

-

-

-

-

-

001001

7.2. Арифметические операции с ФТ

11

ADD

Сложение

<R1><=<R1>+<R2>

+

+

+

+

-

-

-

001100

12

SUB

Вычитание

<R1><=<R1>-<R2>

+

+

+

+

-

-

-

001101

13

MUL

Умножение

<R1><=<R1>*<R2>

+

+

+

+

-

-

-

001110

14

DIV

Деление

<R1><=<R1>/<R2>

+

+

+

+

-

-

-

001111

15

ADDI

Сложение с неп оп.

<R1><=<R1>+R2

+

+

+

+

-

-

-

010000

16

SUBI

Выч. с неп оп.

<R1><=<R1>-R2

+

+

+

+

-

-

-

010001

17

MULI

Умн/ с неп оп.

<R1><=<R1>*R2

+

+

+

+

-

-

-

010010

18

DIVI

Деление с неп оп.

<R1><=<R1>/R2

+

+

+

+

-

-

-

010011

7.3. Логические оперции с ФТ

19

AND

«И»

<R1><=<R1>&<R2>

+

-

+

-

-

-

-

010100

20

OR

«ИЛИ»

<R1><=<R1>v<R2>

+

-

+

-

-

-

-

010101

21

XOR

Искл «ИЛИ»

<R1><=<R1>+<R2>

+

-

+

-

-

-

-

010110

22

NOT

«НЕ»

<R1><=~<R1>

+

-

+

-

-

-

-

010111

23

RCL

Циклический сдвиг влево

-

+

-

+

-

-

-

011000

24

RCR

Циклический сдвиг вправо

-

+

-

+

-

-

-

011001

7.4. Команды переходов и прерываний

25

CLI

Очистить флаг разрешения прерываний

-

-

-

-

0

-

-

011010

26

INT

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

<SP><=PC

<R15><=flags

+

+

+

+

+

+

+

011100

27

IRET

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

<PC><=SP

flags<=R15

-

-

-

-

-

-

-

011101

28

CALL

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

<SP><=PC

PC<=<R1>+R2

-

-

-

-

-

-

-

011110

29

RET

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

<PC><=SP

-

-

-

-

-

-

-

011111

30

JMP

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

PC<=<R1>+R2

-

-

-

-

-

-

-

100000

31

JZ

Переход по нулю

PC<=<R1>+R2

+

-

-

-

-

-

-

100001

32

JNZ

Переход не по нулю

PC<=<R1>+R2

+

-

-

-

-

-

-

100010

33

JO

Переход по переполнению

PC<=<R1>+R2

-

-

-

+

-

-

-

100011

34

JNO

Переход по не переполнению

PC<=<R1>+R2

-

-

-

+

-

-

-

100100

35

JC

Переход по переносу

PC<=<R1>+R2

-

+

-

-

-

-

-

100101

36

JNC

Переход не по переносу

PC<=<R1>+R2

-

+

-

-

-

-

-

100110

37

JS

Переход переход по < 0

PC<=<R1>+R2

-

-

+

-

-

-

-

100111

38

JNS

Переход переход по >= 0

PC<=<R1>+R2

-

-

+

-

-

-

-

101000

7.5. Операции управления

39

RFL

Чтение флагов

R1<=Flags

-

-

-

-

-

-

-

101001

40

WFL

Запись флагов

<R1>=>Flags

+

+

+

+

+

+

+

101010

41

RTLBR

Чтение TLBP

R1<=TLB

-

-

-

-

-

-

-

101011

42

WTLBR

Запись TLBP

<R1>=>TLB

-

-

-

-

-

-

-

101100

43

RISR

Чтение TINT

R1<=TINT

-

-

-

-

-

-

-

101101

44

WISR

Запись TINT

<R1>=>TINT

-

-

-

-

-

-

-

101110

45

RBVA

Чтение BVA

<R0><=BVA

-

-

-

-

-

-

-

110011

46

RFE

Возврат в пользователя

-

-

-

-

-

-

0

101111

47

SCALL

Переход в супервизора

-

-

-

-

-

-

1

110000

48

HALT

Ожидание прерывания

-

-

-

-

1

-

-

110001

49

NOP

Нет операции

PC<=<PC>+1

-

-

-

-

-

-

-

110010

7.6. Арифметические операции с ПТ

50

FADD

Сложение

<F0><=<F1>+<F2>

+

+

+

+

-

-

-

111000

51

FSUB

Вычитание

<F0><=<F1>-<F2>

+

+

+

+

-

-

-

111001

52

FMUL

Умножение

<F0><=<F1>*<F2>

+

+

+

+

-

-

-

111010

53

FDIV

Деление

<F0><=<F1>/<F2>

+

+

+

+

-

-

-

111011

54

FMOV

Обмен RG<>RG

F0<=<F1>

-

-

-

-

-

-

-

111100

55

FRDW

Чтение

<F0><=<R1>+R2

-

-

-

-

-

-

-

111101

56

FWRW

Запись

<F0><=<R1>+R2

-

-

-

-

-

-

-

111110

57

MFC

Преобр ПТ-ФТ

<R0><=<F1>

+

+

+

+

-

-

-

111111

58

MCF

Преобр ФТ-ПТ

<R0>=><F1>

+

-

+

+

-

-

-

111111