我很难理解ja和jg在汇编语言方面的区别。我有一段代码:
cmp dh, dl
j-- hit
并且我被问到要命中哪个条件跳转(替换j- hit)将采用十六进制值DX = 0680。
这将使dl = 06和dh = 80,因此当比较时,80 > 06。我知道jg符合这一点,因为我们可以直接比较结果,但是如果ja符合(或者在这种情况下,不符合)这个代码,我应该如何解决?
发布于 2011-09-22 14:27:02
dx
为0x0680,则dh
为0x06,dl
为0x80。jg
,因为6> - 128,但6<128。发布于 2011-09-22 14:25:57
ja
和jg
之间的区别在于,对于ja
,比较是无符号的;对于jg
,比较是有符号的(将寄存器视为有符号整数与无符号整数)。
如果数字被保证为正(即符号位为0),那么您应该没问题。否则你就得小心了。
如果ja
可用,你真的不能根据比较指令本身进行直觉判断。你必须看一下上下文,并决定符号是否会成为一个问题。
https://stackoverflow.com/questions/7510381
复制相似问题