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

本文详细解析了如何将C语言中的switch-case结构转换为汇编语言,通过使用查表和跳转指令实现相同的功能,展示了从高级语言到低级语言的逻辑转换过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值