汇编如何实现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