|
Учебная модель ЭВМ: кодирование команд
Способы адресации
Код ТА | Тип адресации | Исполнительный адрес |
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 – пятиразрядный непосредственный операнд со знаком.
© Жмакин Анатолий Петрович (Курский государственный
университет). anatoly.zhmakin@gmail.com
Оформление Web-страницы - Е.А.Еремин, 2010
|