首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 嵌入开发 > 汇编语言 >

一段switch case代码 求解释,该如何处理

2012-03-16 
一段switch case代码 求解释mov[ebp+var_4], 1moveax, [ebp+var_4]mov[ebp+var_8], eaxcmp[ebp+var_8], 3

一段switch case代码 求解释
mov [ebp+var_4], 1
mov eax, [ebp+var_4]
mov [ebp+var_8], eax
cmp [ebp+var_8], 3 ; switch 4 cases
ja short loc_40107B
mov ecx, [ebp+var_8]
jmp ds:off_40108E[ecx*4] ;这句话到底是什么意思 ecx * 4 数组么 但是为什么是乘号呢



[解决办法]
off_40108E 处存放的是对应的各个入口地址,形成一个数组,ecx (来自 [ebp+var_8]) 就是被 switch 的变量了。
为什么要 *4 ,这是因为在 32 位环境下,一个地址也就是 32 位的,要占用 4 个字节,即 0 个地址从 0 开始的话, 1 的地址则是从 4 开始 (0,1,2,3 四个字节被 0 地址所占用),2 的从 8 ....
[解决办法]
应该是比例因子。用于32位或32位汇编中存储器寻址。 通常是1,2,4或8

热点排行