求教一个51汇编程序中关于$+n跳转的疑问
最近在看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是怎么算出来的?类似的还有好多看不明白。我是汇编的小白,能大虾解一下惑,非常感激。 就是跳到 mov Rcp_Prev_Edge_L, Temp1。
jbACC.Rcp_In, ($+5)这句本身3字节,AJMP2字节,一起5字节。 相对地址跳转。。 teddeng 发表于 2015-12-21 02:25
就是跳到 mov Rcp_Prev_Edge_L, Temp1。
jbACC.Rcp_In, ($+5)这句本身3字节,AJMP2字节,一起 ...
这样的呀,我一直理解是判断的下一条语句开始地址算起的呢。谢谢了 这跟51单片机有什么关系?
页:
[1]