饮恨 发表于 2009-11-7 22:09:58

《加密与解密(三版)》疑惑,关于左移

书中有一段代码是这样的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吗?希望有人解答一下。。说实话,对左移右移不是太了解。。。

kings0527 发表于 2009-11-9 14:12:12

对不起,非常抱歉刚才没看代码信口胡言/:022
对于程序没看出edi的作用。。。。

可否给说下书中具体位置我也想搞清楚 谢谢

[ 本帖最后由 kings0527 于 2009-11-9 14:36 编辑 ]

HDd1145 发表于 2009-11-20 15:33:33

页: [1]
查看完整版本: 《加密与解密(三版)》疑惑,关于左移