|
主题 : : 11章检测题,做了四次还是错一条。这次记下来 [待解决] |
回复[ 11次 ]
点击[ 723次 ] | |
|
|
|
|
[帖 主]
[ 发表时间:2008-06-18 10:16 ]
[引用]
[回复]
[ top ] | |
荣誉值:0
信誉值:0
注册日期:2008-04-27 16:45 |
下列指令对标志寄存器内容产生影响,但不会改变参与其执行过程的其它寄存器内容的是____2__。
1、 loop s
2、 cmp cx,0
3、 jcxz s
4、 div cx
对于Intel8086cpu标志寄存器的说法正确的是__2___。
1、 cpu执行每一条指令都有可能改变标志寄存器的内容。
2、 无符号数运算的进位或借位情况由cf标志位记录,有符号数运算的溢出情况由of标志位记录。
3、 当前指令对标志寄存器的影响为此指令的执行提供了所需的依据,对后续指令没有任何指导作用。
4、 所有的条件转移指令都要参考标志寄存器中的相关标志位。
sub ax,ax
mov ax,5
add ax,-3
以上程序执行完后,CF,OF的值是__2___
1、 0,0
2、 0,1
3、 1,0
4、 1,1
mov ax,8
mov bx,3
cmp ax,bx
上面指令执行前ZF,PF的值是0,0,执行后ZF,PF的值是__1___
1、 0,1
2、 0,0
3、 1,0
4、 1,1
mov ax,0
push ax
popf
mov ax,0fff0h
add ax,0010h
pushf
pop ax
and al,11000101B
and ah,00001000B
上面指令执行后ax的值是_3___
1、 845H
2、 8C5H
3、 45H
4、 C5H
错了哪一条?第二题吗? | | |
|
|
|
|
[第1楼]
[ 回复时间:2008-06-18 14:09 ]
[引用]
[回复]
[ top ] | |
荣誉值:24
信誉值:21
注册日期:2007-08-13 23:04 |
sub ax,ax
mov ax,5
add ax,-3
以上程序执行完后,CF,OF的值是__2___
1、 0,0
2、 0,1
3、 1,0
4、 1,1
---------------
这题应该选1吧,应该没有溢出,寄存器是AX,16位的 | | |
|
|
|
|
[第2楼]
[ 回复时间:2008-06-18 15:13 ]
[引用]
[回复]
[ top ] | |
荣誉值:273
信誉值:0
注册日期:2008-01-23 20:23 |
第三题错了。
OF是对于有符号数来说的,结果超过了寄存器表示的有符号数的范围就会溢出。而5-3=2,显然没有超出。
CF是对于无符号数来说的,对于负数,要转换成其对应的补码,-3表示成补码是 1111 1111 1111 1110然后加上0000 0000 0000 0101后,其结果超过了ax最大无符号数的值FFFFH,所以就会产生进位,影响CF位。
这么说,楼主应该知道答案是什么了吧。
建议回头在看看标志寄存器章节的知识。 | | |
|
|
|
|
[第3楼]
[ 回复时间:2008-06-18 21:31 ]
[引用]
[回复]
[ top ] | |
荣誉值:24
信誉值:21
注册日期:2007-08-13 23:04 |
|
|
|
|
|
[第4楼]
[ 回复时间:2008-06-19 09:19 ]
[引用]
[回复]
[ top ] | |
荣誉值:0
信誉值:0
注册日期:2008-04-27 16:45 |
谢谢各位,受教了。
我把-3当作FDH来算了,其实是FFFDH才对!
在debug里跑一趟才知道。
谢谢了。。各位前辈们! | | |
|
|
|
|
[第5楼]
[ 回复时间:2008-07-18 10:36 ]
[引用]
[回复]
[ top ] | |
荣誉值:9
信誉值:3
注册日期:2008-06-12 09:16 |
sub ax,ax
mov ax,5
add ax,-3
以上程序执行完后,CF,OF的值是__2___
1、 0,0
2、 0,1
3、 1,0
4、 1,1
还是有点疑问啊。的确5-3等于2,是没有超出,只是将5和-3分别表示为二进制后,5D=0000,0000,0000,0101
(-3)D=1111,1111,1111,1101,两着相加为:
0000,0000,0000,0101
+1111,1111,1111,1101
=(1)0000,0000,0000,0010
1无论是进位还是溢出后,结果均为0000,0000,0000,0010,结果为2。跟直接的十进制运算结果一样。我是觉得既然涉及-3,肯定涉及到最高位为符号位,否则怎么可能在16位寄存器中保存它们。因为对于无符号运算,最高位不是符号位,既然如何怎么可能表示-3。 | | |
|
|
|
|
[第6楼]
[ 回复时间:2008-07-21 19:04 ]
[引用]
[回复]
[ top ] | |
荣誉值:0
信誉值:0
注册日期:2008-07-18 07:43 |
还是有点疑问啊。的确5-3等于2,是没有超出,只是将5和-3分别表示为二进制后,5D=0000,0000,0000,0101
(-3)D=1111,1111,1111,1101,两着相加为:
------------------------------------------------------------------------
-1为FFFF,-2为FFFE, -3为FFFD(1111,1111,1111,1100)!!!!!! | | |
|
|
|
|
[第7楼]
[ 回复时间:2008-07-23 09:09 ]
[引用]
[回复]
[ top ] | |
荣誉值:9
信誉值:3
注册日期:2008-06-12 09:16 |
不知道是你错,还是我错。(-3)原=1000,0000,0000,0011.(-3)反=1111,1111,1111,1100.
(-3)补=(-3)反+1=1111,1111,1111,1101. | | |
|
|
|
|
[第8楼]
[ 回复时间:2008-07-23 09:18 ]
[引用]
[回复]
[ top ] | |
荣誉值:9
信誉值:3
注册日期:2008-06-12 09:16 |
(-2)原=1000,0000,0000,0010.
(-2)反=1111,1111,1111,1101.
(-2)补=1111,1111,1111,1110=FFFE.
(-1)原=1000,0000,0000,0001.
(-1)反=1111,1111,1111,1110.
(-1)补=1111,1111,1111,1111=FFFF。
(-3)原=1000,0000,0000,0011.
(-3)反=1111,1111,1111,1100.
(-3)补=(-3)反+1=1111,1111,1111,1101=FFFD.
你自己在计算一下,四位二进制数1100相当多少啊。(1100)B=0+0+4+8=十进制的12=十六进制的C。 | | |
|
|
|
|
[第9楼]
[ 回复时间:2008-07-23 09:28 ]
[引用]
[回复]
[ top ] | |
荣誉值:9
信誉值:3
注册日期:2008-06-12 09:16 |
所以younggay和ym3823078在-3的补码问题搞错了。希望你们再好好看一下。不要下次弄错。 | | |
|
|
|
|
[第10楼]
[ 回复时间:2008-09-15 19:55 ]
[引用]
[回复]
[ top ] | |
荣誉值:0
信誉值:0
注册日期:2008-08-29 19:04 |
sub ax,ax
mov ax,5
add ax,-3
以上程序执行完后,CF,OF的值是__3___
1、 0,0
2、 0,1
3、 1,0
4、 1,1 | | |
|
|
|
|
[第11楼]
[ 回复时间:2008-11-16 14:41 ]
[引用]
[回复]
[ top ] | |
荣誉值:273
信誉值:0
注册日期:2008-01-23 20:23 |
所以younggay和ym3823078在-3的补码问题搞错了。希望你们再好好看一下。不要下次弄错。
------------------
回复:谢谢towersimper的指正。是我弄错了。下次会注意。 | | |
|