Команды ввода/вывода, управления, работы со стеком
Команды этой группы выполняют операции ввода/вывода, изменяют содержимое стека и состояние флагов.
Регистр флагов
D7 | D6 | D5 | D4 | D3 | D2 | D1 | D0 |
S | Z | X | AC | X | P | X | CY |
X – безразлично
PUSH rp (ЗАСЫЛКА В СТЕК СОДЕРЖИМОГО ПАРЫ РЕГИСТРОВ)
((SP) – 1 (rh)
((SP) – 2 (rl)
(SP) (SP) – 2
Содержимое старшего регистра пары регистров rp пересылается в ячейку памяти, адрес которой на 1 меньше содержимого указателя стека SP. Содержимое младшего регистра пары регистров rp пересылается в ячейку памяти, адрес которой на 2 меньше содержимого указателя стека. Содержимое указателя стека уменьшается на 2.
Примечание. Пара регистров rp=SP не может быть указана в команде.
R | P |
PUSH | B | C5 | (заслать пару регистров B и C) |
PUSH | D | D5 | (заслать пару регистров D и E) |
PUSH | H | E5 | (заслать пару регистров H и L) |
Циклы: 3. Состояния: 12. Адресация: косвенная регистровая. Флаги: нет.
PUSH PSW (ЗАСЛАТЬ В СТЕК СЛОВО СОСТОЯНИЯ ПРОГРАММЫ)
((SP) – 1) (A)
((SP) – 2)0 (CY), ((SP) – 2)1 X
((SP) – 2)2 (P), ((SP) – 2)3 X
((SP) – 2)4 (AC), ((SP) – 2)5 X
((SP) – 2)6 (Z), ((SP) – 2)7 (S)
(SP) (SP) – 2
X – безразлично
Содержимое аккумулятора пересылается в ячейку памяти, адрес которой на 1 меньше содержимого указателя стека SP. Содержимое флагов объединяется в слово состояния, и это слово пересылается в ячейку памяти, адрес которой на 2 меньше содержимого указателя стека. Содержимое указателя стека уменьшается на 2.
PUSH | PSW | F5 |
Циклы: 3. Состояния: 12. Адресация: косвенная регистровая. Флаги: нет.
POP rp (СЧИТАТЬ ИЗ СТЕКА СОДЕРЖИМОЕ ПАРЫ РЕГИСТРОВ)
(rl) ((SP))
(rh) ((SP) + 1)
(SP) (SP) + 2
Содержимое ячейки памяти, адрес которой определяется содержимым указателя стека SP, пересылается в младший регистр пары регистров rp. Содержимое ячейки памяти, адрес которой на 1 больше содержимого указателя стека, пересылается в старший регистр пары регистров rp. Содержимое указателя стека увеличивается на 2.
Примечание. В команде не может быть указана пара регистров rp=SP.
R | P |
POP | B | C1 | (считать из СТЕКА пару регистров B и C) |
POP | D | D1 | (считать из СТЕКА пару регистров D и E) |
POP | H | E1 | (считать из СТЕКА пару регистров H и L) |
Циклы: 3. Состояния: 10. Адресация: косвенная регистровая. Флаги: нет.
POP PSW (СЧИТАТЬ ИЗ СТЕКА СЛОВО СОСТОЯНИЯ ПРОГРАММЫ)
(CY) ((SP))0
(P) ((SP))2
(AC) ((SP))4
(Z) ((SP))6
(S) ((SP))7
(A) ((SP)) + 1)
(SP) (SP) + 2
Содержимое ячейки памяти, адрес которой определяется содержимым указателя стека SP, используется для восстановления состояния флагов. Содержимое ячейки памяти, адрес которой на 1 больше содержимого указателя стека, переключается в аккумулятор. Содержимое указателя стека увеличивается на 2.
POP | PSW | F1 |
Циклы: 3. Состояния: 10. Адресация: косвенная регистровая. Флаги: Z, S, P, CY, AC.
XTHL (ОБМЕН СОДЕРЖИМОГО ВЕРШИНЫ СТЕКА И СОДЕРЖИМОГО РЕГИСТРОВ H И L)
(L) <-> ((SP))
(H) <-> ((SP) + 1)
Содержимое регистра L обменивается на содержимое ячейки памяти, адрес которой содержится в указателе стека SP. Содержимое регистра H обменивается на содержимое ячейки памяти, адрес которой на 1 больше содержимого указателя стека.
XTHL | E3 |
Циклы: 5. Состояния: 16. Адресация: косвенная регистровая. Флаги: нет.
SPHL (ПЕРЕСЫЛКА СОДЕРЖИМОГО РЕГИСТРОВ H И L В УКАЗАТЕЛЬ СТЕКА)
(SP) <-> (H)(L)
Содержимое регистров H и L (16 бит) пересылается в указатель стека.
SPHL | F9 |
Циклы: 1. Состояния: 6. Адресация: регистровая. Флаги: нет.
IN порт (ВВОД)
/A/ (Данные)
Данные (1 байт), имеющиеся на восьми линиях двунаправленной шины данных указанного порта, пересылаются в аккумулятор.
Порт |
IN | порт | DB |
Циклы: 3. Состояния: 10. Адресация: прямая. Флаги: нет.
OUT порт (ВЫВОД)
(Данные) (A)
Содержимое аккумулятора помещается на двунаправленную шину данных для передачи в указанный порт.
Порт |
OUT | порт | D3 |
Циклы: 3. Состояния: 10. Адресация: прямая. Флаги: нет.
EI (РАЗРЕШЕНИЕ ПРЕРЫВАНИЙ)
Система прерываний разрешается при исполнении следующей команды.
EI | FB |
Циклы: 1. Состояния: 4. Флаги: нет.
Примечание. Прерывания не распознаются во время исполнения команды EI.
DI (ЗАПРЕШЕНИЕ ПРЕРЫВАНИЙ)
Система прерываний запрещается непосредственно при выполнении следующей за DI командой.
DI | FB |
Циклы: 1. Состояния: 4. Флаги: нет.
Примечание. Прерывания не распознаются во время исполнения команды.
HLT (ОСТАНОВ)
В PC заносится адрес следующей команды. Процессор затем бездействует до прихода прерывания. Регистры и флаги не изменяют состояния.
HLT |
Циклы: 1. Состояния: 5. Флаги: нет.
NOP (НЕТ ОПЕРАЦИИ)
В PC заносится адрес следующей команды, и микропроцессор переходит к ее обработке. Состояние флагов и регистров не изменяется.
NOP |
Циклы: 1. Состояния: 4. Флаги: нет.
Практикум
ТАРАКАНОВ Алексей Валерьевич