arm linux 脚本 排序,ARM汇编程序---1-100累加和一个简单排序

嵌入式初学者,这学期刚开课,学起来感觉很不错。

第一个累加和的源码:

AREA TEXT,CODE,READWRITE

ENTRY

MOV R0,#100  ;循环数目

MOV R1,#0        ;初始化数据

LOOP

ADD R1,R1,R0  ;将数据进行相加,获得最后的数据

SUBS R0,R0,#1 ;循环数据R0减去1

CMP R0,#0        ;将R0与0比较看循环是否结束

BNE LOOP        ;判断循环是否结束,接受则进行下面的步骤

LDR R2,=RESULT

STR R1,[R2]

RESULT

DCD 0

STOP

B STOP

第二个排序的源码附上:

;排列算法:先将所有的数据与第一个进行比较,最后取出最小的数据放到第一个内存单元中

;然后再从第二个内存单元开始进行比较,将第二小的数据放到第二个内存单元中,

;以此内推则能将十个数据进行排列。

AREA TEXT,CODE,READWRITE

ENTRY

LDR R0,=DATA      ;获得DATA数据的起始地址

MOV R1,R0

MOV R5,#9            ;开始的循环数目是10次,所以应该从9开始

MOV R6,R5

COMPARE

ADD R0,R0,#4      ;将R0所存储的地址+4表示为下一个要比较的数的地址

SUB R6,R6,#1  ;循环1次减1

LDR R2,[R1]  ;将放在寄存器中的数据取出进行大小比较

LDR R3,[R0]

CMP R3,R2

MOVCC R7,R2  ;如果后面的地址的数值比前一个小则交换他们的数据

MOVCC R2,R3

MOVCC R3,R7

STR R2,[R1]  ;将数据存储到相应的内存单元中

STR R3,[R0]

CMP R6,#0            ;看每次的循环是否结束

BNE COMPARE

ADD R1,R1,#4      ;每次循环结束以后将初始的指向的内存地址后移一个单元

MOV R0,R1            ;重新初始化上个循环中的寄存器中保存的地址

SUB R5,R5,#1      ;每次循环以后上面在以后的循环中的次数都会减1

MOV R6,R5

CMP R5,#0    ;判断所有的循环是否结束

BNE COMPARE

DATA

DCD 9,4,6,7,8,1,3,2,0,5

STOP

B STOP

0b1331709591d260c1c78e86d0c51c18.png

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值