Система команд ОМЭВМ

Система команд ОМЭВМ серии К1816 ориентирована на эффективную реализацию процедур управления : маскированный ввод/вывод, логические операции, операции с битами, большое число команд условных переходов, арифметические операции в двоичном и десятичном кодах.

Программно-доступными объектами в составе ОМЭВМ серии К1816 являются: регистр - аккумулятор А, таймер/счетчик Т, порты ввода/вывода P0..P2,P4..P7, регистр PSW, два банка по восемь регистров R0..R7,R0'..R7 и 64 ячейки внутренней памяти данных - с адресами 00H..3FH. Кроме того, по специальной команде MOVX может быть доступна внешняя память данных с адресами 00H..FFH.

При программировании следует иметь в виду, что в качестве регистров (банк 0) R0..R7 используются ячейки внутренней памяти данных с адресами 00H..07H соответственно, а в качестве R0..R7' (банк 1) - ячейки 18H..20H. В ОМЭВМ серии К1816 предусмотрен 8-уровневый стек, в который автоматически (по команде CALL или в процедуре прерываний) загружается 12-разрядный программный счетчик PC и 4 флажка признаков. Таким образом, один уровень стека занимает два байта. Под стек используются регистры внутренней памяти данных с адресами 08H..17H, указатель стека младшие три бита регистра PSW.

В системе команд ОМЭВМ серии К1816 используются прямая, косвенная и непосредственная адресация. По прямому адресу можно обращаться к аккумулятору А, таймеру/счетчику Т, регистру PSW, портам ввода/вывода P0..P2,P4..P7 и регистрам R0..R7,R0'..R7. Примеры команд с прямой адресацией: ADD A,R3; MOV T,A; MOV A,PSW; IN A,P1;

Косвенно можно адресоваться к ячейкам памяти данных через регистры R0,R1 текущего банка, например:

MOV A,@R0 - чтение в аккумулятор содержимого ячейки внутреннего ОЗУ данных, адрес которой хранится в R0;

INC @R1 - добавление 1 к содержимому ячейки внутреннего ОЗУ данных, адрес которой хранится в R1;

MOVX A,@R0 - чтение в аккумулятор содержимого ячейки внешнего ОЗУ данных, адрес которой хранится в R0;

MOVX @R0,A - запись содержимого аккумулятора в ячейку внешнего ОЗУ данных, адрес которой хранится в R0;

Двухбайтовые команды с непосредственной адресацией позволяют загружать константу, содержащуюся во втором байте в регистры или косвенно адресуемые ячейки внутреннего ОЗУ или задавать второй операнд в двухместных арифметических и логических операциях, например:

MOV A,#5E; MOV R6,#40; MOV @R4,#77; ANL A,#08;

По типу операций можно выделить следующие классы команд: пересылки и загрузки, включая и команды обращения к портам ввода/вывода; арифметические и логические; передачи управления; специальные команды.

Класс команд пересылки и загрузки представлен главным образом разновидностями команд MOV, обеспечивающих пересылку информации между регистрами, ячейками внутренней памяти данных, аккумулятором, таймером, регистром PSW, а так же загрузку перечисленных объектов константами. Две команды позволяют считывать в аккумулятор А содержимое ячеек памяти программ:

MOV А,@А - считывает с текущей страницы содержимое ячейки памяти программ, косвенно адресуемой через аккумулятор: А:= ЗУ Прг(PC(11:8).А(7:0));

MOVP3 А,@А - считывает с третьей страницы содержимое ячейки памяти программ, косвенно адресуемой через аккумулятор: А:= ЗУ Прг(0011.А(7:0));

Команды обмена XCH меняют местами содержимое аккумулятора и регистра или косвенно адресуемой ячейки памяти. Команды XCHD меняют местами только младшие тетрады аккумулятора и ячейки памяти, при этом старшие тетрады остаются неизменными.

Команда SWAP А меняет местами старшую и младшую тетрады в аккумуляторе.

Чтение в аккумулятор содержимого портов P0..P2 осуществляется по командам IN А,P..; запись содержимого аккумулятора в порт P0..P2 - командами OUTL P..,А.

Для работы с четырехразрядными портами P4..P7 используют команды MOVD А,P..; MOVD P..,А, причем в обмене участвует только младшая тетрада.

Арифметические и логические команды делятся на одноместные и двухместные. В двухместных командах первый операнд размещается в аккумуляторе, туда же помещается результат. Второй операнд может адресоваться разными способами, например:

ADD A,R7; ADDC A,@R1; ANL A,#0F;

К двухместным операциям данного класса в ОМЭВМ К1816ВЕ35 относятся:

* ADD - сложение;

* ADDC - сложение с переносом;

* ANL - конъюнкция;

* ORL - дизъюнкция;

* XRL - сумма по модулю два (исключающее ИЛИ).

Следует обратить внимание, что в системе команд отсутствует команда вычитания!

Логические операции с непосредственной адресацией могут выполняться и над содержимым портов P0,P1,P2:

* ANL Pp,#D : Pp := Pp & #D;

* ORL Pp,#D : Pp := Pp Ú #D; Pp = [0,1,2].

Для четырехразрядных портов P3..P7 возможно выполнение логических операций с младшей тетрадой аккумулятора A[3:0]:

* ANLD Pq,A : Pq := Pq & A[3:0];

* ORLD Pq,A : Pq := Pq ÚA[3:0]; Pq = [4,5,6,7].

Одноместные операции включают:

* DAA - десятичная коррекция аккумулятора;

* CLR A; CPL A - очистка аккумулятора; инверсия аккумулятора;

* INC A; INC R; INC @R - инкремент содержимого аккумулятора, регистра, ячейки памяти;

* DEC A; DEC R -декремент содержимого аккумулятора или регистра;

* RL A; RR A - циклический сдвиг аккумулятора влево и вправо;

* RLC A; RRC A - циклический сдвиг аккумулятора влево и вправо через триггер флага переноса;

Действия команд сдвигов описываются следующими выражениями:

* RL A: A[7:0] := A[6:0].A[7]; FC := A[7]

* RR A: A[7:0] := A[0].A[7:1]; FC := A[0]

* RLC A: FC.A[7:0] := A[7].A[6:0].FC;

* RLC A: FC.A[7:0] := A[0].FC.A[7:1];

Группа команд передачи управления включает команды безусловного и условных переходов, команду безусловного вызова подпрограммы и две команды безусловного возврата.

Все команды переходов являются двухбайтовыми, причем только команда безусловного перехода JMP позволяет осуществить т.н. "длинный" переход - в пределах всей памяти программ. Остальные команды организуют переход в пределах текущей страницы (старшие 4 бита программного счетчика не меняются). Среди них:

* JMPP @A - безусловный переход по косвенному адресу PC[7:0] := A;

* JC/JNC - условные переходы по переносу/отсутствию переноса;

* JZ/JNZ - условные переходы по нулю/не нулю аккумулятора;

* JT0/JNT0 - условные переходы по состоянию входа T0;

* JT0/JNT1 - условные переходы по состоянию входа T1;

* JF0,JF1 - условные переходы по единичному значению флагов пользователя;

* JTF - условный переход по переполнению таймера;

* JNI - условный переход, если сигнал на входе запроса на внешнее прерывание INT = 0;

* JBb - условный переход по единичному значению заданного бита аккумулятора;

К командам передачи управления может быть отнесена команда организации цикла DJNZ Ri,a; где Ri - номер регистра (R0..R7), a - смещение на странице. Команда декрементирует содержимое заданного регистра и, если результат не равен нулю, осуществляется переход.

Команда безусловного вызова подпрограммы CALL позволяет вызвать подпрограмму из любой области памяти программ - она, подобно JMP, загружает все 12 разрядов PC. Предварительно старое значение PC вместе с PSW(7:4)(флаги) загружается в стек.

Во внутреннем языке К1816ВЕ35 существуют две команды безусловного возврата:

* RET - восстанавливает PC, не меняя PSW;

* RETR - восстанавливает PC и PSW[7:4].

Специальные команды можно, в свою очередь, разбить на несколько групп.

Команды управления таймером/счетчиком:

* STRT T - запуск таймера;

* STRT CNT - запуск счетчика внешних событий;

* STOP TCNT- останов таймера/счетчика.

Команды управления подсистемой прерываний:

* EN TSNTI - разрешить прерывание от таймера/счетчика;

* DIS TSNTI - запретить прерывание от таймера/счетчика;

* EN I - разрешить внешнее прерывание;

* DIS I - запретить внешнее прерывание.

Команды выбора блоков памяти:

* SEL RB0 - выбор банка регистров 0;

* SEL RB1 - выбор банка регистров 1;

* SEL RB0 - выбор блока 0 памяти программ;

Команды управления флагами:

* CLR C; CLR F0; CLR F1 - очистка признаков переноса и флажков пользователя;

* CPL C; CPL F0; CPL F1 - инверсия признаков переноса и флажков пользователя;

Прочие команды:

* ENT0 CLK - разрешение выдачи сигнала синхронизации на вывод T0; NOP - пустая операция.








Дата добавления: 2019-02-07; просмотров: 257;


Поиск по сайту:

При помощи поиска вы сможете найти нужную вам информацию.

Поделитесь с друзьями:

Если вам перенёс пользу информационный материал, или помог в учебе – поделитесь этим сайтом с друзьями и знакомыми.
helpiks.org - Хелпикс.Орг - 2014-2024 год. Материал сайта представляется для ознакомительного и учебного использования. | Поддержка
Генерация страницы за: 0.015 сек.