汇编中如何实现switch case 语句?

yejinwei 2008-04-10 02:25:13
在汇编中如何实现switch case语句的功能,如果我们用if-else形式去判断的话当case很多的时候效率就会比较慢,而在CASE是顺序相连时我们可以使用跳转表,但问题就是当case不顺序相连且case语句较多和两个case间相差很大时,我们怎样处理?谢谢!
...全文
1579 4 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
用户 昵称 2008-04-10
  • 打赏
  • 举报
回复
一般都是用cmp + je来做的,这种方法最简单,switch的值也不用连续
alan001 2008-04-10
  • 打赏
  • 举报
回复
地址数组啊
cnzdgs 2008-04-10
  • 打赏
  • 举报
回复
首先需要switch的取值范围是连续的,用一个数组(地址表)储存各个case标号的地址。例如:
switch (n)
{
case 0:
case 1:
case 2:
case 3:
}

AddressTable DD OFFSET Label0,OFFSET Label1,OFFSET Label2,OFFSET Label3

mov esi,n
jmp AddressTable[esi*4]
Yofoo 2008-04-10
  • 打赏
  • 举报
回复
比较临近使用 转换表 + 跳转表

相差比较大用二分法if-else

2,644

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 硬件/系统
社区管理员
  • 硬件/系统社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧