繁体   English   中英

jmp和ja有什么区别?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM