PROTO 之函数的使用

来源:互联网 发布:linux日常维护脚本 编辑:程序博客网 时间:2024/05/21 11:07
;*********************************************************************TITLE 使用函数声明交换两个整数;*********************************************************************;*********************************************************************;程序运行平台说明.386.MODEL FLAT,STDCALLOPTION CASEMAP:NONE;*********************************************************************;*********************************************************************;文件包含INCLUDE Irvine32.inc;*********************************************************************;*********************************************************************;数据段定义.DATAarrayTmp DWORD 1110H,2012HarrayLength DWORD ($-arrayTmp)/TYPE DWORD;*********************************************************************;*********************************************************************;函数声明SwapInteger PROTO,pVal:PTR DWORD;*********************************************************************;*********************************************************************;代码段定义.CODE;++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++;函数描述:交换arrayTmp中的前两个数字;函数参数:pVal,要交换数组的首地址SwapInteger proc uses edx,pVal:PTR DWORD   mov esi,pVal;   mov edx,[esi];   xchg edx,[esi+4];   mov [esi],edx      ret 8SwapInteger endp;++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++main proc   invoke SwapInteger ,offset arrayTmp   mov esi,offset arrayTmp;   mov eax,[esi];   call WriteHex   call Crlf   mov eax,[esi+4]   call WriteHex   exitmain endpend main;*********************************************************************

这里要注意的是函数的声明是独立出来的,不在代码段当中,或者说他是和代码段地位平等的

还有就是利用invoke 调用的函数如果定义在调用之前,则可以不使用PROTO,但如果是调用在前,定义在后,则必须使用PROTO来进行函数声明,这是和高级语言一样的


原创粉丝点击