. : : Assembly Language : : .  |  首页  |  我提出的问题  |  我参与的问题  |  我的收藏  |  消息中心   |  游客  登录  | 
刷新 | 提问 | 未解决 | 已解决 | 精华区 | 搜索 |
  《汇编语言》论坛 ->寄存器(内存访问)
  管理员: assembly   [回复本贴] [收藏本贴] [管理本贴] [关闭窗口]
主题 : :  第三章测试题怎么想都想不明白,请帮帮忙给个思路  [待解决] 回复[ 39次 ]   点击[ 2759次 ]  
cairulong
[帖 主]   [ 发表时间: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处呢? 
不明白,谁告诉我为什么?
mouse
[第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
cairulong
[第2楼]   [ 回复时间:2008-05-01 09:59 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2008-04-27 16:45
好,已经明白,谢谢!
y2j2c1
[第3楼]   [ 回复时间:2008-05-03 20:44 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2008-04-30 22:14
第三个答案应该也可以啊,为什么不是三?而且3和4只有前面2句不同
juqiao
[第4楼]   [ 回复时间:2008-05-03 22:35 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2008-04-09 16:17
第三个答案AX用了传送指令,AX里面的内容已经被改变,不符合题意。
titanlxf
[第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
zook0k
[第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
tlzbl
[第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的值变了 根本就不用去看他是否错误了  不知道 我的看法对否
jiada
[第8楼]   [ 回复时间:2008-05-22 21:44 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2008-05-06 14:36
深刻
jiada
[第9楼]   [ 回复时间:2008-05-22 21:44 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2008-05-06 14:36
回复:[第6楼]
------------------
透彻
ccqin
[第10楼]   [ 回复时间:2009-09-08 17:08 ]   [引用]   [回复]   [ top ] 
荣誉值:2
信誉值:6
注册日期:2009-08-31 08:25
测试题在哪里找到的  汗。。
chenxing263
[第11楼]   [ 回复时间:2009-10-08 21:36 ]   [引用]   [回复]   [ top ] 
荣誉值:2
信誉值:0
注册日期:2009-09-14 21:54
同意5L,7L
dhsoft
[第12楼]   [ 回复时间:2009-10-10 16:23 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2009-09-28 17:06
学习了
hejunting555
[第13楼]   [ 回复时间:2009-10-13 21:46 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2009-10-13 21:45
噢...想提个问题 ,如果4中没有 mov bx,0    还对么?
200710510125
[第14楼]   [ 回复时间:2009-10-14 16:36 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2009-10-14 16:10
既然要将ax中的内容送到内存0000:0200H处,就必须先行创立一个内存。而不是像3,一开始就将ax改变了
xtygaht
[第15楼]   [ 回复时间:2009-10-28 12:37 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2009-10-23 14:53
关于这个内存地址还是得多看看了```
nigg
[第16楼]   [ 回复时间:2009-11-06 02:12 ]   [引用]   [回复]   [ top ] 
荣誉值:10
信誉值:4
注册日期:2009-05-30 22:14
这题的第三个选项有点纠结了,第三个选项,从地址算法角度来说还是复合题意的,没错,可是实际运用只就达不到目的,太阴了.......
lxyraul
[第17楼]   [ 回复时间:2009-11-23 13:21 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2009-11-17 18:18
13L 肯定不对了啊 BX不为0 那后面一步就有偏移了 不是位置0000:0200H了
fencebach
[第18楼]   [ 回复时间:2009-12-15 21:33 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2009-12-04 16:20
感谢6楼
明白了
regex
[第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
li4096255
[第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,有什么问题可以加我
arcman
[第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被修改的问题

这题出的好阴险存在文字游戏的嫌疑~~哈哈~~~我也想了 好久~~~
qiangzi
[第22楼]   [ 回复时间:2010-01-10 17:06 ]   [引用]   [回复]   [ top ] 
荣誉值:4
信誉值:6
注册日期:2010-01-07 10:37
透彻啊~~~~
inrg
[第23楼]   [ 回复时间:2010-01-15 18:11 ]   [引用]   [回复]   [ top ] 
荣誉值:2
信誉值:0
注册日期:2007-12-08 14:22
最有可能的是1 、 4  
1 mov ds,0 就错了 不能直接往数据段传送值
hygf99
[第24楼]   [ 回复时间:2010-01-18 23:11 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:4
注册日期:2009-10-17 21:41
我原来选A了,一直不知道为什么错了,原来老眼昏花了
qiou_fong
[第25楼]   [ 回复时间:2010-06-03 17:24 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2010-05-10 21:21
学习了,谢谢!
zhengcong3250
[第26楼]   [ 回复时间:2010-06-10 22:25 ]   [引用]   [回复]   [ top ] 
荣誉值:2
信誉值:10
注册日期:2010-06-09 16:22
哦,明白了,我也选3,愿来3的寄存器冲突,原值已改变!!又学习了
joneui
[第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中的值被覆盖了
heiok
[第28楼]   [ 回复时间:2010-07-13 18:35 ]   [引用]   [回复]   [ top ] 
荣誉值:4
信誉值:0
注册日期:2010-07-11 15:39
我觉得3也未尝不可啊.虽然AX内容变了.但这内容毕竟是属于AX里面的,他题意又没特别指定 要传送什么样式的内容.而是针对AX传送即可....
heiok
[第29楼]   [ 回复时间:2010-07-13 18:38 ]   [引用]   [回复]   [ top ] 
荣誉值:4
信誉值:0
注册日期:2010-07-11 15:39
AX里面的内容是不确定的(除非题目特别指出内容)......

那如果在我的机器上,AX原来的内容就是20H,那第三题怎算?
liuquanhao7232
[第30楼]   [ 回复时间:2010-07-21 19:03 ]   [引用]   [回复]   [ top ] 
荣誉值:8
信誉值:0
注册日期:2010-07-12 08:47
终于明白3为什么错了。。。
woaiballack
[第31楼]   [ 回复时间:2010-08-04 10:35 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2010-06-04 13:13
忍不住回复第29楼。。。做题怎么还能自己往上加如果呢
这题的3选项只有在29楼说的情况,也就是AX的内容为20H时,才正确,也只不过是结果正确。
而第4选项在各种情况下都正确。
也就是说,3不过有时正确(所以有时也错误),而4是任何情况下都正确,那么应该选哪一个呢?!!
vs9841
[第32楼]   [ 回复时间:2010-10-12 07:25 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2009-01-17 12:29
我觉得3也未尝不可啊.虽然AX内容变了.但这内容毕竟是属于AX里面的,他题意又没特别指定 要传送什么样式的内容.而是针对AX传送即可....
------------------
回复:我也这么看。可能这是王爽老师故意的,激发大伙的语言思维方法。在遇到实际编程情况时,如果AX中值不能改变,相信也能做到,就如第4个答案那样。
y_xiaopeng890903
[第33楼]   [ 回复时间:2010-11-12 18:37 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2010-11-11 17:55
就是4正确,自习分析一下就出来了,就像六楼解释的那样呀。
robin2008
[第34楼]   [ 回复时间:2010-11-17 13:36 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2010-11-16 10:46
谢谢,我开始也以为3,4都对,看上楼上的分析才知道3错误的原因
447861996
[第35楼]   [ 回复时间:2011-05-05 11:57 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2011-04-28 20:08
针对选项3 为什么不可以就传送ax改变后的值啊  也可以啊
oct25th
[第36楼]   [ 回复时间:2011-05-16 13:10 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2011-05-03 21:50
35楼 抬杠
boble
[第37楼]   [ 回复时间:2011-08-15 12:24 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2011-08-06 18:12
学习了,争论这个题的结果没什么意思,知道解题思路与要点才是最重要的,如果是为了应付考试或者应付认证,那就继续争论争论,如果为了增长知识、提高自己的能力,只要明白自己要明白的,争论还有意思吗?
yipianyipian
[第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!

谢六楼解释,懂起了!
yipianyipian
[第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!

谢六楼解释,懂起了!
需要登录后才能回帖 -->> 请单击此处登录
    Copyright © 2006-2024   ASMEDU.NET  All Rights Reserved