子程序的参数传递方法

主程序在调用子程序前,必须把这次操作中的加工处理数据传送给子程序,这些加工处理的数据称为输入参数。当执行完返回主程序时,应该把本次操作的最终结果传递给主程序,这些加工处理的结果称为输出参数。我们把主程序传递输入参数和子程序传递输出参数的过程称为主、子程序间的参数传递。如何来实现输入输出参数的传递,就成了子程序设计中的一个重要问题。

     通常进行主程序和子程序间参数传递的方法有三种:用寄存器传递、用堆栈传递和用存储器传递。上述三种传递参数的方法有时还可以用几种方法的组合向子程序传递输入参数,或再用另外的方法向主程序传递输出参数。特别是在传递参数比较多的情况下,可以通过传递输入输出参数在内存的首地址来实现逐一参数的传递。下面我们将分别介绍三种参数传递方法的具体实现。

    1.用寄存器传递参数

    这种方法是将子程序的输入参数由主程序放入规定的寄存器带入子程序中。执行子程序后的结果也放入规定的寄存器带回主程序,采用该方法设计子程序时,主、子程序必须按约定在指定的寄存器中取出或存入指定参数。通常某个寄存器可以用作存放输入参数的寄存器,又同时可以用作存放输出参数的寄存器。

    2.用堆栈传递参数

     利用堆栈不仅可用来保存返回地址,而且还可以用来存放主程序和子程序之间传递的参数,这些参数既可以是数据,也可以是地址。用堆栈传递参数的方法是在调用子程序之前,用PUSH指令将输入参数压入堆栈,在子程序中通过出栈方式依次获得这些参数。经过子程序操作处理后再将输出参数压入堆栈,返回主程序后再通过出栈获得结果。使用这种方式传递参数时,特别要注意堆栈中断点的保存与恢复。

      3.用存储单元传递参数

还有一种传递较多参数的方法是在内存中使用一个存储区来保存和传递主、子程序间的参数。主程序在调用前将所有输入参数按约定好的次序存入该存储区,进入子程序后按约定从存储区中取出输入参数进行处理,输出参数也按约定大次序存入指定的次序存入指定存储区。返回主程序后就可取得结果。通常我们还可以通过用寄存器存放存储区首址,来实现多参数情况下的传递。现在我们通过下面的例子来进行讨论。

  • 3
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值