keil中disassembly window问题

2020-01-25 15:19发布

disassembly window这个之前没用过,最近在调红外不得已而试试,汇编学的不好凑合着看看,有个问题想问下大牛们

sg:

    19:         while(de--)   
C:0x0003    EF       MOV      A,R7
C:0x0004    1F       DEC      R7
C:0x0005    AC06     MOV      R4,0x06
C:0x0007    7001     JNZ      C:000A
C:0x0009    1E       DEC      R6
C:0x000A    4C       ORL      A,R4
C:0x000B    6013     JZ       C:0020

这几行中,
0x0003   
0x0004   
0x0005   
0x0007   
0x0009   
0x000A   
0x000B   

这列的差就可以知道每条指令占用的机器周期吧?这样就不需要记住每个关键词的机器周期了哦?
然后这列后面的值就是变量计算后得到的值吧?
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
5条回答
renpeng009
2020-01-25 21:07
0x0003   
0x0004     
0x0005     
0x0007     
0x0009     
0x000A     
0x000B     
这些指的是代码在flash中的位置,C指的是程序段,例如JNZ这个指令的字节数为2,那么下一跳指令就要从0x0007+2=0x0009开始,DEC R6占用一个字节,所以下一条从0x0009+1=0x000A开始。故它们之间的差值表示指令长度。使用汇编编写程序时可以使用相对地址,但在这里均为绝对地址,如 JNZ      C:000A  就是说条件满足时,程序会跳转到0x000A处执行。
这列后面的值是代码在flash中的实际表示。

一周热门 更多>