首页
社区
课程
招聘
[求助]4.5.5在纯算法实现逻辑判断的一节里面代码出现问题!!!
2009-8-22 10:00 4792

[求助]4.5.5在纯算法实现逻辑判断的一节里面代码出现问题!!!

2009-8-22 10:00
4792
其中有一段是这样写的

neg eax
sbb eax,eax
and al,0fc    ;这个0FC到底是什么东东啊 我用这段代码做实验 就是不成功 求助啊!!!!!
add eax,5
retn

阿里云助力开发者!2核2G 3M带宽不限流量!6.18限时价,开 发者可享99元/年,续费同价!

收藏
点赞0
打赏
分享
最新回复 (3)
雪    币: 440
活跃值: (87)
能力值: ( LV9,RANK:200 )
在线值:
发帖
回帖
粉丝
asdfslw 3 2009-8-22 13:17
2
0
首先,要明白以下指令的意义:
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.

反汇编结果和书上的肯定是完全一致的.
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
浅默 2009-8-22 20:15
3
0
解释的很详细 我想问一下,32汇编中的0fc不用写成0fch ?
雪    币: 201
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
独自望海 2009-8-23 12:00
4
0
哦 明白了 呵呵 学习啦
游客
登录 | 注册 方可回帖
返回