我有下一条指令:
cmp al, 1
jz mub
Run Code Online (Sandbox Code Playgroud)
当al为2时(10为二进制).怎么做这个指示?据我所知,我可以使用JE,JNE,JA等,但是在cmp指令之后jz是什么意思?
谢谢
jz表示如果为零则跳转。在这种情况下,它只会在al为 1 时跳转。
那是因为cmp通常相当于sub(减去)但实际上没有改变值。
cmp al, 1将根据如果从al.
如果al是 2,则不会进行跳转(因为尚未设置零标志)并且代码将继续在jz.
顺便说一句,jz通常是相同的操作码,je因为它们实际上意味着相同的事情。例如,请参阅x86 控制流上的Wikipedia 页面:
Jump on Zero
jz loc
加载具有指定地址的 EIP,如果零位是从先前的算术表达式设置的。jz 与 je 相同。