Ввод из пары регистров в стек


 

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; просмотров: 395;


Поиск по сайту:

Воспользовавшись поиском можно найти нужную информацию на сайте.

Поделитесь с друзьями:

Считаете данную информацию полезной, тогда расскажите друзьям в соц. сетях.
Poznayka.org - Познайка.Орг - 2016-2024 год. Материал предоставляется для ознакомительных и учебных целей.
Генерация страницы за: 0.008 сек.