首页
社区
课程
招聘
[求助]请教各位高手一个关于EAX赋值的问题
发表于: 2005-9-18 11:55 5559

[求助]请教各位高手一个关于EAX赋值的问题

2005-9-18 11:55
5559
小弟想请教一下, 在汇编语言中,如果要对EAX 赋一个03 的值,除了可以使用明显的:MOV EAX,00000003, 还有什么其他比较隐含的语句呢, 下面这个不知可否:

XOR EAX,EAX
NEG EAX
AND EAX,00000002

第二句应该是将EAX 置为1, 第三句是否是再将EAX加上2, 这样总共就成了三了,不知对否, 请各位指点一下小弟,谢谢

[培训]《安卓高级研修班(网课)》月薪三万计划,掌握调试、分析还原ollvm、vmp的方法,定制art虚拟机自动化脱壳的方法

收藏
免费 0
支持
分享
最新回复 (8)
雪    币: 236
活跃值: (70)
能力值: ( LV6,RANK:90 )
在线值:
发帖
回帖
粉丝
2
其实我觉得这都是徒劳无功的,最终别人都知道eax的值为3。不如在其他算法方面多下点功夫
2005-9-18 12:38
0
雪    币: 300
活跃值: (412)
能力值: ( LV9,RANK:410 )
在线值:
发帖
回帖
粉丝
3
这个样子没有用吧,除非是避免别人想用“搜索常数”来查找。

最好是让别人找不到关键点。
2005-9-18 18:12
0
雪    币: 398
活跃值: (343)
能力值: (RANK:650 )
在线值:
发帖
回帖
粉丝
4
为啥
XOR EAX,EAX
NEG EAX
AND EAX,00000002
做完后是 EAX是3?
2005-9-18 18:20
0
雪    币: 300
活跃值: (412)
能力值: ( LV9,RANK:410 )
在线值:
发帖
回帖
粉丝
5
xor,inc,add
估计整个是原意
2005-9-18 19:03
0
雪    币: 339
活跃值: (1510)
能力值: ( LV13,RANK:970 )
在线值:
发帖
回帖
粉丝
6
NEG EAX 是取反
2005-9-18 22:33
0
雪    币: 442
活跃值: (1216)
能力值: ( LV12,RANK:1130 )
在线值:
发帖
回帖
粉丝
7
NEG  是求补;求补和求反是有区别的吧?

NEG指令的条件码设置情况是:NEG指令的条件码按求补后的结果设置:只有当操作数
为0时求补运算的结果使CF=0,其它情况则均为1。只有当字节运算时对-128求补以及字
运算时对-32768求补的情况下OF=1,其它则均为0。

概念复习: 原码、反码、补码
 
我们已经知道计算机中,所有数据最终都是使用二进制数表达。
我们也已经学会如何将一个10进制数如何转换为二进制数。
不过,我们仍然没有学习一个负数如何用二进制表达。

比如,假设有一 int 类型的数,值为5,那么,我们知道它在计算机中表示为:
00000000 00000000 00000000 00000101
5转换成二制是101,不过int类型的数占用4字节(32位),所以前面填了一堆0。
现在想知道,-5在计算机中如何表示?

 
在计算机中,负数以其正值的补码形式表达。
什么叫补码呢?这得从原码,反码说起。

原码:一个整数,按照绝对值大小转换成的二进制数,称为原码。

比如 00000000 00000000 00000000 00000101 是 5的 原码。

反码:将二进制数按位取反,所得的新二进制数称为原二进制数的反码。

取反操作指:原为1,得0;原为0,得1。(1变0; 0变1)

比如:将00000000 00000000 00000000 00000101每一位取反,得11111111 11111111 11111111 11111010。

称:11111111 11111111 11111111 11111010 是 00000000 00000000 00000000 00000101 的反码。

反码是相互的,所以也可称:

11111111 11111111 11111111 11111010 和 00000000 00000000 00000000 00000101 互为反码。

 

补码:反码加1称为补码。

也就是说,要得到一个数的补码,先得到反码,然后将反码加上1,所得数称为补码。

比如:00000000 00000000 00000000 00000101 的反码是:11111111 11111111 11111111 11111010。

那么,补码为:

11111111 11111111 11111111 11111010 + 1 = 11111111 11111111 11111111 11111011

 

所以,-5 在计算机中表达为:11111111 11111111 11111111 11111011。转换为十六进制:0xFFFFFFFB。

 

再举一例,我们来看整数-1在计算机中如何表示。

假设这也是一个int类型,那么:

 

1、先取1的原码:00000000 00000000 00000000 00000001

2、得反码:     11111111 11111111 11111111 11111110

3、得补码:     11111111 11111111 11111111 11111111

 

可见,-1在计算机里用二进制表达就是全1。16进制为:0xFFFFFF。

2005-9-18 23:01
0
雪    币: 229
活跃值: (70)
能力值: ( LV6,RANK:90 )
在线值:
发帖
回帖
粉丝
8
又长知识了
2005-9-19 00:39
0
雪    币: 210
活跃值: (11)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
9
xor eax,eax
lea eax,[eax+3]
何如?
2005-9-19 19:58
0
游客
登录 | 注册 方可回帖
返回
//