在用汇编语言编程时,程序调用与堆栈如何使用?
答案:4 悬赏:0
解决时间 2021-02-15 23:01
- 提问者网友:浪荡羁士
- 2021-02-15 17:40
在用汇编语言编程时,程序调用与堆栈如何使用?
最佳答案
- 二级知识专家网友:统治我的世界
- 2021-02-15 18:54
汇编许久不用,只能凭印象说下:
程序调用使用 Call
以状态字PSW入栈为例
PUSH PSW
POP PSW
如果不是问语法,或者是汇编的使用技巧,去CSDN论坛 汇编区 提问吧,5分钟内即有回答。
百度的问答范畴太广,没有针对性,呵呵。
程序调用使用 Call
以状态字PSW入栈为例
PUSH PSW
POP PSW
如果不是问语法,或者是汇编的使用技巧,去CSDN论坛 汇编区 提问吧,5分钟内即有回答。
百度的问答范畴太广,没有针对性,呵呵。
全部回答
- 1楼网友:恕我颓废
- 2021-02-15 22:13
程序调用分远程调用和进程调用
先定义函数
PROC (far) aa(程序名)
...
ret // 结束
调用 call (far) aa
作用类似于c中的函数
堆栈push ax
pop ax
因为寄存器有限,而一个程序要多次调用相同的寄存器,所以要将寄存器中的数据入栈保存起来
,等程序结束时再将数据出栈继续之前的程序。
- 2楼网友:甜野猫
- 2021-02-15 21:34
标准c参数压栈次序是反向压栈,也就是从右到左。因为c要把不定参数...放在最右边,为了高效率定位参数,所以只能从右到左压栈,这样第一个参数最靠近栈顶。
比如printf (const char * szformat,...);如果从左到右压不容易找到第一个参数szformat
不过16位操作系统的时候,调用api函数时,微软的vc曾经支持过一种从左到右的压占次序,现在32位系统没有了。
- 3楼网友:颜值超标
- 2021-02-15 20:13
程序调用用call指令,调用的子程序必须已经写在程序里。
系统会自动把子程序的返回地址(即调用程序中call指令的下一条指令的地址)存入堆栈,子程序执行后也会自动把堆栈中存的地址取出。
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯
• 手机登qq时,显示手机磁盘不足,清理后重新登 |
• 刺客的套装怎么选啊? |