ARM反汇编问题,盼解决

[复制链接]
2275|6
 楼主| xrk709 发表于 2013-3-31 12:30 | 显示全部楼层 |阅读模式
程序完成ASCII码中小写字母转换成大写字母的功能,用的是keilmdk编译通过,但是在debug时发现反汇编在程序结尾有无数条00000000 ANDEQ R0,R0,R0是怎么回事?是我的程序有问题吗?
 楼主| xrk709 发表于 2013-3-31 12:31 | 显示全部楼层
我的程序如下        AREA  init2,CODE,READONLY
        ENTRY
CODE32
START
        MOV R1,#0x31000000  ;存放第一个ASCII码的空间地址
        MOV R0,#0x1B        ;第一个码的十六进制表示
        B   BIJIAO
LOOP
    STR R0,[R1],#4
        ADD R0,R0,#1
       
BIJIAO          
        CMP R0,#0x7E
        BLS LOOP
        B   OUT
OUT
    MOV R2,#0x31000000
        B   CHANGE1

CHANGE1
        LDR  R3,[R2]
        CMP  R3,#0x60
        BLS    CHANGE2
        CMPHI R3,#0x7A
        ANDLS R3,R3,#0x5F
        B    CHANGE2
   
CHANGE2       
        STR  R3,[R2],#4
        CMP  R3,#0x7E
        BLS    CHANGE1
    END               
jlass 发表于 2013-4-1 09:40 | 显示全部楼层
自动补0,应该是正常现象
 楼主| xrk709 发表于 2013-4-1 11:00 | 显示全部楼层
自动补0?可是R0里的值不是零啊?还是不太明白希望高手能再说详细点谢谢啦
huangxz 发表于 2013-4-1 11:26 | 显示全部楼层
xrk709 发表于 2013-4-1 11:00
自动补0?可是R0里的值不是零啊?还是不太明白希望高手能再说详细点谢谢啦 ...

在那个位置是,是不是在pool里面,楼主截图看看嘛。
jlass 发表于 2013-4-1 14:22 | 显示全部楼层
xrk709 发表于 2013-4-1 11:00
自动补0?可是R0里的值不是零啊?还是不太明白希望高手能再说详细点谢谢啦 ...

ANDEQ R0,R0,R0,这句是编译器自动生成的,你手动写入很多个0,也会被翻译成这句的。
这就是nop语句么,也就是0,和R0里面的值毫无关系。
 楼主| xrk709 发表于 2013-4-1 14:37 | 显示全部楼层
非常感谢jlass:)
您需要登录后才可以回帖 登录 | 注册

本版积分规则

12

主题

24

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部