clhjswe 发表于 2017-2-7 17:20:00

cmp指令的问题

(ah)=0feh,(bx)=0ffh
(ah)-(bh)=(-2)-(-1)=0ffh

看图片:
图上面说的是因为溢出导致了实际结果为负,那么逻辑上真正的结果必然为正。

上面的代码的二进制为:

ah=1111 1110=-2
bh=1111 1111=-1
(ah)-(bh)=11111110-11111111=11111111=(-1)

溢出了,OF=1,又因为SF=1,所以为负数,这样看着,前面的被减数比减数要小,但下面写的是(ah)>(bh),这又是什么意思?ah不是小于bh吗?

什么鬼逻辑,大神求助

clhjswe 发表于 2017-2-7 17:34:26

我接受不了这种理邻念,一个小的数减去一个大的数,那个小的数比那个大的数要大

最终的执念 发表于 2017-4-1 17:47:06

clhjswe 发表于 2017-2-7 17:34
我接受不了这种理邻念,一个小的数减去一个大的数,那个小的数比那个大的数要大

无符号字节数字    就是这鸟样

瞌睡猪 发表于 2017-4-8 15:39:39

我觉得你可以先看一看补码,然后回过头来看看应该会比较好理解这个问题

haha_91 发表于 2017-4-8 19:30:49

-2-(-1)=-1 没有溢出哦OF为0SF为1
页: [1]
查看完整版本: cmp指令的问题