能力值:
( LV9,RANK:200 )
|
-
-
2 楼
首先,要明白以下指令的意义:
neg eax
sbb eax, eax
"sbb eax, eax" 的结果取决于 CF, 而指令 "neg eax" 相当于 "eax = 0 - eax".
该指令影响 CF ,并且仅当 eax=0 时清零 CF ,否则置 CF 为1.
于是这两条指令合起来的功能就是:
if( eax != 0 ) eax = 0xFFFFFFFF;
// else eax = 0;
至于后面的指令 "and al,0fc" , fc 二进制表示 11111100 , 所以这条指令的意义是把 eax 的 0 bit 和 1 bit 清零.
另外, 0xFFFFFFFC 看做有符号整数的话是 -4 .
所以........
你说"我用这段代码做实验 就是不成功" ,不知道你说的不成功是什么意思.
直接建立控制台程序,然后选择Release.
反汇编结果和书上的肯定是完全一致的.
|
能力值:
( LV2,RANK:10 )
|
-
-
3 楼
解释的很详细 我想问一下,32汇编中的0fc不用写成0fch ?
|
能力值:
( LV2,RANK:10 )
|
-
-
4 楼
哦 明白了 呵呵 学习啦
|
|
|