EzioA 发表于 2016-3-8 11:44:33

检测点11.2关于答案的一点问题

mov al,10H
add al,90H                        这两行代码运行完之后为什么OF = 0??结果是al = A0 H,溢出了呀。


mov al,80H
add al,80H                         为什么这两行代码运行完之后OF= 1??结果是100 H,产生进位,CF = 1, 此时al= 0,没有溢出呀。

~风介~ 发表于 2016-3-8 21:39:55

汇编语言全忘了~{:10_250:}@无名侠

EzioA 发表于 2016-3-9 09:10:06

不要沉呀、。。。

EzioA 发表于 2016-3-10 13:53:36

救命!!!{:5_107:}

jingzhengran 发表于 2016-3-11 20:02:12

CF是flag的第0位,进位标志位,记录无符号运算结果是否有进/借位,结果有进/借位时,SF=1

OF是flag的第11位,溢出标志位,记录有符号运算结果是否溢出,结果溢出时,OF=1

jackqk 发表于 2016-3-14 09:50:21

如果你看of标志位,又由于是对al八位寄存器进行操作。那么就要把他当成8位有符号的运算,先把他转换成二进制
10H的二进制是00010000(16)
90H的二进制是10010000,计算机都是以补码的形式保存,由于最高位是负数,所以要把他转换成原码,转换规则是符号位不变,减去1然后取反,得到11110000结果为-56,记住最高位是符号位。
16+(-56)=-40。属于-128-127之间,所以没有溢出,第二题,可以按照上面思路自己验证下

燕子湖畔 发表于 2016-5-26 10:43:17

jackqk 发表于 2016-3-14 09:50
如果你看of标志位,又由于是对al八位寄存器进行操作。那么就要把他当成8位有符号的运算,先把他转换成二进 ...

90H你的补码计算错了,90H的原码:10010000,反码:11101111,补码+1:11110000,最高位是符号位,故-112,计算 16+(-112)=-96,没有溢出

求生而学 发表于 2016-6-16 08:39:06

jackqk 发表于 2016-3-14 09:50
如果你看of标志位,又由于是对al八位寄存器进行操作。那么就要把他当成8位有符号的运算,先把他转换成二进 ...

{:10_257:}

li83126 发表于 2016-7-12 17:02:30

{:10_249:}鱼币少,

吃货YA鸭 发表于 2017-6-21 11:21:14

燕子湖畔 发表于 2016-5-26 10:43
90H你的补码计算错了,90H的原码:10010000,反码:11101111,补码+1:11110000,最高位是符号位,故-11 ...

上面那货,害的我验算了半个多小时,都没算出他的结果,怎么算都是-112
页: [1]
查看完整版本: 检测点11.2关于答案的一点问题