Assembly jnz检查哪个寄存器
下面是一个汇编代码的玩具示例,演示了Assembly jnz检查哪个寄存器,assembly,x86,Assembly,X86,下面是一个汇编代码的玩具示例,演示了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 它检查状态(标志)寄存器中的零标志。 要查看哪些说明修改此标志,请参阅 上面说的是十二月: 受影响的旗帜 CF标志
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
它检查状态(标志)寄存器中的零标志。 要查看哪些说明修改此标志,请参阅 上面说的是十二月: 受影响的旗帜 CF标志不受影响。设置OF、SF、ZF、AF和PF标志 根据结果 因此,JNZ检查前一条指令设置的标志,该标志恰好修改了它,在您的例子中,它是dec。修改标志字,因此条件跳转作用于写入
cx
的dec
的结果
CMP
指令在技术上与SUB
指令相同,唯一的区别是不存储结果,只修改标志。JNZ操作码检查零标志的状态。因此,在DEC cx和CMP中,后面写入的内容将对标志产生影响。因此,后面编写的代码将决定JNZ的操作