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