- UID
 - 28290
 
 注册时间2007-2-21
阅读权限8
最后登录1970-1-1
初入江湖 
  
 
 
 
该用户从未签到  
 | 
 
书中有一段代码是这样的- 004013D8    /$  33C0            xor eax,eax                                ;  清零
 
 - 004013DA    |.  33FF            xor edi,edi                                ;  清零
 
 - 004013DC    |.  33DB            xor ebx,ebx                                ;  清零
 
 - 004013DE    |.  8B7424 04       mov esi,dword ptr ss:[esp+4]               ;  指向序列号
 
 - 004013E2    |>  B0 0A           /mov al,0A                                 ;  al=10
 
 - 004013E4    |.  8A1E            |mov bl,byte ptr ds:[esi]                  ;  取序列号到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+[code(i)-30h]
 
 - 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吗?希望有人解答一下。。说实话,对左移右移不是太了解。。。 |   
 
 
 
 |