经典汇编语言教程:7.5.9 子程序调用伪指令
3556 点击·0 回帖
![]() | ![]() | |||||||||||||||||||||||||||||||||||||||||||||||||||||
![]() | 子程序调用伪指令INVOKE与子程序的调用指令CALL在功能上是一致的,但它使汇编语言的子程序调用方法高级语言化,程序员可不用理会一些调用细节问题。 调用伪指令INVOKE的使用格式如下: INVOKE expression [, arguments] 其中:expression—地址表达式,通常为子程序名; arguments—传递的各参数之间用逗号','分开,参数可以是寄存器、表达式或ADDR标识符等。 该伪指令是调用基于堆栈的子程序的方法,它把所有参数压栈,子程序结束时,又把参数自动弹出堆栈。 在参数传递时,汇编程序将根据子程序的原型进行数据类型检查。若需要进行参数类型转换的话,汇编程序则会自动生成一段代码来满足其数据类型转换的要求。 例如: INVOKE TEST, AX, 12+34, ADDR MSG 其中:TEST是子程序名,寄存器AX和表达式“12+34”是参数,“ADDRMSG”是传递变量MSG的地址。 例7.6 编写一个累加参数数值的子程序。其中参数的个数不定,参数的个数由第一个参数来确定。 解:
| |||||||||||||||||||||||||||||||||||||||||||||||||||||
![]() | ![]() |