русс | укр

Языки программирования

ПаскальСиАссемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование

Все о программировании


Linux Unix Алгоритмические языки Аналоговые и гибридные вычислительные устройства Архитектура микроконтроллеров Введение в разработку распределенных информационных систем Введение в численные методы Дискретная математика Информационное обслуживание пользователей Информация и моделирование в управлении производством Компьютерная графика Математическое и компьютерное моделирование Моделирование Нейрокомпьютеры Проектирование программ диагностики компьютерных систем и сетей Проектирование системных программ Системы счисления Теория статистики Теория оптимизации Уроки AutoCAD 3D Уроки базы данных Access Уроки Orcad Цифровые автоматы Шпаргалки по компьютеру Шпаргалки по программированию Экспертные системы Элементы теории информации

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


Дата добавления: 2015-08-06; просмотров: 878; Нарушение авторских прав


Система команд ОМЭВМ серии К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 - пустая операция.



<== предыдущая лекция | следующая лекция ==>
Порты ввода/вывода | Расширение ресурсов ОМЭВМ


Карта сайта Карта сайта укр


Уроки php mysql Программирование

Онлайн система счисления Калькулятор онлайн обычный Инженерный калькулятор онлайн Замена русских букв на английские для вебмастеров Замена русских букв на английские

Аппаратное и программное обеспечение Графика и компьютерная сфера Интегрированная геоинформационная система Интернет Компьютер Комплектующие компьютера Лекции Методы и средства измерений неэлектрических величин Обслуживание компьютерных и периферийных устройств Операционные системы Параллельное программирование Проектирование электронных средств Периферийные устройства Полезные ресурсы для программистов Программы для программистов Статьи для программистов Cтруктура и организация данных


 


Не нашли то, что искали? Google вам в помощь!

 
 

© life-prog.ru При использовании материалов прямая ссылка на сайт обязательна.

Генерация страницы за: 0.067 сек.