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   

这列的差就可以知道每条指令占用的机器周期吧?这样就不需要记住每个关键词的机器周期了哦?
然后这列后面的值就是变量计算后得到的值吧?
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
4条回答
renpeng009
1楼-- · 2020-01-25 15:33
 精彩回答 2  元偷偷看……
tyqhaha
2楼-- · 2020-01-25 16:37
回复【1楼】renpeng009 大鹏集成
不是机器周期,是代码长度
-----------------------------------------------------------------------

代码长度?有什么用途吗?
renpeng009
3楼-- · 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中的实际表示。
jinchenaquarius
4楼-- · 2020-01-25 22:24
请问一下这每行的第二个数字代表什么意思?

一周热门 更多>