汇编如何实现查表(C语言中的case - switch分支功能)

        汇编如何实现C语言中的分支功能?

C语言:

        switch (R_DSP_BUFFER1)

        {

               case lable1:statement;

               case lable1:statement;

               case lable1:statement;

               ........

              default         : statement;

         }

汇编语言:

        movfw   R_DSP_BUFFER1             // 将 switch的值赋值给work
        call    F_Dsp_Table                           // 对work的值进行查表

F_Dsp_Table:
        addpcw                                             // 当前PC进行 PC=(PC值+work+1)    
        retlw    Lcdch0    ;0    (work=0)       // 查表,并返回相关case值对应的statements;
        retlw    Lcdch1    ;1    (work=1)
        retlw    Lcdch2    ;2    (work=2)
        retlw    Lcdch3    ;3    (work=3)
        retlw    Lcdch4    ;4    (work=4)
        retlw    Lcdch5    ;5    (work=5)
        retlw    Lcdch6    ;6    (work=6)
        retlw    Lcdch7    ;7    (work=7)
        retlw    Lcdch8    ;8    (work=8)
        retlw    Lcdch9    ;9    (work=9)
        retlw    LcdchA    ;A    (work=a)
        retlw    Lcdchb    ;b    (work=b)
        retlw    LcdchC    ;C    (work=c)
        retlw    Lcdchd    ;d    (work=d)
        retlw    LcdchE    ;E    (work=e)
        retlw    LcdchF    ;F    (work=f)
        retlw    Lcdcho    ;16    (work=0)    
        retlw    Lcdchh    ;17    (work=-)    
        retlw    Lcdchq    ;none

 

 

你可能感兴趣的:(汇编如何实现查表(C语言中的case - switch分支功能))