-
-
[旧帖]
[求助]有关程序问题
0.00雪花
-
发表于:
2007-6-9 22:36
2822
-
lea esi, [ebp + asciiz] ;6 bytes
s_check: lodsb ;1 byte
test al, al ;2 bytes
jne s_check ;2 bytes
小弟再看程序优化时看到上面的代码,有些不解,请各位指点。
上面的指令说是运行后 到达字符串尾。
但我这样子理解,lea esi, [ebp + asciiz] 赋值。
lodsb ,将源串中的元素逐一装入AL或AX中。
假设esi指向数据是-》12345678,那么第一个lodsb将1给al,接着test仅修改标志位。
因为al和al都是一样的所以不会改变,应该不等于零,会跳转。
但问题是当执行倒最后了al值为8再test的话还是应该等于0的,也就是说test后的结果都为0,程序进入死循环……,不懂请各位指点。
[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!