049.交换32bitDWORD数组的首元素以及末元素

本文介绍了一个使用汇编语言实现的32位整数交换过程。通过定义函数原型,利用指针参数操作内存中的整数,实现了两数的值交换,并展示了如何在程序中调用该函数及前后数组状态的对比。
;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
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值