|
主题 : : 第三章测试题怎么想都想不明白,请帮帮忙给个思路 [待解决] |
回复[ 39次 ]
点击[ 2759次 ] | |
|
|
|
|
[帖 主]
[ 发表时间:2008-05-01 01:21 ]
[引用]
[回复]
[ top ] | |
荣誉值:0
信誉值:0
注册日期:2008-04-27 16:45 |
能够将ax中的内容送到内存0000:0200H处的指令序列是___。
1、 mov ds,0
mov bx,200h
mov [bx],ax
2、 mov ax,200h
mov ds,ax
mov bx,0
mov [bx],ax
3、 mov ax,20h
mov ds,ax
mov bx,0
mov [bx],ax
4、 mov bx,20h
mov ds,bx
mov bx,0
mov [bx],ax
这个答案怎么会是4呢。
mov ds,bx ds=2000H
最后mov [bx],ax 怎么会把ax送到0000:0200处呢?
不明白,谁告诉我为什么? | | |
|
|
|
|
[第1楼]
[ 回复时间:2008-05-01 09:00 ]
[引用]
[回复]
[ top ] | |
荣誉值:472
信誉值:12
注册日期:2007-10-16 15:34 |
能够将ax中的内容送到内存0000:0200H处的指令序列是___。
----------
我们如果实现上面的要求,首先应该找到0000:0200H,然后把ax写进去。
0000:0200H的物理地址是 0000*10h+0200H=00200H
这个答案怎么会是4呢。
mov bx,20h
mov ds,bx ds=2000H
--------------
很疑惑楼主是怎么得出ds=2000H的?根据mov指令的用法,很显然ds=20H | | |
|
|
|
|
[第2楼]
[ 回复时间:2008-05-01 09:59 ]
[引用]
[回复]
[ top ] | |
荣誉值:0
信誉值:0
注册日期:2008-04-27 16:45 |
|
|
|
|
|
[第3楼]
[ 回复时间:2008-05-03 20:44 ]
[引用]
[回复]
[ top ] | |
荣誉值:0
信誉值:0
注册日期:2008-04-30 22:14 |
第三个答案应该也可以啊,为什么不是三?而且3和4只有前面2句不同 | | |
|
|
|
|
[第4楼]
[ 回复时间:2008-05-03 22:35 ]
[引用]
[回复]
[ top ] | |
荣誉值:0
信誉值:0
注册日期:2008-04-09 16:17 |
第三个答案AX用了传送指令,AX里面的内容已经被改变,不符合题意。 | | |
|
|
|
|
[第5楼]
[ 回复时间:2008-05-08 22:13 ]
[引用]
[回复]
[ top ] | |
荣誉值:0
信誉值:0
注册日期:2008-05-05 06:57 |
0000:0200H的物理地址是 0000*10h+0200H=00200H
也可以这样表示
0020h*10h+0=00200h,所以有:
mov bx,20h
mov ds,bx
mov bx,0
mov [bx],ax | | |
|
|
|
|
[第6楼]
[ 回复时间:2008-05-09 16:58 ]
[引用]
[回复]
[ top ] | |
荣誉值:0
信誉值:0
注册日期:2008-04-30 14:40 |
1、 mov ds,0
mov bx,200h
mov [bx],ax
原因 mov ds,0不能直接将数据送给段寄存器
2、 mov ax,200h
mov ds,ax
mov bx,0
mov [bx],ax
原因 最后有200*10+0=2000单元数据为200
3、 mov ax,20h
mov ds,ax
mov bx,0
mov [bx],ax
原因 最后有20*10+0=200单元数据为20
4、 mov bx,20h
mov ds,bx
mov bx,0
mov [bx],ax
原因 最后有20*10+0=200单元数据为ax | | |
|
|
|
|
[第7楼]
[ 回复时间:2008-05-21 23:57 ]
[引用]
[回复]
[ top ] | |
荣誉值:0
信誉值:0
注册日期:2008-03-07 14:48 |
我用简单的理解方法看的不知道对不对 题的要求是将AX中的内容送到内存0000:0200H处的指令
2、 mov ax,200h
mov ds,ax
mov bx,0
mov [bx],ax
3、 mov ax,20h
mov ds,ax
mov bx,0
mov [bx],ax 这2个方法都是把AX的值变了 根本就不用去看他是否错误了 不知道 我的看法对否 | | |
|
|
|
|
[第8楼]
[ 回复时间:2008-05-22 21:44 ]
[引用]
[回复]
[ top ] | |
荣誉值:0
信誉值:0
注册日期:2008-05-06 14:36 |
|
|
|
|
|
[第9楼]
[ 回复时间:2008-05-22 21:44 ]
[引用]
[回复]
[ top ] | |
荣誉值:0
信誉值:0
注册日期:2008-05-06 14:36 |
回复:[第6楼]
------------------
透彻 | | |
|
|
|
|
[第10楼]
[ 回复时间:2009-09-08 17:08 ]
[引用]
[回复]
[ top ] | |
荣誉值:2
信誉值:6
注册日期:2009-08-31 08:25 |
|
|
|
|
|
[第11楼]
[ 回复时间:2009-10-08 21:36 ]
[引用]
[回复]
[ top ] | |
荣誉值:2
信誉值:0
注册日期:2009-09-14 21:54 |
|
|
|
|
|
[第12楼]
[ 回复时间:2009-10-10 16:23 ]
[引用]
[回复]
[ top ] | |
荣誉值:0
信誉值:0
注册日期:2009-09-28 17:06 |
|
|
|
|
|
[第13楼]
[ 回复时间:2009-10-13 21:46 ]
[引用]
[回复]
[ top ] | |
荣誉值:0
信誉值:0
注册日期:2009-10-13 21:45 |
噢...想提个问题 ,如果4中没有 mov bx,0 还对么? | | |
|
|
|
|
[第14楼]
[ 回复时间:2009-10-14 16:36 ]
[引用]
[回复]
[ top ] | |
荣誉值:0
信誉值:0
注册日期:2009-10-14 16:10 |
既然要将ax中的内容送到内存0000:0200H处,就必须先行创立一个内存。而不是像3,一开始就将ax改变了 | | |
|
|
|
|
[第15楼]
[ 回复时间:2009-10-28 12:37 ]
[引用]
[回复]
[ top ] | |
荣誉值:0
信誉值:0
注册日期:2009-10-23 14:53 |
|
|
|
|
|
[第16楼]
[ 回复时间:2009-11-06 02:12 ]
[引用]
[回复]
[ top ] | |
荣誉值:10
信誉值:4
注册日期:2009-05-30 22:14 |
这题的第三个选项有点纠结了,第三个选项,从地址算法角度来说还是复合题意的,没错,可是实际运用只就达不到目的,太阴了....... | | |
|
|
|
|
[第17楼]
[ 回复时间:2009-11-23 13:21 ]
[引用]
[回复]
[ top ] | |
荣誉值:0
信誉值:0
注册日期:2009-11-17 18:18 |
13L 肯定不对了啊 BX不为0 那后面一步就有偏移了 不是位置0000:0200H了 | | |
|
|
|
|
[第18楼]
[ 回复时间:2009-12-15 21:33 ]
[引用]
[回复]
[ top ] | |
荣誉值:0
信誉值:0
注册日期:2009-12-04 16:20 |
|
|
|
|
|
[第19楼]
[ 回复时间:2009-12-25 01:22 ]
[引用]
[回复]
[ top ] | |
荣誉值:61
信誉值:0
注册日期:2009-12-19 01:51 |
mov ax,1234
mov bx,ax
mov ax,0000
mov ds,ax
mov [200],bx | | |
|
|
|
|
[第20楼]
[ 回复时间:2009-12-25 14:48 ]
[引用]
[回复]
[ top ] | |
荣誉值:0
信誉值:0
注册日期:2007-10-17 09:53 |
4、 mov bx,20h (bx)=20h
mov ds,bx (ds)=20h
mov bx,0 (bx)=0
mov [bx],ax 这句相当于 mov ds:[bx],ax
好了,那看把AX送到哪了,只需要明白ds:[bx]是哪个地址就可以了
首先要知道ds:[bx]表示的是哪个地址 实际地址=ds*10h+bx 也就是ds*16+bx
可以算一下实际地址为20h*16+0=512 这是十进制,转换成16进制是200h(从这也可以看出来20h*10h=200h即*10h 也即左移一位)
再看题目要求:能够将ax中的内容送到内存0000:0200H处的指令序列是___。
0000:0200H=0000*10H+0200=200H
这就是目的地址,一样子,所以就是这个了
1253996855,有什么问题可以加我 | | |
|
|
|
|
[第21楼]
[ 回复时间:2010-01-06 21:30 ]
[引用]
[回复]
[ top ] | |
荣誉值:0
信誉值:0
注册日期:2009-06-13 19:57 |
1,不能直接往段寄存器里赐值
2,0000:0200H物理地址为200H而第2个为2000H
3,既然将ax中的内容送入内存,再用mov ax,20覆盖原有数据就不对了,所以要从新用个寄存器
所以4是对的
其实2和3都存在AX被修改的问题
这题出的好阴险存在文字游戏的嫌疑~~哈哈~~~我也想了 好久~~~ | | |
|
|
|
|
[第22楼]
[ 回复时间:2010-01-10 17:06 ]
[引用]
[回复]
[ top ] | |
荣誉值:4
信誉值:6
注册日期:2010-01-07 10:37 |
|
|
|
|
|
[第23楼]
[ 回复时间:2010-01-15 18:11 ]
[引用]
[回复]
[ top ] | |
荣誉值:2
信誉值:0
注册日期:2007-12-08 14:22 |
最有可能的是1 、 4
1 mov ds,0 就错了 不能直接往数据段传送值 | | |
|
|
|
|
[第24楼]
[ 回复时间:2010-01-18 23:11 ]
[引用]
[回复]
[ top ] | |
荣誉值:0
信誉值:4
注册日期:2009-10-17 21:41 |
我原来选A了,一直不知道为什么错了,原来老眼昏花了 | | |
|
|
|
|
[第25楼]
[ 回复时间:2010-06-03 17:24 ]
[引用]
[回复]
[ top ] | |
荣誉值:0
信誉值:0
注册日期:2010-05-10 21:21 |
|
|
|
|
|
[第26楼]
[ 回复时间:2010-06-10 22:25 ]
[引用]
[回复]
[ top ] | |
荣誉值:2
信誉值:10
注册日期:2010-06-09 16:22 |
哦,明白了,我也选3,愿来3的寄存器冲突,原值已改变!!又学习了 | | |
|
|
|
|
[第27楼]
[ 回复时间:2010-06-20 11:29 ]
[引用]
[回复]
[ top ] | |
荣誉值:0
信誉值:0
注册日期:2010-06-08 22:23 |
1、 mov ds,0
mov bx,200h
mov [bx],ax
原因 mov ds,0不能直接将数据送给段寄存器
2、 mov ax,200h
mov ds,ax
mov bx,0
mov [bx],ax
原因 最后有200*10+0=2000单元数据为200
3、 mov ax,20h
mov ds,ax
mov bx,0
mov [bx],ax
原因 最后有20*10+0=200单元数据为20
4、 mov bx,20h
mov ds,bx
mov bx,0
mov [bx],ax
原因 最后有20*10+0=200单元数据为ax
------------------
回复:第三题是因为寄存器AX中的值被覆盖了 | | |
|
|
|
|
[第28楼]
[ 回复时间:2010-07-13 18:35 ]
[引用]
[回复]
[ top ] | |
荣誉值:4
信誉值:0
注册日期:2010-07-11 15:39 |
我觉得3也未尝不可啊.虽然AX内容变了.但这内容毕竟是属于AX里面的,他题意又没特别指定 要传送什么样式的内容.而是针对AX传送即可.... | | |
|
|
|
|
[第29楼]
[ 回复时间:2010-07-13 18:38 ]
[引用]
[回复]
[ top ] | |
荣誉值:4
信誉值:0
注册日期:2010-07-11 15:39 |
AX里面的内容是不确定的(除非题目特别指出内容)......
那如果在我的机器上,AX原来的内容就是20H,那第三题怎算? | | |
|
|
|
|
[第30楼]
[ 回复时间:2010-07-21 19:03 ]
[引用]
[回复]
[ top ] | |
荣誉值:8
信誉值:0
注册日期:2010-07-12 08:47 |
|
|
|
|
|
[第31楼]
[ 回复时间:2010-08-04 10:35 ]
[引用]
[回复]
[ top ] | |
荣誉值:0
信誉值:0
注册日期:2010-06-04 13:13 |
忍不住回复第29楼。。。做题怎么还能自己往上加如果呢
这题的3选项只有在29楼说的情况,也就是AX的内容为20H时,才正确,也只不过是结果正确。
而第4选项在各种情况下都正确。
也就是说,3不过有时正确(所以有时也错误),而4是任何情况下都正确,那么应该选哪一个呢?!! | | |
|
|
|
|
[第32楼]
[ 回复时间:2010-10-12 07:25 ]
[引用]
[回复]
[ top ] | |
荣誉值:0
信誉值:0
注册日期:2009-01-17 12:29 |
我觉得3也未尝不可啊.虽然AX内容变了.但这内容毕竟是属于AX里面的,他题意又没特别指定 要传送什么样式的内容.而是针对AX传送即可....
------------------
回复:我也这么看。可能这是王爽老师故意的,激发大伙的语言思维方法。在遇到实际编程情况时,如果AX中值不能改变,相信也能做到,就如第4个答案那样。 | | |
|
|
|
|
[第33楼]
[ 回复时间:2010-11-12 18:37 ]
[引用]
[回复]
[ top ] | |
荣誉值:0
信誉值:0
注册日期:2010-11-11 17:55 |
就是4正确,自习分析一下就出来了,就像六楼解释的那样呀。 | | |
|
|
|
|
[第34楼]
[ 回复时间:2010-11-17 13:36 ]
[引用]
[回复]
[ top ] | |
荣誉值:0
信誉值:0
注册日期:2010-11-16 10:46 |
谢谢,我开始也以为3,4都对,看上楼上的分析才知道3错误的原因 | | |
|
|
|
|
[第35楼]
[ 回复时间:2011-05-05 11:57 ]
[引用]
[回复]
[ top ] | |
荣誉值:0
信誉值:0
注册日期:2011-04-28 20:08 |
针对选项3 为什么不可以就传送ax改变后的值啊 也可以啊 | | |
|
|
|
|
[第36楼]
[ 回复时间:2011-05-16 13:10 ]
[引用]
[回复]
[ top ] | |
荣誉值:0
信誉值:0
注册日期:2011-05-03 21:50 |
|
|
|
|
|
[第37楼]
[ 回复时间:2011-08-15 12:24 ]
[引用]
[回复]
[ top ] | |
荣誉值:0
信誉值:0
注册日期:2011-08-06 18:12 |
学习了,争论这个题的结果没什么意思,知道解题思路与要点才是最重要的,如果是为了应付考试或者应付认证,那就继续争论争论,如果为了增长知识、提高自己的能力,只要明白自己要明白的,争论还有意思吗? | | |
|
|
|
|
[第38楼]
[ 回复时间:2011-08-21 21:44 ]
[引用]
[回复]
[ top ] | |
荣誉值:0
信誉值:0
注册日期:2011-08-21 21:07 |
1、 mov ds,0
mov bx,200h
mov [bx],ax
原因 mov ds,0不能直接将数据送给段寄存器
2、 mov ax,200h
mov ds,ax
mov bx,0
mov [bx],ax
原因 最后有200*10+0=2000单元数据为200
3、 mov ax,20h
mov ds,ax
mov bx,0
mov [bx],ax
原因 最后有20*10+0=200单元数据为20
4、 mov bx,20h
mov ds,bx
mov bx,0
mov [bx],ax
原因 最后有20*10+0=200单元数据为ax
------------------
回复:意思就是3中的AX数据被更改过,所以不符合题义,
第二题,是地址错了:段地址如果为零的话,偏移地址必为200,偏移地址为零的话,段地必为20!
谢六楼解释,懂起了! | | |
|
|
|
|
[第39楼]
[ 回复时间:2011-08-21 21:45 ]
[引用]
[回复]
[ top ] | |
荣誉值:0
信誉值:0
注册日期:2011-08-21 21:07 |
1、 mov ds,0
mov bx,200h
mov [bx],ax
原因 mov ds,0不能直接将数据送给段寄存器
2、 mov ax,200h
mov ds,ax
mov bx,0
mov [bx],ax
原因 最后有200*10+0=2000单元数据为200
3、 mov ax,20h
mov ds,ax
mov bx,0
mov [bx],ax
原因 最后有20*10+0=200单元数据为20
4、 mov bx,20h
mov ds,bx
mov bx,0
mov [bx],ax
原因 最后有20*10+0=200单元数据为ax
------------------
回复:意思就是3中的AX数据被更改过,所以不符合题义,
第二题,是地址错了:段地址如果为零的话,偏移地址必为200,偏移地址为零的话,段地必为20!
谢六楼解释,懂起了! | | |