- 1
- 0
- 约7.74千字
- 约 10页
- 2026-10-22 发布于重庆
- 举报
第四章程序流程控制五、程序调用当一个子程序被调用时,正在指令缓冲单元中译码的指令地址被保存到RETA寄存器或堆栈中,该地址用于返回时继续执行子程序调用前的指令。1.无条件程序调用程序执行到下列指令时就调用子程序。CALLACx:子程序的地址由ACx(23~0)值决定CALLL16:16比特长相对于PC的有符号的偏移量。CALLP24:24比特长的绝对地址。第四章程序流程控制子程序调用过程:(1)在流水线寻址阶段(AD)将数据堆栈(SP)指针减1(字),然后将RETA的低16位压入数据堆栈。(2)在流水线寻址阶段(AD)将系统堆栈(SSP)指针减1(字),然后将RETA的高8位和CFCT(控制流程关系寄存器,8位)的值压入系统堆栈。(3)将调用子程序返回地址(CALL语句的下一条语句的地址)保存到RETA中,当前循环标志保存到CFCT中。(4)将子程序的程序地址装入PC中,清除当前循环关系标志。注意:循环关系指的是当前重复循环的类型和状态记录。第四章程序流程控制2.无条件返回RET;执行无条件返回到主程序。返回过程:(1)RETA中的返回地址装入PC,从CFCT中恢复循环关系标志;(2)从数据堆栈(SP)中恢复RETA的低16位,SP指针加1;(2)从系统堆栈(SSP)恢复R
原创力文档

文档评论(0)