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

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/

10-11 15:34