;Swap过程实例 (Swap.asm)
include irvine32.inc
Swap PROTO,pValX:PTR DWORD,pValY:PTR DWORD ;这里类似于C++中函数原型的声明,他的意思是Swap函数的参数是质量两个DWORD类型数字的指针
.data
Array DWORD 10000h,20000h
.code
main PROC
;显示交换前的数组
mov esi,OFFSET array ;
mov ecx,2 ;计数值=2
mov ebx,TYPE Array ;
call DumpMem ;显示数组 这个函数的参数 是由esi ecx ebx构成 ecx是单元中元素的个数,esi 数组存放区域的首地址,ebx是每一个数组元素单元的大小
invoke Swap,ADDR Array,ADDR [Array+4] ;
;显示交换之后的数组
call DumpMem ;
call WaitMsg ;
exit ;
main ENDP ;
;--------------------------------------------
Swap PROC USES eax esi edi,
pValX:PTR DWORD, ;第一个整数的指针
pValY:PTR DWORD ;第二个整数的指针
;
;交换两个32位整数的值
;返回:无
;--------------------------------------------
mov esi,pValX ;获得指针
mov edi,pValY ;
mov eax,[esi] ;取第一个数的值
xchg eax,[edi] ;交换两个数的值
mov [esi],eax ;替换第一个整数
ret ;由于PROC带有参数,汇编器会在这里的ret 后面自动加上8
Swap ENDP
END main