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),然后只有在计算的过程中才把第一个数的补码求出来,还是第一个数已经是补码的形式了?到底是怎样的?求解答啊。。。。。
因为ax只能容纳4位16进制,f+1要进位,fff0+10=10000H,低四位存入ax,所以就是0000 ax是16位寄存器,不能存储1000H,所以会发生溢出,即数据的截断。。。 楼主,你水平有问题!需要恶补知识 这个题貌似不存在补码吧!除了一个标志位
0ff f0
00 010
---------------------
10 000
请楼主回答f+1=? 我估计楼主不会算 呀- - 问题有点蛋疼估计那天蒙了。。。。 本帖最后由 wdl7770016 于 2011-8-6 18:06 编辑
额不对啊- - 我又看了下答案 刚才差点被忽悠了-0 - 我知道这ax不够放10000h 然后产生溢出了 那溢出的话 OF标志位不就变成1了吗?可是小甲鱼的答案是0为什么啊? 问题没提好是我的失误 希望大家再看看。。。。谢谢 http://www.fishc.com/a/kehouti/_huibianyuyan_/933.html甲鱼11.4答案 :Q至少我看懂了. mov ax,0fff0h 有符号运算时 ax的范围是-32678~32627 ax=-16
add ax,10h 没溢出 of=0 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:} -16的补码 =16的补码即二进制数 0000 0000 0001 0000 取反 1111 1111 1110 1111+1 =fff0h
fff0h-1b取反 得到-16 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不行吗? 如果一个值被当作带符号数,只要它的二进制数最高位为1就需要按照补码计算,这里规定按带符号运算,所以。。。 parbbo 发表于 2011-8-9 17:57 static/image/common/back.gif
如果一个值被当作带符号数,只要它的二进制数最高位为1就需要按照补码计算,这里规定按带符号运算,所以。。 ...
哦哦 那是不是因为要求的是OF 而又只有带符号数才有溢出 所以只有看成带符号数才能求出OF?
我发现我越来越笨了哈哈哈{:5_107:}
对的.溢出不溢出.首先你要先将他看成是是有符号数,-16+16肯定不会溢出的 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]