ARM汇编作业1

AREA exone,CODE,READWRITE

  ENTRY

  CODE32 ;作业一1到100的加法

  MOV r0,#100   ;向寄存器中存入要比较的次数

  MOV r1,#1   ;初始的两个数

  MOV r2,#0

loop

  ADD r2,r2,r1     ;两两相加

  ADD r1,r1,#1 ;自动加一

  SUB r0,r0,#1 ;要加的数减一

  CMP r0,#0 ;判断比较次数是否为零

  BNE loop

  LDR r3,=RESULT

STR r2,[r3]

RESULT

DCD 0

STOP

B STOP

 

 

 

AREA extwo, CODE,READWRITE

    ENTRY

CODE32

;作业二排序:将目标地址处的数据进行冒泡排序,从小到大

MOVS r2, #1   ;r2 = 排序完成标志,1表示未完成

again

LDR r0, =data     ;r0 = 目的数据块地址

MOV r1, #40 ;r2 = 排序字数量

SUBS r1, r1, #4

ANDS r2, r2, #1 ;判断排序是否完成

BEQ stop ;若r2=0,完成

MOVS r2, #0 ;否则,标志设置为0

;STMFD sp!, {r4} ;保存工作寄存器

judge

LDR r3, [r0] ;读出r0地址处得值到r3

LDR     r4, [r0,#4] ;读出r0地址处得值到r4

CMP r3, r4 ;比较二者的大小

BLS next ;若r3<=r4,跳到next

exchange

MOVS r2, #1 ;发生数据交换,就设置标志为1

STR r3, [r0,#4] ;交换二者的值

STR r4, [r0]

next

ADDS r0, r0, #4 ;目标地址加4

SUBS r1, r1, #4 ;计数值减1

BNE judge ;本趟排序未结束,跳到judge_2

B again ;否则下一趟

LDMFD sp!, {r4} ;恢复工作寄存器

;将程序的控制权转交给调试器

stop

 

data

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

STOP

    B STOP


 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值