我有以下汇编代码的玩具示例,用于说明jnz
的用法。我的问题是:在下面的代码中,jnz会检查什么来确定是否为0
?我运行了代码,在我看来它检查cx
注册。从这一点上我不确定。例如,如果我有一个cmp
和cx
,jnz
检查什么? cx
或cmp
结果?
mov cx, 5
mov ax, 0
mov bx, 200
add ax, bx
inc bx
dec cx
jnz 0109
int 3
最佳答案
它检查状态(FLAGS)寄存器中的零标志。
要查看哪些指令修改了此标志,请参见x86 software developers manual。
它说关于DEC:
受影响的标志
CF标志不受影响。设置了OF,SF,ZF,AF和PF标志
根据结果。
因此,JNZ检查碰巧对其进行修改的前一条指令设置的标志,在您的情况下为dec。
关于assembly - jnz检查哪个寄存器,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/20093750/