打印

请教LOOP循环里面为什么加不上去

[复制链接]
2186|6
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
Jack_X|  楼主 | 2010-11-20 15:38 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
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 加不上去......
请问哪里出错了呢?

相关帖子

沙发
senioryzc| | 2010-11-20 16:12 | 只看该作者
我用axd没问题
你用单步跟踪不就能看到为什么

是不是你把0x40003100配置为只读,导致写不进去

使用特权

评论回复
板凳
Jack_X|  楼主 | 2010-11-20 16:37 | 只看该作者
2# senioryzc
你调试时能加上去?
我调试时执行完 LDR     R0,[R1] 后又清0了...


使用特权

评论回复
地板
senioryzc| | 2010-11-20 16:45 | 只看该作者
你把memory打开看看啊。看看地址0x40003100处有没有写进去

使用特权

评论回复
5
Jack_X|  楼主 | 2010-11-20 16:49 | 只看该作者

没反应:(

使用特权

评论回复
6
senioryzc| | 2010-11-20 16:56 | 只看该作者
Options->Configure Interface->Session File->Run Configuration Script
里面是不是有初始化脚本
是在不行,换个地址写嘛,或者自己定义个变量,往那个变量里写
事实证明你的loop没问题,是内存写不进去

你的代码,我一点没修改。
armasm a.s 生成a.o
armlink a.o  生成__image.axf

使用特权

评论回复
7
Jack_X|  楼主 | 2010-11-20 17:07 | 只看该作者
6# senioryzc
里面有初始化脚本,但去除脚本后仍是这样...

谢谢你的帮助:handshake

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

0

主题

34

帖子

1

粉丝