能力值:
( LV2,RANK:10 )
|
-
-
2 楼
没人回?
(如果是XOR AL,AL就是进行异或,就是把AL清零,这个我知道)
可能问得不太清楚
000007F0 2C 30 SUB AL,30
000007F2 8D0C89 LEA ECX,DWORD PTR DS:[ECX+ECX*4]
000007F5 8D0C48 LEA ECX,DWORD PTR DS:[EAX+ECX*2]
000007F8 8A06 MOV AL,BYTE PTR DS:[ESI]
000007FA 46 INC ESI
000007FB 0AC0 OR AL,AL ; 就只有这里没看懂
000007FD ^ 75 F1 JNZ SHORT 000007F0
|
能力值:
( LV2,RANK:10 )
|
-
-
3 楼
继续求,好像会影响标志位
到底怎么影响呢。。。为什么会出现“jnz”不相等呢,什么和什么作比较?
|
能力值:
( LV4,RANK:50 )
|
-
-
4 楼
[QUOTE=朱古力;346562]没人回?
(如果是XOR AL,AL就是进行异或,就是把AL清零,这个我知道)
可能问得不太清楚
000007F0 2C 30 SUB AL,30
000007F2 8D0C89 LEA ECX,DWORD PTR DS:[ECX+ECX...[/QUOTE]
好像是判断AL是否为零吧
|
能力值:
( LV2,RANK:10 )
|
-
-
5 楼
哦,如果为AL为零会怎么样,为1为2为3又会怎么样,
|
能力值:
( LV2,RANK:10 )
|
-
-
6 楼
000007FB 0AC0 OR AL,AL ; 就只有这里没看懂
000007FD ^ 75 F1 JNZ SHORT 000007F0
如果al为0则不跳转
不为0则跳
|
能力值:
( LV2,RANK:10 )
|
-
-
7 楼
or Al,AL
是判断al中的数值是否为0
or 是进行的为或运算,只要al中的8位有一位不为0,则结果肯定不为0,影响标志位
进而用 jnz判断
高级语言
.if al == 0
do somthing
.endif
|
能力值:
( LV2,RANK:10 )
|
-
-
8 楼
谢谢大家
那test eax,eax这种呢?
|
能力值:
( LV4,RANK:50 )
|
-
-
9 楼
我觉得 其实你不应该再问这个问题了,
这都是一类问题了。
举一反三,看看 kanxue 大哥的文章吧
里面还有个 FTBirthday 写的‘test和cmp一个很菜很基础的话题! ’呢!!
|
能力值:
( LV2,RANK:10 )
|
-
-
10 楼
test 进行的是 与 操作 但是和and不同,他不影响寄存器。
|
能力值:
( LV9,RANK:850 )
|
-
-
11 楼
text
把两个操作数进行"与"操作,不保存运算结果,只设置标志位
一般用
text eax,eax //来检测eax是否为空
jnz xxxxx //不为空就跳
|
|
|