《加密与解密(三版)》疑惑,关于左移
书中有一段代码是这样的004013D8 /$33C0 xor eax,eax ;清零004013DA |.33FF xor edi,edi ;清零
004013DC |.33DB xor ebx,ebx ;清零
004013DE |.8B7424 04 mov esi,dword ptr ss: ;指向序列号
004013E2 |>B0 0A /mov al,0A ;al=10
004013E4 |.8A1E |mov bl,byte ptr ds: ;取序列号到bl
004013E6 |.84DB |test bl,bl ;是否取完
004013E8 |.74 0B |je short serial.004013F5 ;取完结束
004013EA |.80EB 30 |sub bl,30 ;ebx=ebx-30h
004013ED |.0FAFF8 |imul edi,eax ;edi=edi*10,实际上是左移一位
004013F0 |.03FB |add edi,ebx ;edi=edi+ebx=edi+
004013F2 |.46 |inc esi ;下一位
004013F3 |.^ EB ED \jmp short serial.004013E2
004013F5 |>81F7 34120000 xor edi,1234
004013FB |.8BDF mov ebx,edi
004013FD \.C3 retn
我不明白的是004013ED一行,书中为什么说edi*10实际上是左移一位。。左移一位不是相当于乘2吗?希望有人解答一下。。说实话,对左移右移不是太了解。。。 对不起,非常抱歉刚才没看代码信口胡言/:022
对于程序没看出edi的作用。。。。
可否给说下书中具体位置我也想搞清楚 谢谢
[ 本帖最后由 kings0527 于 2009-11-9 14:36 编辑 ]
页:
[1]