最近在看BLHELI的汇编程序,有些疑问不得解,睡不着呀。问题是这样的:
下边这段程序
jb ACC.Rcp_In, ($+5) ; Is it high?
ajmp pca_int_fail_minimum ; 2字节指令
mov Rcp_Prev_Edge_L, Temp1 ; Temp1,Temp2分别为R0,R1。2字节指令 Rcp_Prev_Edge_L为一个内存地址
mov Rcp_Prev_Edge_H, Temp2 ; 2字节指令 Rcp_Prev_Edge_H 为一个内存地址
ajmp pca_int_exit ; Exit 2字节指令
pca_int_fail_minimum:
; Prepare for next interrupt
Rcp_Int_First ; Set interrupt trig to first again
Rcp_Clear_Int_Flag ; Clear interrupt flag
clr Flags2.RCP_EDGE_NO ; Set first edge flag
jnb Flags2.RCP_PPM, ($+5) ; If flag is not set (PWM) - branch
上列程序段中的第一句jb ACC.Rcp_In, ($+5),当判断条件为真时会跳转到哪里?查手册的话,move direct Rn ,ajmp addrll都是2字节指令。我的疑惑是这个5是怎么算出来的?类似的还有好多看不明白。我是汇编的小白,能大虾解一下惑,非常感激。
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
jb ACC.Rcp_In, ($+5) 这句本身3字节,AJMP 2字节,一起5字节。
这样的呀,我一直理解是判断的下一条语句开始地址算起的呢。谢谢了
一周热门 更多>