自宅警備員 发表于 2018-3-25 10:46:51

怎么算都觉得不对

若al=76h,bl=9ch,当8086执行al-bl操作后,标志位of和cf应分别为?

答案给的是of=1,cf=1。

我自己算出来不对啊,我算出来of=0,cf=1.

求助详细过程!

丶忘却的年少o 发表于 2018-3-25 11:08:40

CF 就不说了吧,说下OF吧
OF:当运算的结果超出了这个范围,就产生了溢出,说明产生了符号位,计算不准确了。简单的来说就是算出来的这个数变成了一个有符号数,让结果不准确。76 - 9c = 118 - 156 = -38,十六进制是DA,无符号的话是218,但是现在是-38,如果该 OF = 0,那计算器会认为是 218,而实际要的是 -38,所以是 OF = 1

自宅警備員 发表于 2018-3-25 11:33:50

丶忘却的年少o 发表于 2018-3-25 11:08
CF 就不说了吧,说下OF吧
OF:当运算的结果超出了这个范围,就产生了溢出,说明产生了符号位,计算不准确 ...

76 - 9c = 118 - 156 = -38,没有异议,正因为如此,机器表示范围为-128~127, -38在此范围内。所以当时认为没有溢出

后面说,无符号的话是218,但是现在是-38,如果该 OF = 0,那计算器会认为是 218,而实际要的是 -38,所以是 OF = 1

这一段不是很懂, 感谢解答!

丶忘却的年少o 发表于 2018-3-25 11:37:04

自宅警備員 发表于 2018-3-25 11:33
76 - 9c = 118 - 156 = -38,没有异议,正因为如此,机器表示范围为-128~127, -38在此范围内。所以当 ...

如果我记得没错的话,范围是0—255,就是因为有标志位,才会有 0—255 和-128—127 这两种状态。

自宅警備員 发表于 2018-3-25 11:56:36

本帖最后由 自宅警備員 于 2018-3-25 11:57 编辑

丶忘却的年少o 发表于 2018-3-25 11:37
如果我记得没错的话,范围是0—255,就是因为有标志位,才会有 0—255 和-128—127 这两种状态。

书中原话是这么写的:

of:反映带符号(二进制补码表示)运算结果是否超过机器所能表示的数值范围的情况,对字节运算为-128~127,对字为-32768~+32767,若超过上诉范围,称为溢出,of置1




那个无符号的话是218,这个怎么算出来的呃?

丶忘却的年少o 发表于 2018-3-25 13:15:00

自宅警備員 发表于 2018-3-25 11:56
书中原话是这么写的:

of:反映带符号(二进制补码表示)运算结果是否超过机器所能表示的数值范围的 ...

那这么说的话76 - 9c = 118 - (-100) = 218,结果还是溢出了

人造人 发表于 2018-3-25 14:32:54

https://www.cnblogs.com/amanlikethis/p/3372681.html
页: [1]
查看完整版本: 怎么算都觉得不对