. : : Assembly Language : : .  |  首页  |  我提出的问题  |  我参与的问题  |  我的收藏  |  消息中心   |  游客  登录  | 
刷新 | 提问 | 未解决 | 已解决 | 精华区 | 搜索 |
  《汇编语言》论坛 ->寄存器(内存访问)
  管理员: assembly   [回复本贴] [收藏本贴] [管理本贴] [关闭窗口]
主题 : :  检测题不明白,请教?  [待解决] 回复[ 8次 ]   点击[ 562次 ]  
jonytan
[帖 主]   [ 发表时间:2010-05-16 00:08 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2010-05-04 17:53
能够将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个答案 按我所学应为1是对的, 但是DS 是不能直接装入数据的的,而是要通过寄存器来中转! 其它的段地址均错了,应不对!

请教各位老师指点 是这样吗? 希能详细解说!

谢谢!
mess
[第1楼]   [ 回复时间:2010-05-17 15:53 ]   [引用]   [回复]   [ top ] 
荣誉值:337
信誉值:0
注册日期:2008-01-01 17:48
上面4个答案 按我所学应为1是对的, 但是DS 是不能直接装入数据的的,而是要通过寄存器来中转!
--------------
你已经给自己解释了,第一题不对的原因,此句有语法错误。

0:200=200H(物理地址)
20:0 =200H(物理地址)
两者的物理地址相同。

注意理解,同一个物理地址可以由不同的段地址和偏移地址组成。
jonytan
[第2楼]   [ 回复时间:2010-05-17 23:01 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2010-05-04 17:53
明白了!谢谢指点!
xohome
[第3楼]   [ 回复时间:2010-11-29 16:16 ]   [引用]   [回复]   [ top ] 
荣誉值:2
信誉值:2
注册日期:2010-11-24 11:04
答案3和4有啥区别??
jtrakn
[第4楼]   [ 回复时间:2010-11-29 21:15 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:4
注册日期:2010-11-25 19:35
bx可以用来存放存储器的地址或地址的一部分。。。】
yy0000111
[第5楼]   [ 回复时间:2010-12-16 11:59 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2010-12-16 11:41
3已经把AX原来的内容覆盖了…虽然最后送入了内存,却已经不是之前想要传进取的数据了…
novelasm
[第6楼]   [ 回复时间:2011-01-14 15:15 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2011-01-13 23:25
1错啦 因为它执行了mov ds,0  违反了立即数不能直接赋值给段寄存器的原则
2错 因为mov ax,200h 
    mov ds,ax 
    mov bx,0 
得到的地址是02000+0=02000H 是错误的地址
3跟4是对的
novelasm
[第7楼]   [ 回复时间:2011-01-14 15:16 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2011-01-13 23:25
不好意思  3是不对的 因为它覆盖了ax的内容
linfeng0928
[第8楼]   [ 回复时间:2011-01-17 00:37 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2011-01-01 18:29
看了一会,原来AX是要传送的内容,所以3是错的
需要登录后才能回帖 -->> 请单击此处登录
    Copyright © 2006-2024   ASMEDU.NET  All Rights Reserved