Навигация по странице:
|
Практическая работа_последов. Практическая работа Тема Построение последовательности машинных операций для реализации простых вычислений
Окно Микрокомандный уровень
Окно Микрокомандный уровень (рис. 8.8) используется только в режиме микрокоманд, который устанавливается командой Режим микрокоманд меню Работа. В это окно выводится мнемокод выполняемой команды, список микрокоманд, ее реализующих, и указатель на текущую выполняемую микрокоманду.
Шаговый режим выполнения программы или запуск программы в автоматическом режиме с задержкой командного цикла позволяет наблюдать процесс выполнения программы на уровне микрокоманд.
Если открыть окно Микрокомандный уровень, не установив режим микрокоманд в меню Работа, то после начала выполнения программы в режиме Шаг (или в автоматическом режиме) в строке сообщений окна будет выдано сообщение "Режим микрокоманд неактивен".
Рис. 8.8. Окно Микрокомандный уровень
Рис. 8.9. Окна в режиме микрокомандного уровня
Вспомогательные таблицы
В данном разделе представлены вспомогательные таблицы (табл. 8.4—8.8) для работы с моделью учебной ЭВМ.
Таблица 8.4. Таблица команд учебной ЭВМ
Мл/Ст.
|
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
|
|
|
Таблица 8.5. Типы адресации, их коды и обозначение
Обозначение
|
Код
|
Тип адресации
|
Пример команды
|
|
0
|
Прямая (регистровая)
|
ADD 23 (ADD R3)
|
#
|
1
|
Непосредственная
|
ADD #33
|
@
|
2
|
Косвенная
|
ADD @33
|
[ ]
|
3
|
Относительная
|
ADD [33]
|
@R
|
4
|
Косвенно-регистровая
|
ADD @R3
|
@R+
|
5
|
Индексная с постинкрементом
|
ADD @R3+
|
-@R
|
6
|
Индексная с преддекрементом
|
ADD -@R3
|
В табл. 8.6 приняты следующие обозначения:
DD— данные, формируемые командой в качестве (второго) операнда: прямо или косвенно адресуемая ячейка памяти или трехразрядный непосредственный операнд;
R* — содержимое регистра или косвенно адресуемая через регистр ячейка памяти;
ADR* — два младших разряда ADR поля регистра CR;
V — адрес памяти, соответствующий вектору прерывания;
М(*) — ячейка памяти, прямо или косвенно адресуемая в команде; I — пятиразрядный непосредственный операнд со знаком.
Таблица 8.6. Система команд учебной ЭВМ
КОП
|
Мнемокод
|
Название
|
Действие
|
00
|
NOP
|
Пустая операция
|
Нет
|
01
|
IN
|
Ввод
|
Асc <-IR
|
02
|
OUT
|
Вывод
|
OR <- Асc
|
03
|
I RET
|
Возврат из прерывания
|
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 Асc <>0 then PC <-CR[ADR]
|
13
|
JS
|
Переход, если отрицательно
|
if Асc < 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
|
Пересылка
|
Rl <-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
|
Вывод
|
BУ(CR[ADR*]) <- Асс
|
39
|
Нет
|
|
|
40
|
Нет
|
|
|
41
|
RDI
|
Чтение
|
Асс <-I
|
42
|
Нет
|
|
|
43
|
ADI
|
Сложение
|
Асc <�— Асc + I
|
44
|
SBI
|
Вычитание
|
Асc <- Асc - I
|
45
|
MULI
|
Умножение
|
Асc <- Асc х I
|
46
|
DIVI
|
Деление
|
Асc <- Асс/I
|
Ввод программы может осуществляться как в машинных кодах непосредственно в память модели, так и в мнемокодах в окно Текст программы с последующим ассемблированием.
Для этого необходимо ввести в память ЭВМ и выполнить в режиме Шаг некоторую последовательность команд (определенную вариантом задания) и зафиксировать все изменения на уровне программно-доступных объектов ЭВМ, происходящие при выполнении этих команд.
|
|
|