我无法理解汇编语言的 ja 和 jg 之间的区别。我有一段代码:
cmp dh, dl
j-- hit
我询问哪个条件跳转命中(替换 j-- 命中)将采用 DX = 0680 的十六进制值。
这会使 dl = 06 和 dh = 80,所以在比较时,80 > 06。我知道 jg 适合这个,因为我们可以直接比较结果,但如果 ja 适合(或者在这种情况下,不适合)这个代码?
最佳答案
- 如果
dx
为0x0680,则dh
为0x06,dl
为0x80。 - 0x80 在无符号模式下被解释为 128,在有符号模式下被解释为 -128。
- 因此,您必须使用
jg
,因为6 > -128,但6 < 128。jg
进行符号比较;ja
进行无符号比较。
关于loops - 汇编语言 : difference between ja and jg?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7510381/