[英]What is the difference between jmp and ja?
根据我的理解, jmp
执行无条件跳转,而ja
跳转,如果值是无符号的。 我说得对吗?
一个例子将不胜感激。
你是正确的, jmp
无条件跳转。
但是,您对ja
描述不正确。 它根据最近的cmp
操作的结果进行条件跳转。 如果第一个操作数大于第二个操作数,则跳转,使用无符号比较而不是签名比较。 jg
将使用签名比较。
ja
表示“如果进位标志未设置且零标志未设置则跳转”。
cmp
指令实际上与sub
指令相同(即它减去其参数),除了不保存结果但只更新条件标志。
如果我们比较无符号整数,如果b
大于a
,则减去(ab)
设置进位标志,如果b
等于a
,则减去零标志,所以如果这两个标志都没有设置,则a
大于b
。
如果我们想要对有符号数进行比较,我们必须将符号标志(即结果的最高位)与溢出标志进行比较,并检查零标志是否未设置,这是jg
指令的作用。
因此, cmp
指令不关心参数是有符号还是无符号。 这种区别仅在于如何在之后解释标志。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.