.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