Skip to Content

Интерпретатор базовой ЭВМ

Полный текст микропрограммы (интерпретатора команд) приведен в табл. 3.2. В этой таблице есть один “лишний” столбец (ВЕРТ.), содержание которого будет описано ниже.

Первые микрокоманды интерпретатора служат для выборки команды из основной памяти (ОП) базовой ЭВМ и определения ее типа: адресная, безадресная или ввода-вывода. Для этого содержимое СК (в котором хранится адрес исполняемой команды) пересылается через БР в РА (СК=>БР и БР=>РА). Затем из ячейки ОП, на которую указывает РА, пересылается в РД команда, а содержимое СК увеличивается на единицу и пересылается в БР: ОП(РА)=>РД, СК+1=>БР.

Таблица 3.2 - Интерпретатор базовой ЭВМ (микропрограмма)

Адрес Микрокоманды Комментарии
Горизонт. Верт. Метка Действие
1 2 3 4 5
Цикл выборки команды
01 0000 0008 0300 нач СК ==> БР
02 0004 0000 4001 БР ==> РА
03 0080 0408 0311 ОП(РФ) ==> РД, СК + 1 ==> БР
04 0020 0000 4004 БР ==> СК
05 0000 0002 0100 РД ==> БР
06 0010 0000 4003 БР ==> РК
Определение типа команды
07 880C 8000 AF0C IF BIT(15,PK) = 0 THEN АДЦ(0C)
08 880C 4000 AE0C IF BIT(14,PK) = 0 THEN АДЦ(0C)
09 880C 2000 AD0C IF BIT(13,PK) = 0 THEN АДЦ(0C)
0A 895E 1000 EC5E IF BIT(12,PK) = 1 THEN БАД(5Е)
0B 828E 0008 83BE GOTO B/B(8E)
Определение вида адресации
0C 881D 0800 AB1D АДЦ IF BIT(11,PK) = 0 THEN АДР(1D)
Цикл выборки адреса операнда
0D 0000 0002 0100 РД ==> БР
0E 0004 0000 4001 БР ==> РА
0F 0080 0000 0001 ОП(РА) ==> РД
10 881D 0008 A31D IF BIT(3,PK) = 0 THEN АДР(1D)
11 891D 0010 E41D IF BIT(4,PK) = 1 THEN АДР(1D)
12 891D 0020 E51D IF BIT(5,PK) = 1 THEN АДР(1D)
13 891D 0040 E61D IF BIT(6,PK) = 1 THEN АДР(1D)
14 891D 0080 E71D IF BIT(7,PK) = 1 THEN АДР(1D)
15 891D 0100 E81D IF BIT(8,PK) = 1 THEN АДР(1D)
16 891D 0200 E91D IF BIT(9,PK) = 1 THEN АДР(1D)
17 891D 0400 EA1D IF BIT(10,PK) = 1 THEN АДР(1D)
18 0000 0402 0110 РД ==> БР
19 0008 0000 4002 БР ==> РД
1A 0100 0000 0002 РД ==> ОП(РА)
1B 0000 0082 0140 РД + СОМ(0) = РД - 1 ==> БР
1C 0008 0000 4002 БР ==> РД
Цикл исполнения адресных команд
Декодирование адресных команд
1D 892D 8000 EF2D АДР IF BIT(15,PK) = 1 THEN ПРХ(2D)
1E 0000 0002 0100 РД ==> БР
1F 0004 0000 4001 БР ==> РА
20 8927 4000 EE27 IF BIT(14,PK) = 1 THEN АРФ(27)
21 8824 2000 AD24 IF BIT(13,PK) = 0 THEN A1(24)
22 8857 1000 AC57 IF BIT(12,PK) = 0 THEN JSR(57)
23 8238 0008 8338 GOTO MOV(38)
24 0080 0000 0001 A1 ОП(РА) ==> РД
25 8850 1000 AC50 IF BIT(12,PK) = 0 THEN ISZ(50)
26 8235 0008 8335 GOTO AND(35)
27 0080 0000 0001 АРФ ОП(РА) ==> РД
28 882B 2000 AD2B IF BIT(13,PK) = 0 THEN СУМ(2B)
29 8843 1000 AC43 IF BIT(12,PK) = 0 THEN SUB(43)
2A 82B0 0008 83B0 GOTO P - A(B0)
2B 883C 1000 AC3C СУМ IF BIT(12,PK) = 0 THEN ADD(3C)
2C 823F 0000 833F GOTO ADC(3F)
2D 8830 4000 AE30 ПРХ IF BIT(14,PK) = 0 THEN УПХ(30)
2E 8847 1000 AC47 IF BIT(12,PK) = 0 THEN BR(47)
2F 82D0 0008 83D0 GOTO Р - П(D0)
30 8833 2000 AD33 УПХ IF BIT(13,PK) = 0 THEN П1(33)
31 884С 1000 AC4C IF BIT(12,PK) = 0 THEN BMI(4C)
32 824E 0008 834E GOTO BEQ(4E)
33 8846 1000 AC46 П1 IF BIT(12,PK) = 0 THEN BCS(46)
34 824A 0008 834A GOTO BPL(4A)
Исполнение адресных команд
35 0000 0212 1120 AND A & РД ==> БР
36 0040 C000 4035 БР ==> A, N, Z
37 828F 0008 838F GOTO ПРЕ(8F)
38 0000 0010 1000 MOV A ==> БР
39 0008 0000 4002 БР ==> РД
3A 0100 0000 0002 РД ==> ОП(РА)
3B 828F 0008 838F GOTO ПРЕ(8F)
3C 0000 0012 1100 ADD A + РД ==> БР
3D 0040 E000 4075 БР ==> A, C, N, Z
3E 828F 0008 838F GOTO ПРЕ(8F)
3F 823C 0001 803C ADC IF BIT(0,PC) = 0 THEN ADD(3C)
40 0000 0412 1110 A + РД + 1 ==> БР
41 0040 E000 4075 БР ==> A, C, N, Z
42 828F 0008 838F GOTO ПРЕ(8F)
43 0000 0512 1190 SUB A + COM(РД) + 1 = A - РД ==> БР
44 0040 E000 4075 БР ==> A, C, N, Z
45 828F 0008 838F GOTO ПРЕ(8F)
46 828F 0001 808F BCS IF BIT(0,PC) = 0 THEN ПРЕ(8D)
47 0000 0002 0100 BR РД ==> БР
48 0020 0000 4004 БР ==> СК
49 828F 0008 838F GOTO ПРЕ(8F)
4A 838F 0004 C28F BPL IF BIT(2,PC) = 1 THEN ПРЕ(8F)
4B 8247 0008 8347 GOTO BR(47)
4C 828F 0004 828F BMI IF BIT(2,PC) = 0 THEN ПРЕ(8F)
4D 8247 0008 8347 GOTO BR(47)
4E 828F 0002 818F BEQ IF BIT(1,PC) = 0 THEN ПРЕ(8F)
4F 8247 0008 8347 GOTO BR(47)
50 0000 0402 0110 ISZ РД + 1 ==> БР
51 0008 0000 4002 БР ==> РД
52 0100 0000 0002 РД ==> ОП(РА)
53 858А 8000 DF8F IF BIT(15,РД) = 1 THEN ПРЕ(8F)
54 0000 0408 0310 СК + 1 ==> БР
55 0020 0000 4004 БР ==> СК
56 828F 0008 838F GOTO ПРЕ(8F)
57 0000 0402 0110 JSR РД + 1 ==> БР
58 0010 0000 4003 БР ==> РК
59 0000 0008 0300 СК ==> БР
5A 0008 0000 4002 БР ==> РД
5B 0100 0004 0202 РД ==> ОП(РА), РК ==> БР
5C 0020 0000 4004 БР ==> СК
5B 828F 0008 838F GOTO ПРЕ(8F)
Продолжение цикла выборки команды, декодирование и исполнение безадресных команд
5E 8861 0800 AB61 БАД IF BIT(11,PK) = 0 THEN Б0(61)
5F 886C 0400 AA6C IF BIT(10,PK) = 0 THEN Б1(6C)
60 82E0 0008 83E0 GOTO Р - Б(E0)
61 8867 0400 AA67 Б0 IF BIT(10,PK) = 0 THEN Б2(67)
62 8865 0200 A965 IF BIT(9,PK) = 0 THEN Б3(65)
63 8882 0100 A882 IF BIT(8,PK) = 0 THEN ROL(82)
64 8285 0008 8385 GOTO ROR(85)
65 887B 0100 A87B Б3 IF BIT(8,PK) = 0 THEN CMA(7B)
66 827E 0008 837E GOTO CMC(7E)
67 886A 0200 A96A Б2 IF BIT(9,PK) = 0 THEN Б4(6A)
68 8876 0100 A876 IF BIT(8,PK) = 0 THEN CLA(76)
69 8279 0008 8379 GOTO CLC(79)
6A A888 Б4 IF BIT(8,PK) = 0 THEN HLT(88)
6B 8287 0008 8387 GOTO NOP(87)
6C 886F 0200 A96F Б1 IF BIT(9,PK) = 0 THEN Б5(6F)
6D 888A 0100 A88A IF BIT(8,PK) = 0 THEN EI(8A)
6E 828C 0008 838C GOTO DI(8C)
6F 8873 0100 A873 Б5 IF BIT(8,PK) = 0 THEN INC(73)
70 0000 0110 1080 DEC A + COM(0) = A - 1 ==> БР
71 0040 E000 4075 БР ==> A, C, N, Z
72 828F 0008 838F GOTO ПРЕ(8F)
73 0000 0410 1010 INC A + 1 ==> БР
74 0040 E000 4075 БР ==> A, C, N, Z
75 828F 0008 838F GOTO ПРЕ(8F)
76 0000 0200 0020 CLA 0 ==> БР
77 0040 C000 4035 БР ==> A, N, Z
78 828F 0008 838F GOTO ПРЕ(8F)
79 0001 0000 4080 CLC 0 ==> C
7A 828F 0008 838F GOTO ПРЕ(8F)
7B 0000 0090 1040 CMA COM(A) ==> БР, инверсия A
7C 0040 C000 4035 БР ==> A, N, Z
7D 828F 0008 838F GOTO ПРЕ(8F)
7E 8280 0001 8080 CMC IF BIT(0,PC) = 0 THEN Б6(80)
7F 8279 0008 8379 GOTO CLC(79)
80 0002 0000 40C0 Б6 1 ==> C
81 828F 0008 838F GOTO ПРЕ(8F)
82 0000 1000 0008 ROL RAL(A) ==> БР, сдвиг влево
83 0040 E000 4075 БР ==> A, C, N, Z
84 828F 0008 838F GOTO ПРЕ(8F)
85 0000 0800 0004 ROR RAR(A) ==> БР, сдвиг вправо
86 0040 E000 4075 БР ==> A, C, N, Z
87 828F 0008 838F NOP GOTO ПРЕ(8F)
88 0000 0001 4008 HLT Останов машины
89 8201 0008 8301 GOTO НАЧ(01)
8A 1000 0000 4800 EI Разрешение прерывания
8B 8201 0008 8301 GOTO НАЧ(01)
8C 0800 0000 4400 DI Запрещение прерывания
8D 8201 0008 8301 GOTO НАЧ(01)
Продолжение цикла выборки команды, декодирование и исполнение команд ввода-вывода
8E 0200 0000 4100 B/B Организация связей с ВУ
Цикл прерывания
8F 8288 0080 8788 ПРЕ IF BIT(7,PC) = 0 THEN HTL(88)
90 8201 0020 8501 IF BIT(5,PC) = 0 THEN НАЧ(01)
91 0000 0200 0020 0 ==> БР
92 0004 0000 4001 БР ==> РА
93 0000 0008 0300 СК ==> БР
94 0008 0000 4002 БР ==> РД
95 0100 0400 0012 РД ==> ОП(РА), 1 ==> БР
96 0020 0000 4004 БР ==> СК
97 0800 0000 4400 Запрещение прерывания
98 8201 0008 8301 GOTO НАЧ(01)
Пультовые операции
Ввод адреса
99 0000 0040 3000 В/А КР ==> БР
9A 0020 0000 4004 БР ==> СК
9B 828F 0008 838F GOTO ПРЕ(8F)
Чтение
9C 0000 0008 0300 ЧТ СК ==> БР
9D 0004 0000 4001 БР ==> РА
9E 0080 0408 0311 ОП(РА) ==> РД, СК + 1 ==> БР
9F 0020 0000 4004 БР ==> СК
A0 828F 0008 838F GOTO ПРЕ(8F)
Запись
A1 0000 0008 0300 ЗАП СК ==> БР
A2 0004 0000 4001 БР ==> РА
A3 0000 0040 3000 КР ==> БР
A4 0008 0000 4002 БР ==> РД
A5 0100 0408 0312 РД ==> ОП(РА), СК + 1 ==> БР
A6 0020 0000 4004 БР ==> СК
A7 828F 0008 838F GOTO ПРЕ(8F)
Пуск
A8 0000 0200 0020 ПУС 0 ==> БР
A9 005C E000 4077 БР ==> A, C, N, Z, РА, РД, РК
AA 0400 0000 4200 Сброс флагов ВУ
AB 0800 0000 4400 Запрещение прерывания
AC 828F 0008 838F GOTO ПРЕ(8F)
...
B0 Р - А Арифметическая команда 7###
...
D0 Р - П Команда перехода D###
...
E0 Р - Б Безадресная команда FC##
...
FF

Далее содержимое БР, т.е. адрес следующей команды, пересылается в СК, а команда пересылается из РД в РК, после чего начинается ее дешифрация.

Так как адресные команды (команды с кодами операции от 0 до D) обязательно содержат ноль в 15, 14 или 13 бите, то проверкой этих битов РК можно выделить адресную команду и перейти к проверке ее 2-го бита (бита вида адресации). Для разделения команд ввода-вывода (код операции Е) и безадресных команд (код операции F) достаточно проанализировать 12-ый бит РК: если этот бит равен 1, то надо переходить к микрокомандам продолжения дешифрации безадресных команд, расположенных, начиная с адреса 5E (метка БАД). В комментариях микрокоманда анализа 12-го бита РК записана в виде: IF BIT(12,РК)=1 THEN БАД(5E).

В памяти микрокоманд нет полных микропрограмм для адресных команд с кодами операций 7 и D, а также для безадресных команд FC00, FD00, FE00 и FF00. Когда при декодировании команды выясняется, что выбрана команда 7xxx, управление передается ячейке с адресом В0. Начиная с этой ячейки, могут располагаться микрокоманды какой-либо новой арифметической команды (например, умножения). Для микропрограмм реализации команды перехода и безадресных команд выделены участки памяти микрокоманд с начальными адресами D0 и E0.

В базовой ЭВМ реализован и другой вариант интерпретатора, использующий более короткие - вертикальные микрокоманды (столбец “ВЕРТ.” табл. 3.2). Эти микрокоманды состоят из полей, в которых закодированы требуемые наборы управляющих сигналов (рис. 3.2). Для декодирования используются дополнительные устройства - дешифраторы.

Last updated on