鱼C论坛

 找回密码
 立即注册
查看: 2803|回复: 13

[已解决]溢出问题

[复制链接]
发表于 2015-1-23 18:09:53 | 显示全部楼层 |阅读模式
30鱼币
本帖最后由 hosoo 于 2015-1-23 19:32 编辑

mov al,10h
add al,90h
al进行有符号运算结果OF为多少?





最佳答案
2015-1-23 18:09:54
楼主,这问题有点看不懂,前两句我想你是肯定明白什么意思的,你说的有符号运算是关于正负的问题?
在cpu只有或和与运算,他不管你是什么加减乘除,至于到底翻译出什么是编译器说的算吧? 他会进行一个
转换,比如C++中 +号等本身也算是一个函数,底层有换算。

最佳答案

查看完整内容

楼主,这问题有点看不懂,前两句我想你是肯定明白什么意思的,你说的有符号运算是关于正负的问题? 在cpu只有或和与运算,他不管你是什么加减乘除,至于到底翻译出什么是编译器说的算吧? 他会进行一个 转换,比如C++中 +号等本身也算是一个函数,底层有换算。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2015-1-23 18:09:54 | 显示全部楼层    本楼为最佳答案   
楼主,这问题有点看不懂,前两句我想你是肯定明白什么意思的,你说的有符号运算是关于正负的问题?
在cpu只有或和与运算,他不管你是什么加减乘除,至于到底翻译出什么是编译器说的算吧? 他会进行一个
转换,比如C++中 +号等本身也算是一个函数,底层有换算。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2015-1-26 09:22:11 | 显示全部楼层
Lyk 发表于 2015-1-23 22:13
楼主,这问题有点看不懂,前两句我想你是肯定明白什么意思的,你说的有符号运算是关于正负的问题?
在cpu ...

这是汇编第十一章的内容监测11.2的问题,我知道怎么算,但是就这一个算出来的OF结果和答案不一致,所以问问论坛里的前辈,怎么计算的。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2015-1-26 09:22:53 | 显示全部楼层
本帖最后由 hosoo 于 2015-1-26 09:33 编辑
hosoo 发表于 2015-1-26 09:22
这是汇编第十一章的内容监测11.2的问题,我知道怎么算,但是就这一个算出来的OF结果和答案不一致,所以问 ...

我是这样计算的
无符号运算:10H+90H=A0H (1010 0000B) 从二进制上看 CF是等于0的
有符号运算:(-10H)+(-90H)=F0H+70H=160H (0001 0110 0000B)
因为AL为1字节 那么无符号AL=A0H 有符号AL=60H 从二进制看出结果已经溢出了所以OF=1的
但是答案给出的OF值却为0,所以不明白。知道的前辈指点一下,谢谢!
1.jpg
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2015-1-28 17:47:35 | 显示全部楼层
符号位我也一直搞不明白,MARK一下。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2015-2-7 17:47:45 | 显示全部楼层
同求解释,☆⌒(*^-゜)v THX!!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2015-2-7 19:33:53 | 显示全部楼层
有点忘记了那个标记寄存器的知识了,不过楼主我给你讲一下我自己学这个的时候所总结出来的东西,希望对你有帮助。
    首先呢,你上面说的是al也就是说是8位的,我们知道8位的范围应该是0到FF(无符号的)也就是十进制的0到255共256个数字,而256/2=128,所以呢就分给了正数和负数,这样就有了8位的负数范围为【-128,0)正数的范围为(0,127】如果是十六进制的话就是【80,FF】和【1,7F】(注意十六进制的我没有算0)
    这样一来,如果两个8位的十六进制的数想家的和超过7F,那么就是负数了,这样OF位应该就是,额,什么来着忘记了,应该是1吧没记错的话。。。。。
    希望可以帮到你
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2015-2-7 19:41:59 | 显示全部楼层
比冲一下,多用微软的计算器
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2015-2-8 12:08:03 | 显示全部楼层
擅用论坛的搜索功能,这种问题之前我有过详细的解答。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2015-2-27 00:55:51 | 显示全部楼层
8位的有符号数是-128到+127,10H就是16,不可能是负值,90H是144超过了127,所以应该是负的112,所以相加应该还是负值,就是+16+(-122),结果为-96也就是A0,所以溢出标志位应该为0,也就是说没有溢出。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2015-5-26 20:45:35 | 显示全部楼层
按有符号数算,10H是16    90H是-16  相加等于0.      溢出指的是超出八位所能表示的范围,意思就是如果计算结果小于-128   大于127  (内存中数据都是以补码形式存放的)  就会产生溢出,有点像CF是第九位,溢出的那位被放在了第九位。 比如  -126   -   5   =   -131     在内存中的存放形式是  (1)00000011,则溢出,结果取反。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2015-6-18 19:43:09 | 显示全部楼层

看看而已
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2015-7-2 15:30:05 | 显示全部楼层
10H:0001 0000B,最高位(符号位)是0,表示这个数是正数,次高位(符号数的数值最高位)为0
90H:1001 0000B,最高位(符号位)是1,表示这个数是负数,次高位(符号数的数值最高位)为0
0001 0000B+1001 0000B=1010 0000B,相加的结果是次高位没有向符号位(最高位)进位,所以没有溢出。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2015-7-3 18:24:39 | 显示全部楼层
楼上正解,顺便说一句都是补码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-11-19 01:18

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表