一切太假丶
发表于 2017-4-7 13:10
好东西 谢谢楼主分享
tianzhiya
发表于 2017-4-7 13:41
多谢楼主分享,学习了
antiboy
发表于 2017-4-7 13:44
过来学习学习了,支持支持你
a260967星星
发表于 2017-4-7 14:36
haier8917
发表于 2017-4-7 14:49
Sxsheng 发表于 2017-4-7 10:46
认真看了您的教程,讲的很详细,就是有一点不明白,教程中所讲的标志位是怎么回事?感觉很重要的东西
是的,标志位的确重要,大致的说来就是程序在运算或者比较重对运算结果的一种标识,=下我们可以用我们学习的数学运算来理解,注意:::只玩爆破,不玩算法的情况下需要注意3中标识为(ZF,CF,SF)
ZF,零标志位,运算的结果为0后置1
CF,借进位标志位,运算结果在有借(进)的时候置为1(注意::看其最高位决定)
SF,符号标志位,计算的结果在符号计算的情况下,如果数值为负则为1
注意::::这个SF符号位很多的人不明白是怎么回事,比如为什么0却大于FFFF???,我在这里解释一下::程序以字节为单位进行计算(或者以2字节,4字节,8字节.。。。依次递增),如果16进制的最高位大于8,则为负,符号位置1,否则,置0(FFFF的最高位为F,大于8,为负数,0是永远大于负数的)下面举几个数学例子看看计算结果的变化:::(注意,是十六进制输的计算哦)
00-45 结果为BB(标志位变化::因为其结果不为0,而且不够减(有借进),结果的最高位为B>8,所以结论::零标志位为0,借进位标志1,符号标志位1 即:Z=0,C=1,S=1)
45-00 结果为45(标志位变化::因为其结果不为0,而且够减(无借进),结果的最高位为4<8,所以结论::零标志位为0,借进位标志0,符号标志位0 即:Z=0,C=0,S=0)
45-45 结果为0(标志位变化::因为其结果为0,而且够减(无借进),结果的最高位为0<8,所以结论::零标志位为1,借进位标志0,符号标志位0 即:Z=1,C=0,S=0)
这里的说明一个问题:::到底是几个字节得看他的参数,比如只是一个字节,就只能只是al,ah,bl,bh.....或者用byte来表明
二个字节,只能是ax,bx,cx......或者用word来表明
四个字节,只能是eax,ebx,ecx......或者用dword来表明,
下面举三个例子,数据一样但编程方式(注意AX和EAX的区别)不一样造成的后果:::(着重看C,Z,S标志位的变化)
例1:::::
MOV EAX,0X0 ;;;EAX置0
MOV AX,D234
TEST AX,AX (Z=0,C=0,S=1) ;;;这段代码的作用::修改标志位代码,也可以理解为判断AX是否为0
ADD AX,3311 (Z=0,C=1,S=0)
例2:::::
MOV EAX,0X0 ;;;EAX置0
MOV AX,D234
TEST EAX,EAX (Z=0,C=0,S=0) ;;;这段代码的作用::修改标志位代码,也可以理解为判断EAX是否为0
ADD AX,3311 (Z=0,C=1,S=0)
例3:::::
MOV EAX,0X0 ;;;EAX置0
MOV AX,D234
TEST AX,AX (Z=0,C=0,S=1) ;;;这段代码的作用::修改标志位代码,也可以理解为判断AX是否为0
ADD EAX,3311 (Z=0,C=0,S=0)
shlgh
发表于 2017-4-7 14:49
看看是怎么弄的
googls
发表于 2017-4-7 15:09
来学习新知识喽!非常感谢楼主分享!
rdcgm
发表于 2017-4-7 15:09
看看怎么说
疯子888
发表于 2017-4-7 15:15
第二重??、什么鬼?
harlanchou
发表于 2017-4-7 15:36
haier8917 发表于 2017-4-7 10:55
你好,程序已搞定,你看看功能方面正常不,我空了录视频
大神,我好像找到突破点了,麻烦你帮忙看看,思路是否正确,谢谢!
https://www.52hb.com/thread-32242-1-1.html
页:
1
2
[3]
4
5
6
7
8
9
10
11
12