什么是子程序
1.子程序是完成特定功能的一段程序
2.当主程序(调用程序)需要执行这个功能的时候,采用call调用指令转移到改子程序的起始处执行
3.当运行万子程序的功能的时候,采用 ret...这里主要介绍call传参,以及使用ret
Call的原理是什么?
...+2
mov bx,[bp+ 4]
add ax,bx
ret
在这里应该注意到了,我们用Call调用的时候,为什么函数内部要+2
原因是当这个子程序执行完毕的时候,需要返回到主程序执行...,所以主程序的下一条指令已经压栈了,所以+2位置,可以取得参数
最后调用ret平栈
当程序遇到ret的时候,做的事情
1....(sp栈顶) = (sp栈顶) + 2
需要注意的是,ret只会把最后压入的返回地址返回,但是参数还没有平栈,只能在调用完毕之后,在返回地址出的下一条指令自己平栈
4.Call的详细调用
mov cx,