Микропроцессор Intel 8080 имеет в своей системе команд четыре команды записи в стек как показано в таблице 1.
Все команды таблицы 1 однотипны и осуществляют пересылку двухбайтного слова из регистровых пар микропроцессора в ОЗУ, адресуемое при этих операциях указателем стека SP. Специфической парой регистров является аккумулятор А и регистр признаков F, совместное содержимое которых называется словом состояния программы (PSW).
Таблица 1 – Команды записи в стек
№
Мнемокод команд
Код
команды
Выполняемые операции
PUSH BC
C5H
M<(sp)-1> (B); M<(sp)-2> (C); SP (SP)-2
PUSH DE
D5H
M<(sp)-1> (D); M<(sp)-2> (E); SP (SP)-2
PUSH HL
E5H
M<(sp)-1> (H); M<(sp)-2> (L); SP (SP)-2
PUSH PSW
F5H
M<(sp)-1> (A); M<(sp)-2> (F); SP (SP)-2
Примечания:
1. В таблице 1 и далее запись (имя регистра) означает содержимое регистра с указанным именем.
Пример: (F) – содержимое регистра признаков F.
2. В таблице 1 и далее запись < > означает адрес.
Пример: M <(sp)-1> – ячейка памяти с адресом, равным исходному SP, уменьшенному на единицу.
Важно понять и запомнить основные механизмы записи в стек:
– старший байт слова (соответственно содержимое регистров В, D, H, A для команд таблицы 1) пересылается в ОЗУ по старшему адресу <(sp)-1>, где (sp) – содержимое указателя стека SP до выполнения команды;
– младший байт слова (соответственно содержимое регистров C, E, L, F для команд таблицы 1) пересылается в ОЗУ по младшему адресу <(sp)-2>, где (sp) – содержимое указателя стека SP до выполнения команды;
– по окончании выполнения команды содержимое указателя стека увеличивается на 2 по отношению к исходному содержимому.
Графическая интерпретация функционирования команд PUSH представлена на рисунке 1 (на примере команды PUSH BC).
Как видно из рисунка 1 и рисунка 2 работа стека при записи напоминает укладку листов в пачку. При этом листы (байты) как бы укладываются парами поверх пачки, а указатель стека хранит номер (адрес) последнего из уложенных листов (байтов).
Рисунок 1. – Состояние МП и ОЗУ до выполнения команды PUSH BC:
X – произвольное содержимое
Рисунок 2. – Состояние МП и ОЗУ после выполнения команды PUSH BC: