扫帚菜~~ 发表于 2013-3-26 10:53:55

ARM9汇编问题

       AREA BlockData,DATA,READWRITE    ;定义数据段
DATA1DCD 2,5,0,3,-4,5,0,10,9          ;数组DATA1
DATA2DCD 3,5,4,-2,0,8,3,-10,5         ;数组DATA2
SUM    DCD 0,0,0,0,0,0,0,0,0            ;数组SUM

       AREA Ex4_46,CODE,READONLY      ;定义代码段
       ENTRY      
       CODE32
STARTLDR R1,=DATA1            ;数组DATA1的首地址存入到R1
       LDR R2,=DATA2            ;数组DATA2的首地址存入到R2
       LDR R3,=SUM            ;数组SUM的首地址存入到R3
       MOV R0,#0                ;计数器R0的初始值置0
LOOP   LDR R4,,#04          ;取DATA1数组的一个数,同时修改地址指针
       LDR R5,,#04          ;取DATA1数组的一个数,同时修改地址指针
       ADDS R4,R4,R5            ;相加并影响标志位
       ADD R0,R0,#1             ;计数器加1
       STR R4,,#04          ;保存结果到SUM中,同时修改地址指针
       BNE LOOP               ;若相加的结果不为0则循环
       END
如上一段是ARM处理器的汇编,用的是keil 4 mdk+jlink+TQ2440。定义两个数组,当调试的时候,把DATA1的地址加载到r1寄存器中。显示r1 = 0x40000000 但在查看内存窗口中查看0x40000000地址的内存数据时却显示的不是定义的数据2,5,0,3,-4,5,0,10,9 ,而是别的数。DATA2数组也是一样。不知道怎么回事。

亚瑟王 发表于 2013-3-26 13:53:49

亲,程序是放到nand或是nor的?然后开机就执行的它?还是用uboot将其读到内存中的?

扫帚菜~~ 发表于 2013-3-26 17:39:08

亚瑟王 发表于 2013-3-26 13:53 static/image/common/back.gif
亲,程序是放到nand或是nor的?然后开机就执行的它?还是用uboot将其读到内存中的?

启动方式选择开关在nand,不过我用的是jlink仿真调试的。

亚瑟王 发表于 2013-3-27 09:38:23

扫帚菜~~ 发表于 2013-3-26 17:39 static/image/common/back.gif
启动方式选择开关在nand,不过我用的是jlink仿真调试的。

你的Nand里面有什么程序呢?

扫帚菜~~ 发表于 2013-3-29 18:56:47

亚瑟王 发表于 2013-3-27 09:38 static/image/common/back.gif
你的Nand里面有什么程序呢?

现在我想知道是jlink是不是直接把程序下载到了内存当中运行了。

亚瑟王 发表于 2013-4-1 10:46:50

扫帚菜~~ 发表于 2013-3-29 18:56 static/image/common/back.gif
现在我想知道是jlink是不是直接把程序下载到了内存当中运行了。

这样的,你说的那个地址的东西,如果是从Nor启动,就是Nor的内容,如果是从Nand启动就是Nand的内容。
页: [1]
查看完整版本: ARM9汇编问题