Ввод из пары регистров в стек
| 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 |
Дата добавления: 2016-05-11; просмотров: 1531;
