win32汇编问题

来源:百度知道 编辑:UC知道 时间:2024/06/25 12:42:35
一段MASM源程序
.while eax>1
mov esi,1
.break .if ebx
.continue
mov esi,2
.endw
以下是反汇编的代码:
; .while 第一个循环
:00401000 EB10 jmp 00401012
:00401002 BE01000000 mov esi,00000001
:00401007 0BDB or ebx,ebx
; .break .if ebx
:00401009 750C jne 00401017
…………
…………
:00401017 BE01000000 mov esi,00000002

不知道 or ebx,ebx是什么意思??到底设置了什么标志位,可以让后面的跳转语句进行跳转。
本人对汇编不是很熟,希望大家能推荐点好的速查手册之类的,顺便推荐的网站、论坛、书籍等,不甚感谢!

:00401007 0BDB or ebx,ebx ; ebx或操作自身
; .break .if ebx
:00401009 750C jne 00401017 ;或以后的判断,这里是JNE,所以是判断EBX
;是否为0。非0则跳转到00401017(esi+=2)
;如果是0则不跳转,执行下一条指令
…………
…………
:00401017 BE01000000 mov esi,00000002 ;EBX非0则跳转到这里

这里or ebx,ebx需要设置什么标志位,主要是看后面的跳转是什么。JNE是非0跳转,所以OR操作是判断EBX是否为0,为0则设置标志位ZF=1,非0则设置标志位ZF=0

or ebx,ebx或or eax,eax等寄存器,这常与
je/jne配对使用,通过判断ebx或eax是否为0
来知道用户注册时注册框的填写情况:
or ebx,ebx后zr=0,说明输入框为空。
推荐一个网站,资料挺全的。
编程爱好者论坛--努力做最好的中文编程论坛
http://bbs.pfan.cn/

自己相或,要设置标志位如PF,ZF