繁体   English   中英

汇编语言:ja和jg之间的区别?

[英]Assembly Language: difference between ja and jg?

我无法理解汇编语言的ja和jg之间的区别。 我有一段代码:

cmp  dh, dl
j--  hit

并且我被问到将使用十六进制值DX = 0680进行哪个条件跳转(替换j--命中)。

这将使dl = 06和dh = 80,所以在比较时,80> 06.我知道jg符合这一点,因为我们可以直接比较结果,但是如果ja适合(或者在这种情况下,不适合,我应该如何解决) )这段代码?

之间的差jajg的事实是,比较是无符号为ja和用于签署jg (处理寄存器作为带符号VS无符号整数)。

如果数字保证为正数(即符号位为0)那么你应该没问题。 否则你必须小心。

如果ja适用,你真的不能根据比较指令本身直觉。 您必须查看上下文并确定符号是否会成为问题。

  1. 如果dx是0x0680,则dh是0x06并且dl是0x80。
  2. 0x80在无符号模式下解释为128,在签名模式下解释为-128。
  3. 因此,你必须使用jg ,因为6> -128,但是6 < jg签名比较; ja做无符号比较。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

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