求教一个51汇编程序中关于$+n跳转的疑问

2020-01-18 18:49发布

最近在看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是怎么算出来的?类似的还有好多看不明白。我是汇编的小白,能大虾解一下惑,非常感激。
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。