Ввод из пары регистров в стек
PUSH ri | <B1> | ri |
7 0
ri –код старшего регистра пары (B, D, H).
[SP-1] ( ri); [SP-2] (ri+1); SP (SP)-2.
По этой команде содержимое указателя стека (SP) автоматически уменьшается на 1 и в ячейку памяти, адрес которой равен [SP-1]запишется содержимое старшего регистра пары РОН. Затем содержимое указателя стека еще раз уменьшится на 1 и в соседнюю ячейку памяти с адресом [SP-2] запишется содержимое младшего регистра выбранной пары РОН. После второго уменьшения содержимое указателя стека останется без изменения до следующего обращения к нему. Для пар регистров ВС, DE, HL старшими являются регистры В, D, H. Содержимое регистра признаков не меняется. Выполняется за 3 цикла (11 тактов).
Пример:
BE) PUSH D
Адрес/регистр | Код до выполнения операции | Код после выполнения операции |
01BE | D5 | D5 |
SP | 0BB0 | 0BAE |
0BAE | ||
0BAF | ||
D | 6E | |
E | 6E | 6E |
PC | 01BE | 01BF |
A) PUSH H
Адрес/регистр | Код до выполнения операции | Код после выполнения операции |
080A | E5 | E5 |
SP | 0BAE | 0BAC |
0BAC | A5 | |
0BAD | FC | |
H | FC | FC |
L | A5 | A5 |
FL | ||
PC | 080A | 080B |
Ввод А и F в стек
PUSH PSW | <B1> | F5 |
[SP-1] (A); [SP-2] (F); SP (SP)-27 0
По этой команде содержимое указателя стека (SP) автоматически уменьшается на 1 и в ячейку памяти с адресом [SP-1] записывается содержимое аккумулятора (А). Затем содержимое указателя стека вновь уменьшается на 1 и является адресом ячейки памяти [SP-2], куда записывается содержимое регистра признаков (F). После этого содержимое указателя стека не меняется до очередного обращения к нему.
Команды 2.5 и 2.6 используются при входе в подпрограмму, когда необходимо сохранить содержимое некоторых регистров.
Команда выполняется за три цикла (11 тактов). При этом содержимое регистра признаков не меняется.
Примеры:
A1) PUSH PSW
Адрес | Код до выполнения операции | Код после выполнения операции |
02A1 | F5 | F5 |
A | ||
FL | ||
SP | FF09 | FF07 |
FF07 | XX | |
FF08 | XX | |
PC | 02A1 | 02A2 |
B) PUSH PSW
Адрес | Код до выполнения операции | Код после выполнения операции |
080B | F5 | F5 |
A | A6 | A6 |
FL | ||
SP | 0BAC | 0BAA |
0BAA | ||
0BAB | A6 | |
PC | 080B | 080C |
Выбор из стека пары регистров
POP ri | <B1> | ri |
ri –код старшего регистра пары (B, D, H) 7 0
ri+1 [(SP)]; ri [(SP)+1]; SP (SP)+2
Эта команда по действию обратна команде 2.5. При ее выполнении содержимое ячейки памяти, адрес которой записан в указателе стека (SP), перепишется в младший регистр пары РОН (C, E, L). После этого содержимое указателя стека увеличивается на 1 и из ячейки памяти с полученным адресом переписывается содержимое в старший регистр пары РОН (B, D, H). Затем содержимое указателя стека вновь увеличивается на 1 и остается таким до следующего обращения к нему. Данная команда выполняется за 3 цикла (10 тактов). При ее выполнении содержимое регистра признаков не меняется.
Примеры:
C9) POP D
Адрес/регистр | Код до выполнения операции | Код после выполнения операции |
01C9 | D1 | D1 |
SP | 0BAE | 0BB0 |
0BAE | 6E | 6E |
0BAF | ||
D | ||
E | 6D | 6E |
PC | 01C9 | 01CA |
C) POP B
Адрес/регистр | Код до выполнения операции | Код после выполнения операции |
080C | C1 | C1 |
SP | 0BAA | 0BAC |
0BAA | ||
0BAB | A6 | A6 |
B | A6 | |
C | 2A | |
PC | 080C | 080D |
FL |
Дата добавления: 2021-02-19; просмотров: 399;