tyqhaha 发表于 2011-5-29 00:20:36

keil中disassembly window问题

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   

这列的差就可以知道每条指令占用的机器周期吧?这样就不需要记住每个关键词的机器周期了哦?
然后这列后面的值就是变量计算后得到的值吧?

renpeng009 发表于 2011-5-29 00:33:48

不是机器周期,是代码长度

tyqhaha 发表于 2011-5-29 00:35:40

回复【1楼】renpeng009 大鹏集成
不是机器周期,是代码长度
-----------------------------------------------------------------------

代码长度?有什么用途吗?

renpeng009 发表于 2011-5-29 08:58:50

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 发表于 2014-1-11 12:14:12

请问一下这每行的第二个数字代表什么意思?
页: [1]
查看完整版本: keil中disassembly window问题