5.4. 子程序或子程序
一个子程序或子程序在一节单独的程序或功能部件的主要程序,可以被调用以执行特定的。子程序可能需要的主要程序或其他如需要多次子程序。当你调用一个子程序执行现行程序停止,程序计数器PC(程序计数器)的子程序装入内存的位置,运行到RET指令(子程序结束),其中生产程序返回到主恢复运行。如C高级语言,基本子程序的名义下被称为功能或程序。
在子程序必须考虑下列因素:
- 履行职能和具体操作上没有自己。
- 总是挂了一个重要方案或其他子程序。
- 可调用的代码需要多次重复使用 ,因为它减少了程序代码的有效果。
- 允许区块划分方案执行的结构功能。提供更大的可视性和理解。
由于良好的意见,建议尽可能分工子程序或分项计划,并减少在主要方案的句子的内容。首先,子程序是必要的程序的一部分时,被执行多次。我们将会使程序更容易,它需要在ROM空间更少。
如果一个子程序是由几条指令,它可能最好还是不要创建它,因为调用和返回机制可能使慢执行指令放在主程序直接。
子程序或子程序中sensamblador
CALL指令
调用子程序。程序计数器被替换的地址继续执行。个人电脑(下当前的位置)的内容存储在堆栈。
迪尔LCALL
1 º
| (PC)=(PC)+3 | 读取指令和程序计数器PC指向下 |
2 º
| (SP)=(SP)+1 | 堆栈保存到程序计数器PC指向下一条指令 |
3 º
| ((SP))=(PC 7-0) |
4 º
| (SP)=(SP)+1 |
5 º
| ((SP))=(PC 15-8) |
6 º
| (PC)= 15-0 addreses | 程序控制转移到指令的地址是在字节2和3中指定的实际CALL指令 |
RET指令
子程序返回。从堆栈检索程序计数器PC和程序继续在以下的子程序调用CALL指令执行。
RET
1 º
| (PC 15-8)=((SP)) | 它检索程序计数器PC的内存堆栈 |
2 º
| (SP)=(SP)-1 | |
3 º
| (PC 7-0)=((SP)) | 程序继续执行的子程序调用时的下一个位置 |
4 º
| (SP)=(SP)-1 | |
嵌套的子程序
嵌套子程序