Главная | Обратная связь | Поможем написать вашу работу!
МегаЛекции

Тема 5.2 Команды организации подпрограмм. Возврат значений. Рекурсивные подпрограммы и сопрограммы.




Тема 5. 2 Команды организации подпрограмм. Возврат значений. Рекурсивные подпрограммы и сопрограммы.

 

а) Вызов подпрограммы безусловный

CALL Адрес [SP-1] [SP-2] (PC) < B1> CD
  SP (SP) -2 < B2> Мл. байт адреса
  PC < B3> < B2> < B3> Ст. байт адреса

7 0

При выполнении этой команды никаких проверок не производится, т. е. вызов подпрограммы производится в любом случае. Команда занимает три байта u выполняется за 5 машинных циклов (17 тактов).

б) Условный вызов подпрограммы

Переход к подпрограмме происходит только в том случае, если выполняется проверяемое условие. При этом:

[SP-1] [SP-2] (PC); SP (SP) –2; PC < B3> < B2>

В этом случае команда выполняется за 5 циклов (17 тактов).

Если проверяемое условие не выполняется, то переход к подпрограмме не происходит и выполняется следующая команда программы с адресом PC = (PC) +3. В этом случае команда выполняется за 3 цикла (11 тактов).

 

 

Формат команды условного вызова < B1>   ССС  
< B2> Мл. байт адреса      
< B3> Ст. байт адреса      

7 0

 

Значение разрядов ССС выбирается в зависимости от проверяемого условия:

 

Команда вызова Проверяемое условие Значение ССС
СNZ Адрес (Tz) = 0  
СZ Адрес (Tz) = 1  
СNC Адрес (Tc) = 0  
СC Адрес (Tc) = 1  
СPO Адрес (Tp) = 0  
СPE Адрес (Tp) = 1  
СP Адрес (Ts) = 0  
СM Адрес (Ts) = 1  

 

в) Возврат из подпрограммы безусловный

RET PC [SP] [SP+1]; SP (SP) + 2 B1 C9

7 0

Команда выполняется за три машинных цикла (10 тактов).

г) Возврат из подпрограммы условный

Команда условного возврата из подпрограммы < B1>   CCC  

7 0

 

 

Запустите свой курс на платформе за 30 минут!

Если проверяемое условие выполняется, тоPC [SP] [SP-1]; SP (SP) + 2 и происходит выход из подпрограммы в точку, адрес которой записан в стеке. В этом случае команда выполняется за три машинных цикла (11 тактов). Если это условие не выполняется, то возврата не происходит и выполняется следующая команда подпрограммы, т. е.

PC = (PC) + 1

В этом случае команда выполняется в течение одного машин­ного цикла (5 тактов).

Значение разрядов ССС команды определяется проверяемым условием:

Команда возврата Проверяемое условие Значение ССС
RNZ (Tz) = 0  
RZ (Tz) = 1  
RNC (Tc) = 0  
RC (Tc) = 1  
RPO (Tp) = 0  
RPE (Tp) = 1  
RP (Ts) = 0  
RM (Ts) = 1  

 

При выполнении команд возврата (в и г) МП извлекает из стека значение программного счетчика, при котором произошел переход из программы предыдущего уровня и загружает это значе­ние в счетчик команд. Команде " возврат из подпрограммы" ничего не сообщается относительно того, какого уровня вложения выполняется подпрограмма и сколько раз происходил вызов этой подпрограммы. Выполняя эту команду МП просто возвращается к тому значению программного счетчика, которое было последним загружено в стек.

Примеры:

0AF3) CALL BEEP

BEEP: 0BC0)

Адрес/регистр Код до выполнения операции Код после выполнения операции
0AF3 CD CD
0AF4 C0 C0
0AF5 0B 0B
PC 0AF3 0BC0
SP 0BB0 0BAE
0BAE   F6
0BAF   0A
FL    

 

0BD4) RET

Адрес/регистр Код до выполнения операции Код после выполнения операции
0BD4 C9 C9
SP 0BAE 0BB0
0BAE F6 F6
0BAF 0A 0A
PC 0BD4 0AF6
FL    

0A12) CPO L1

L1: 0AFE)

Адрес/регистр Код до выполнения операции Код после выполнения операции
0A12 E4 E4
0A13 FE FE
0A14 0A 0A
SP 0BAE 0BAC
0BAD    
0BAC   0A
PC 0A12 0AFE
FL 02 (TP=0)  

 

0800) CP L1

L1: 0C54)

Адрес/регистр Код до выполнения операции Код после выполнения операции
  F4 F4
     
  0C 0C
SP 0BAC 0BAC
PC    
FL 12 (TS=1)  

 

3456) CC M0

M0: 0807)

Адрес/регистр Код до выполнения операции Код после выполнения операции
  DC DC
     
     
SP 0BB0 OBAE
0BAF    
0BAE    
PC    
FL 03 (TC=1)  

Контрольные вопросы и задания

1. Объясните назначение команд переходов.

2. В чем состоят различия в работе команд переходов и вызова подпрограмм?

3. Какую длину имеют команды вызова и возврата из подпрограмм и почему?

 

 

Запустите свой курс на платформе за 30 минут!

4. На какие группы делятся команды переходов и работы с подпрограммами?

5. Какой или какие флаги не используются в командах переходов и работы с подпрограммами?

6. Как изменяются стек и SP при выполнении команды CALL?

7. Как изменяются стек и SP при выполнении команды RET?

8. Как изменяется PC, если проверяемое условие в команде условного вызова подпрограммы не выполняется?

9. Как изменяется PC, если проверяемое условие в команде условного возврата из подпрограммы не выполняется?

10. Найдите ошибку в данной программе:

 

0800) CALL L0

RST1

L0: 0900) CMA

PUSH PSW

RET

 

Поделиться:





Воспользуйтесь поиском по сайту:



©2015 - 2024 megalektsii.ru Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...