COUNT EQU 0x40003100 ;定义一个变量,地址为0x40003100
AREA Example2,CODE,READONLY ;声明代码段Example2
ENTRY ;标识程序入口
CODE32 ;声明32位ARM指令
START LDR R1,=COUNT
MOV R0,#0
STR R0,[R1]
LOOP LDR R1,=COUNT
LDR R0,[R1]
ADD R0,R0,#1
CMP R0,#10
MOVHS R0,#0 ;若超出范围则程序返回,即若R0大于或等于10,则此指令执行,R0<=0
STR R0,[R1] ;保存COUNT
B LOOP
END
它的要求是:使用LDR指令读取0x40003100上的数据,将数据加1,若结果小于10,则使用STR指令把结果写回源地址。若结果大于或等于10,则把0写回原地址。然后再次读取0x40003100上的数据,将数据加1,判断结果是否小于10,...周而复始
现在的问题是:我用AXD调试时,LOOP循环里面,R0 一直只为0 和1 加不上去......
请问哪里出错了呢? |