徒手拆高达 发表于 2019-9-24 01:01:49

主程序先push参数再call函数,函数内部如何调用参数?

举个例子,参数已存储在ax,bx中,调用函数subfunPUSH AX
PUSH BX
CALL subfun

先将AX、BX压栈,然后调用函数。
那么问题来了,call调用函数时,会将CS:IP也压栈,参数不在栈顶,那么函数内部是如何访问主程序传入的参数呢?

nihility_z 发表于 2019-9-24 19:48:53

直接往寄存器里存就好了啊,call了也可以过去的,不够就开一段内存空间~~~

发表于 2019-9-24 22:58:51

怎么约定的就怎么使用啊。如果约定寄存器就用寄存器,如果约定内存就用内存。

发表于 2019-9-25 15:53:51

本帖最后由 SВ 于 2019-9-25 15:57 编辑

在汇编中,简单点用SP定位函数参数就可以了。在C语言中,在函数中使用更高级的结构“栈帧”,里面是借助BP来定位函数参数的。王爽的《汇编语言》的附注4提到了使用堆栈来传递函数参数的问题。
页: [1]
查看完整版本: 主程序先push参数再call函数,函数内部如何调用参数?