ARM——内存读写示例

.global _start
/*3 先对内存地址0xB000开始的100个字内存单元填入0x10000001~0x10000064字数据,然
后将每个字单元进行64位累加结果保存于[ R9:R8 ]中. (R9存放高位)*/
@ Author: DavidMahone
@ Date: 2010-10-02

_start:
    MOV R0,#0xB000    @ R0 = 0xB000存放基地址
    MOV R1,#0x10000000
 
    MOV R2,#0    @ R2为计数器
    MOV R3,#0x64    @ R3 = 100为循环中止条件
    MOV R5,#0    @用以存储比较结果
 
    MOV R8,#0    @ 存放结果低32位
    MOV R9,#0    @ 存放结果高32位

flag:
    ADD R2,R2,#1    @ R2++
    ADD R1,R1,#1    @ R1++
    STR R1,[R0],#4  @ R1 ——> Mem32[R0]  R0 += 4
  
    ADDS R8,R8,R1    @ R8 <—— R8 + R1
    ADC R9,R9,#0     @ 若上式产生进位,则R9 <—— R9 + C标志位
  
    SUBS R5,R3,R2    @ 当R5 = 0,即 R2达到100时,循环中止,跳出flag
    ADRNE PC,flag   @ 或者BNE flag
    B .   @程序在此处循环
.end

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值