学习中-2 发表于 2014-1-23 19:33:54

菜鸟请教AND EAX,80000007;和OR EAX,FFFFFFF8;的意义?

本帖最后由 学习中-2 于 2014-1-23 19:39 编辑

请教各位老师,因为想了解一个程序的算法,初学C语言和反汇编,遇到AND EAX,80000007;和OR EAX,FFFFFFF8;这两段代码,想请教这个,80000007和FFFFFFF8有什么特别意义呢?这两条运算的目的是什么呢?谢谢大家!!

无名侠 发表于 2014-1-23 19:55:59

取出一些特定的bit位吧,把其他无关的抹杀掉!

学习中-2 发表于 2014-1-23 20:19:21

本帖最后由 学习中-2 于 2014-1-23 20:23 编辑

无名侠 发表于 2014-1-23 19:55 static/image/common/back.gif
取出一些特定的bit位吧,把其他无关的抹杀掉!
谢谢版主的答复,我在动态调试时发现EAX是在00000000到0000FFFF之间变化,我想知道这样的两段运算具体能达到什么效果??


00409B1C   .8BC5          MOV EAX,EBP
00409B1E   .25 07000080   AND EAX,80000007
00409B23   .79 05         JNS SHORT 工具.00409B2A
00409B25   .48            DEC EAX
00409B26   .83C8 F8       OR EAX,FFFFFFF8
00409B29   .40            INC EAX
00409B2A   >74 12         JE SHORT 工具.00409B3E
00409B2C   .8BC5          MOV EAX,EBP
00409B2E   .99            CDQ
00409B2F   .83E2 07       AND EDX,7
00409B32   .03C2          ADD EAX,EDX
00409B34   .C1F8 03       SAR EAX,3


无名侠 发表于 2014-1-24 20:05:28

学习中-2 发表于 2014-1-23 20:19 static/image/common/back.gif
谢谢版主的答复,我在动态调试时发现EAX是在00000000到0000FFFF之间变化,我想知道这样的两段运算具体能达 ...

位移之类的感觉非常蛋疼,恕我无能为力。

lpppl 发表于 2014-2-1 23:42:18

我只是路过打酱油的。

oggplay 发表于 2014-2-8 20:09:10

OR EAX,FFFFFFF8 #FFFFFFF8 =11111111   11111111   1111111111111000
意思就是说如果EAX 最后3位是0 那么EAX里的值就是FFFFFFF8,如果EAX 最后3位不是0,那么EAX就是FFFFFFFF,说白了OR就是将某些位置置1。指令执行结果影响SF,ZF和PF标志位。

相反的是AND,说白了就是将某些位置置0。指令执行结果影响SF,ZF和PF标志位。


页: [1]
查看完整版本: 菜鸟请教AND EAX,80000007;和OR EAX,FFFFFFF8;的意义?