灯火互联
管理员
管理员
  • 注册日期2011-07-27
  • 发帖数41778
  • QQ
  • 火币41290枚
  • 粉丝1086
  • 关注100
  • 终身成就奖
  • 最爱沙发
  • 忠实会员
  • 灌水天才奖
  • 贴图大师奖
  • 原创先锋奖
  • 特殊贡献奖
  • 宣传大使奖
  • 优秀斑竹奖
  • 社区明星
阅读:1963回复:0

子程序的参数传递

楼主#
更多 发布于:2012-09-10 18:56

子程序参数是用来向子程序传递信息的数据。若有多个参数,则参数之间要用逗号分割。为了能说明子程序的参数,程序员必须事先指定参数所遵循的语言类型或使用“语言类型”参数。

参数的数据类型可以是任何一个有效的数据类型说明符或VARARG。VARARG数据类型允许向子程序传递“个数”不定的参数,其参数之间要用逗号“,”来分开。

若参数表中含有VARARG说明的参数,那么,该参数一定是该子程序的最后一个参数。其规定隐含地说明了在参数表中只能有一个用VARARG说明的参数。

当子程序的语言类型是C、SYSCALL和STDCALL时,在其参数表中才能使用VARARG数据类型的参数。见前面的表7.1中所列。

如果没有显式地指定某个参数的数据类型,那么,在16位段规模的情况下,其缺省的数据类型是word;在32位段规模的情况下,其缺省的数据类型是Dword

7.5.8 子程序的原型说明

子程序原型的说明格式如下:

子程序名 PROTO [distance] [langtype] [,[parameter]:tag]...

该说明语句告诉汇编程序该子程序的若干属性,如:位距、语语言类型、参数个数及其类型等。这样,汇编程序就可以对其定义进行适当的检查。

如果对所有基于堆栈的过程都定义一个原型,那么,就可把这些原型存放在一个独立的包含文件(用伪指令INCLDUE来装入)中。使用这种方法对将来把所有子程序放入自定义的库文件中是非常方便的。

该原型说明语句中参数distance、langtype、parameter和tag等的含义与前面的叙述相一致,在此不再重复。

喜欢0 评分0
游客

返回顶部