wdl7770016 发表于 2011-8-4 15:46:19

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

【11.4】
【下面的程序执行后:(ax)=?
mov ax,0
pushax
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),然后只有在计算的过程中才把第一个数的补码求出来,还是第一个数已经是补码的形式了?到底是怎样的?求解答啊。。。。。                                    

parbbo 发表于 2011-8-4 16:03:06

因为ax只能容纳4位16进制,f+1要进位,fff0+10=10000H,低四位存入ax,所以就是0000

bevin 发表于 2011-8-4 19:20:57

ax是16位寄存器,不能存储1000H,所以会发生溢出,即数据的截断。。。

parbbo 发表于 2011-8-4 20:08:24

楼主,你水平有问题!需要恶补知识

zfzhuman123 发表于 2011-8-4 22:22:16

这个题貌似不存在补码吧!除了一个标志位
0ff   f0
00 010
---------------------
10 000
请楼主回答f+1=?

parbbo 发表于 2011-8-4 22:23:36

我估计楼主不会算

wdl7770016 发表于 2011-8-6 17:55:22

呀- -    问题有点蛋疼估计那天蒙了。。。。

wdl7770016 发表于 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答案

只是丶梦 发表于 2011-8-6 18:49:32

:Q至少我看懂了.

zhdw 发表于 2011-8-6 19:35:37

mov ax,0fff0h   有符号运算时   ax的范围是-32678~32627   ax=-16
add ax,10h          没溢出    of=0

wdl7770016 发表于 2011-8-7 17:17:59

zhdw 发表于 2011-8-6 19:35 static/image/common/back.gif
mov ax,0fff0h   有符号运算时   ax的范围是-32678~32627   ax=-16
add ax,10h          没溢出   ...

请问为什么OFFFO是-16啊我就是不懂这东西- -   能不能把换算步骤一步一步列给我看啊(我承认我比较笨:)我看过补码拿东西但是真遇到这种题就是不会算 希望给个葫芦让我画下瓢。,,{:5_109:}

zhdw 发表于 2011-8-7 17:36:46

-16的补码 =16的补码即二进制数 0000 0000 0001 0000 取反 1111 1111 1110 1111+1 =fff0h
fff0h-1b取反   得到-16

wdl7770016 发表于 2011-8-9 17:34:13

zhdw 发表于 2011-8-7 17:36 static/image/common/back.gif
-16的补码 =16的补码即二进制数 0000 0000 0001 0000 取反 1111 1111 1110 1111+1 =fff0h
fff0h-1b取 ...

恩我懂了谢谢啊但为什么要把它看成-16呢?我把它看成65520不行吗?

parbbo 发表于 2011-8-9 17:57:16

如果一个值被当作带符号数,只要它的二进制数最高位为1就需要按照补码计算,这里规定按带符号运算,所以。。。

wdl7770016 发表于 2011-8-10 17:35:06

parbbo 发表于 2011-8-9 17:57 static/image/common/back.gif
如果一个值被当作带符号数,只要它的二进制数最高位为1就需要按照补码计算,这里规定按带符号运算,所以。。 ...

哦哦   那是不是因为要求的是OF    而又只有带符号数才有溢出   所以只有看成带符号数才能求出OF?
我发现我越来越笨了哈哈哈{:5_107:}

pediyzhi 发表于 2012-9-12 08:34:12

对的.溢出不溢出.首先你要先将他看成是是有符号数,-16+16肯定不会溢出的

dugwei 发表于 2014-2-14 11:31:58

zhdw 发表于 2011-8-7 17:36 static/image/common/back.gif
-16的补码 =16的补码即二进制数 0000 0000 0001 0000 取反 1111 1111 1110 1111+1 =fff0h
fff0h-1b取 ...

这里我也不懂啊,计算以前还没得出-16呢啊,你怎么就从-16开始算了呢?弄的我好晕啊,晕头转向了。。。
页: [1]
查看完整版本: 11.4希望来人认真回答下(回答“不对啊!答案是。。”的就算了 我已无力了