Форматы команд
Большинство команд учебной микроЭВМ являются одноадресными или безадресными длиной в 1 машинное слово ( 6 десятичных разрядов). Исключение составляют двухсловные команды с непосредственной адресацией и команда MOV , являющаяся двухадресной.
В форматах команд выделяются три поля :
· КОП - тип операции разряды [ 0, 1];
· тип адресации операнда ( ТА) – разряд [ 2] в одном случае он определяет номер регистра;
· прямой или косвенный адрес памяти, номер регистра или адрес перехода, используются разряды [3-5].
Полный список форматов команд приведен на рис. 2.1, где приняты следующие обозначения: КОП – тип операции, ADR – адрес операнда в памяти, ADC– адрес перехода, I – непосредственный операнд, R, R1, R2 – номер регистра, ТА– тип адресации ( табл. 2.2), Х – разряд не используется.
Разряды кода команды
| № формата | 0 1 | 3 4 5 | 6 11 | |
| КОП | Х | Х Х Х | ||
| КОП | ТА | АДР | ||
| КОП | ТА | Х Х R | ||
| 3 a | КОП | ТА | Х R1R2 | |
| КОП | Х | Х Х Х | I | |
| КОП | Х | ADC | ||
| 5a | КОП | R | ADC |
Рис 2.1. Форматы команд учебной ЭВМ
При обращении к табл. 2.3, в которой дается система команд ЭВМ, используются следующие обозначения:
DD – данные, формируемые командой в качестве (второго) операнда: прямо или косвенно адресуемая ячейка памяти или трехразрядный непосредственный операнд;
R* – содержимое регистра или косвенно адресуемая через регистр ячейка памяти;
ADR* – два младших разряда ADR поля регистра CR;
V – адрес памяти, соответствующий вектору прерывания;
М(*) – ячейка памяти, прямо или косвенно адресуемая в команде;
I –пятиразрядный непосредственный операнд со знаком;
IR, OR – двухразрядный десятичный адрес входного и выходного регистра внешнего устройства (ВУ);
Асс – аккумулятор.
Таблица 2.3
Система команд учебной ЭВМ
| КОП | Мнемокод | Название | Действие | |
| NOP | Пустая операция | Нет | ||
| IN | Ввод | Асс IR
| ||
| OUT | Вывод | OR Асс
| ||
| IRET | Возврат из прерывания | FLAGS.PC M(SP); INC (SP)
| ||
| WRRB | Загрузка RB | RB CR[ADR]
| ||
| WRSP | Загрузка SP | SP CR[ADR]
| ||
| PUSH | Поместить в стек | DEC (SP); M(SP) R
| ||
| POP | Извлечь из стека | R M(SP); INC(SP)
| ||
| RET | Возврат | PC M(SP); INC(SP)
| ||
| HLT | Стоп | Конец командных циклов | ||
| JMP | Безусловный переход | PC CR[ADR]
| ||
| JZ | Переход, если 0 | if Acс = 0 then PC CR[ADR]
| ||
| JNZ | Переход, если не 0 | if Асс 0 then PC CR[ADR]
| ||
| JS | Переход, если отрицательно | if Асс 0 then PC CR[ADR]
| ||
| JNS | Переход, если положительно | if Acс > 0 then PC CR[ADR]
| ||
| JO | Переход, если переполнение | if Acc > 99999 then PC CR[ADR]
| ||
| JNO | Переход, если нет переполнения | if |Acc| 99999 then PC CR[ADR]
| ||
| JRNZ | Цикл | DEC (R); if R > 0 then PC CR[ADR]
| ||
| INT | Программное прерывание | DEC (SP); M(SP) FLAGS.PC; PC M(V)
| ||
| CALL | Вызов подпрограммы | DEC (SP); M(SP) PC;
PC CR(ADR)
| ||
| Нет | ||||
| RD | Чтение | Acc DD
| ||
| WR | Запись | M(*) Acc
| ||
| ADD | Сложение | Acc Acc + DD
| ||
| SUB | Вычитание | Acc Acc - DD
| ||
| MUL | Умножение | Acc Acc x DD
| ||
| DIV | Деление | Acc Acc/DD
| ||
| Нет | ||||
| EI | Разрешить прерывание | IF 1
| ||
| DI | Запретить прерывание | IF 0
| ||
| MOV | Пересылка | Rl R2
| ||
| RD | Чтение | Acc R*
| ||
| WR | Запись | R* Acc
| ||
| ADD | Сложение | Acc Acc + R*
| ||
| SUB | Вычитание | Acc Acc - R*
| ||
| MUL | Умножение | Acc Acc x R*
| ||
| DIV | Деление | Acс Acc/R*
| ||
| IN | Ввод | Acс BУ(CR[ADR*])
| ||
| OUT | Вывод | BУ(CR[ADR*]) Асc
| ||
| Нет | ||||
| Нет | ||||
| RDI | Чтение | Асc I
| ||
| Нет | ||||
| ADI | Сложение | Асc Асc + I
| ||
| SBI | Вычитание | Асc Асc -I
| ||
| MULI | Умножение | Асc Асc х I
| ||
| DIVI | Деление | Асc Асс/I
| ||
Дата добавления: 2015-04-07; просмотров: 1287;

IR
0 then PC
0 then PC
99999 then PC