Команды ввода/вывода, управления, работы со стеком

Команды этой группы выполняют операции ввода/вывода, изменяют содержимое стека и состояние флагов.

Регистр флагов

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. Флаги: нет.

Практикум

ТАРАКАНОВ Алексей Валерьевич

Наши рекомендации