Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1400672
  • 博文数量: 416
  • 博客积分: 13005
  • 博客等级: 上将
  • 技术积分: 3297
  • 用 户 组: 普通用户
  • 注册时间: 2006-04-05 16:26
文章分类

全部博文(416)

文章存档

2014年(1)

2013年(4)

2012年(46)

2011年(64)

2010年(12)

2009年(4)

2008年(40)

2007年(187)

2006年(58)

分类: WINDOWS

2007-10-24 14:04:53

例二:设有下列Pascal函数

function PasFunc(i,j,k:integer):integer;

begin

PasFunc:=i+j+k;

end;

以及语句

m:=PasFunc(2,n,m)

设过程类型为FAR,整数integer4个字节,则等价的汇编语言代码如下(适用于80386及以上CPU)。

(1)       函数PasFunc

PasFunc_rtn

equ 20[ebp]

PasFunc_i

equ 16[ebp]

PasFunc_j

equ 12[ebp]

PasFunc_k

equ 8[ebp]

PasFunc proc far

push ebp

mov ebp,esp

push eax

mov eax,PasFunc_i

add eax,PasFunc_j

add eax,PasFunc_k

mov PasFunc_rtn,eax

pop eax

pop ebp

ret 12

PasFunc endp

(2)  语句m:=PasFunc(2,n,m)

push eax

;预留返回结果的堆栈空间

mov eax,2

push eax

push n

;nmDD定义的变量

push m

call PasFunc

pop eax

;取返回结果

 

参考:PB编程语言为POWERSCRIPT)中的三种参数传递方式:

(1)       值传递(By Value):传递给函数的参数是原变量的一个拷贝,在函数体内对函数的修改之影响参数本身,不影响原变量的值。。如声明函数byvalue(integer age) return(null)的参数age采用默认的值传递方式。

(2)       址传递(By Reference):这种传递方式是将原变量的指针传递给函数或事件,在函数或事件中对该参数的修改事实上是对原变量的修改。如声明函数byreference(ref integer age) return(null)的参数age采用址传递方法。

(3)       只读传递(Read Only):在函数或事件中可以访问到原变量,原变量当作常量,对原变量的任何修改都是不允许的。只读传递对于某些数据类型的变量来说,可以提高系统的性能,因为在参数传递过程中,系统并不创建原变量的拷贝。这些变量类型为:stringblobdatetimedatetime。如声明函数byreadonly(readonly integer age) return(null)的参数age采用只读传递方法。

阅读(1493) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~