鱼C论坛

 找回密码
 立即注册
查看: 2938|回复: 16

11.4希望来人认真回答下(回答“不对啊!答案是。。”的就算了 我已无力了

[复制链接]
发表于 2011-8-4 15:46:19 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
【11.4】
【下面的程序执行后:(ax)=?
  mov ax,0
  push  ax
  popf
  mov ax,0fff0h
  add ax,0010h
  pushf  
  pop ax
  and al,11000101B
  and ah,00001000B 】
【Q:请问那个0fff0h+0010h后of为0是怎么来的(希望具体点的步骤,这地方我非常不懂,也上网查了很多资料,什么补码都知道,但是实际用起来就很蒙。
比如说这题0fff0h换成二进制是1111 1111 1111 0000B,而0010h换算成二进制是1 0000B,那我如果要算结果的of位(是不是求别的符号位就不用这么看)那是不是就要把两个数都看成有符号数(即最高位看成符号位),这样的话第一个数就是负数(-7ff0),而第二个数就是正数(10h),然后只有在计算的过程中才把第一个数的补码求出来,还是第一个数已经是补码的形式了  到底是怎样的?求解答啊。。。。。                                      
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2011-8-4 16:03:06 | 显示全部楼层
因为ax只能容纳4位16进制,f+1要进位,fff0+10=10000H,低四位存入ax,所以就是0000
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2011-8-4 19:20:57 | 显示全部楼层
ax是16位寄存器,不能存储1000H,所以会发生溢出,即数据的截断。。。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2011-8-4 20:08:24 | 显示全部楼层
楼主,你水平有问题!需要恶补知识
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2011-8-4 22:22:16 | 显示全部楼层
这个题貌似不存在补码吧!除了一个标志位
0  f  f   f  0
0  0 0  1  0
---------------------
1  0 0  0  0
请楼主回答f  +  1  =  ?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2011-8-4 22:23:36 | 显示全部楼层
我估计楼主不会算
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
 楼主| 发表于 2011-8-6 17:55:22 | 显示全部楼层
呀- -    问题有点蛋疼  估计那天蒙了。。。。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
 楼主| 发表于 2011-8-6 18:01:28 | 显示全部楼层
本帖最后由 wdl7770016 于 2011-8-6 18:06 编辑

额  不对啊- -   我又看了下答案    刚才差点被忽悠了-0 -    我知道这ax不够放10000h   然后产生溢出了   那溢出的话 OF标志位不就变成1了吗?  可是小甲鱼的答案是0  为什么啊?   问题没提好是我的失误   希望大家再看看。。。。谢谢        http://www.fishc.com/a/kehouti/_huibianyuyan_/933.html甲鱼11.4答案
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2011-8-6 18:49:32 | 显示全部楼层
:Q至少我看懂了.
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2011-8-6 19:35:37 | 显示全部楼层
mov ax,0fff0h     有符号运算时     ax的范围是-32678~32627     ax=-16
add ax,10h          没溢出    of=0
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
 楼主| 发表于 2011-8-7 17:17:59 | 显示全部楼层

请问为什么OFFFO是-16啊  我就是不懂这东西- -   能不能把换算步骤一步一步列给我看啊  (我承认我比较笨:)我看过补码拿东西  但是真遇到这种题就是不会算 希望给个葫芦让我画下瓢。,,
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2011-8-7 17:36:46 | 显示全部楼层
-16的补码 =16的补码即二进制数 0000 0000 0001 0000 取反 1111 1111 1110 1111  +1 =  fff0h
fff0h-1b  取反   得到-16
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
 楼主| 发表于 2011-8-9 17:34:13 | 显示全部楼层
zhdw 发表于 2011-8-7 17:36
-16的补码 =16的补码即二进制数 0000 0000 0001 0000 取反 1111 1111 1110 1111  +1 =  fff0h
fff0h-1b  取 ...

恩  我懂了  谢谢啊  但为什么要把它看成-16呢?  我把它看成65520不行吗?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2011-8-9 17:57:16 | 显示全部楼层
如果一个值被当作带符号数,只要它的二进制数最高位为1就需要按照补码计算,这里规定按带符号运算,所以。。。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
 楼主| 发表于 2011-8-10 17:35:06 | 显示全部楼层
parbbo 发表于 2011-8-9 17:57
如果一个值被当作带符号数,只要它的二进制数最高位为1就需要按照补码计算,这里规定按带符号运算,所以。。 ...

哦  哦   那是不是因为要求的是OF    而又只有带符号数才有溢出   所以只有看成带符号数才能求出OF?
我发现我越来越笨了  哈哈哈
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2012-9-12 08:34:12 | 显示全部楼层
对的.溢出不溢出.首先你要先将他看成是是有符号数,-16+16肯定不会溢出的
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2014-2-14 11:31:58 | 显示全部楼层
zhdw 发表于 2011-8-7 17:36
-16的补码 =16的补码即二进制数 0000 0000 0001 0000 取反 1111 1111 1110 1111  +1 =  fff0h
fff0h-1b  取 ...

这里我也不懂啊,计算以前还没得出-16呢啊,你怎么就从-16开始算了呢?弄的我好晕啊,晕头转向了。。。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-11-17 22:47

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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