jnz检查哪个寄存器

use*_*774 2 x86 assembly

我有以下汇编代码的玩具示例,它说明了的用法jnz。我的问题是:在下面的代码中,jnz会检查哪些内容以决定是否0存在?我运行了代码,在我看来它检查cx注册。从这一点上我不确定。例如,如果我有一个cmpcxjnz检查什么?cx还是cmp结果?

mov cx, 5
mov ax, 0
mov bx, 200
add ax, bx
inc bx
dec cx
jnz 0109
int 3
Run Code Online (Sandbox Code Playgroud)

dbr*_*nk0 6

它检查状态(FLAGS)寄存器中的零标志。要查看哪些指令修改了此标志,请参见《x86软件开发人员手册》

它说关于DEC:

受影响的标志

CF标志不受影响。根据结果​​设置OF,SF,ZF,AF和PF标志。

因此,JNZ检查碰巧对其进行修改的先前指令设置的标志,在您的情况下为dec。