Форматы команд
Большинство команд учебной микроЭВМ являются одноадресными или безадресными длиной в 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; просмотров: 1164;