主程序先push参数再call函数,函数内部如何调用参数?
举个例子,参数已存储在ax,bx中,调用函数subfunPUSH AXPUSH BX
CALL subfun
先将AX、BX压栈,然后调用函数。
那么问题来了,call调用函数时,会将CS:IP也压栈,参数不在栈顶,那么函数内部是如何访问主程序传入的参数呢? 直接往寄存器里存就好了啊,call了也可以过去的,不够就开一段内存空间~~~ 怎么约定的就怎么使用啊。如果约定寄存器就用寄存器,如果约定内存就用内存。 本帖最后由 SВ 于 2019-9-25 15:57 编辑
在汇编中,简单点用SP定位函数参数就可以了。在C语言中,在函数中使用更高级的结构“栈帧”,里面是借助BP来定位函数参数的。王爽的《汇编语言》的附注4提到了使用堆栈来传递函数参数的问题。
页:
[1]