S3C2440冒泡排序(汇编)

	AREA TEST2,CODE,READONLY
	ENTRY
	CODE32
		;把随机的十个数安从小到大的顺序排序,并存放在目标内存单元中
		;R0,R1用于循环计数
		;R2,存放Src首地址/R3,存放R2所指向的Src中的值
		;R4,存放Src+i*4的地址/R5,存放Src+i*4的地址内的值 其中: i*4为偏移量
		;R6,R7 用于完成R4,R5的i*4偏移量
		;R8-R11用于 Src数据转存Dst
START
			MOV R0,#0			;外循环次数
			MOV R1,#9			;内循环次数
			MOV R7,#4			;无意义就是数字4,用来做乘法操作
			MOV R11,#10			;用于Src转移Dst数据次数


			
LOOPOUT		SUB R9,R1,R0		;内循环次数赋值
			LDR R2,=Src			;Src用于比较的首地址
			MUL R6,R0,R7		;为了计算移动单元
			ADD R2,R2,R6		;当前R2所指首地址
			LDR R3,[R2]			;取出当前首地址的值
			MOV R4,R2			;获取首地址指针R2所存的值
LOOPIN		ADD R4,R4,#4		;指针移动
			LDR	R5,[R4]			;存放当前R4指向的值 
			CMP R3,R5			
			SWPHS	R3,R3,[R4]	;交换较小的数给R3
			STRHS   R3,[R2]
			SUBS R9,R9,#1		
			BNE LOOPIN
			ADD R0,R0,#1		;造成下次指针偏移
			CMP R0,#9
			BNE LOOPOUT
			LDR R8,=Src
			LDR R9,=Dst
LOOPEND		LDR R10,[R8],#4		;读取Src中值
			STR R10,[R9],#4		;将Src中值写入Dst中
			SUBS R11,R11,#1
			BNE	LOOPEND
			
	
LTROG		
Src DCD 0X99,0X88,0X77,0X66,0X65,0X55,0X44,0X33,0X22,0X11
Dst DCD 0,0,0,0,0,0,0,0,0,0


Stop
		B Stop
		END

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值