Mic*_*ith 2 x86 assembly
根据我的理解jmp,无条件跳转,而ja如果值无符号则跳转.我说得对吗?
jmp
ja
一个例子将不胜感激.谢谢!
Bar*_*mar 6
jmp无条件跳跃你是对的.
但是,您的描述ja不正确.它根据最近的cmp操作结果进行条件跳转.如果第一个操作数大于第二个操作数,则跳转,使用无符号比较而不是签名比较.jg会使用签名比较.
cmp
jg
Sim*_*ter 6
ja 意思是“如果未设置进位标志和未设置零标志则跳转”。
该cmp指令实际上与该sub指令相同(即减去它的参数),除了不保存结果而仅更新条件标志。
sub
如果我们正在比较无符号整数,则减法(a-b)设置进位标志 ifb大于a,零标志 ifb等于a,因此如果这两个标志均未设置,则它a大于b。
(a-b)
b
a
如果我们想要比较有符号数,我们必须将符号标志(即结果的最高位)与溢出标志进行比较,并检查零标志是否未设置,这就是jg指令所做的。
因此,cmp指令不关心参数是有符号还是无符号。这种区别仅在于之后如何解释标志。
来源
归档时间:
11 年,10 月 前
查看次数:
4207 次
最近记录:
6 年,4 月 前