[英]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适合(或者在这种情况下,不适合,我应该如何解决) )这段代码?
之间的差ja
和jg
的事实是,比较是无符号为ja
和用于签署jg
(处理寄存器作为带符号VS无符号整数)。
如果数字保证为正数(即符号位为0)那么你应该没问题。 否则你必须小心。
如果ja
适用,你真的不能根据比较指令本身直觉。 您必须查看上下文并确定符号是否会成为问题。
dx
是0x0680,则dh
是0x06并且dl
是0x80。 jg
,因为6> -128,但是6 < jg
签名比较; ja
做无符号比较。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.