. : : Assembly Language : : .  |  首页  |  我提出的问题  |  我参与的问题  |  我的收藏  |  消息中心   |  游客  登录  | 
刷新 | 提问 | 未解决 | 已解决 | 精华区 | 搜索 |
  《汇编语言》论坛 ->寄存器(内存访问)
  管理员: assembly   [回复本贴] [收藏本贴] [管理本贴] [关闭窗口]
主题 : :  关于第3章 3.4的“mov 段寄存器,内存单元”  [已解决] 回复[ 7次 ]   点击[ 545次 ]  
suixin
[帖 主]   [ 发表时间:2009-11-28 22:21 ]   [引用]   [回复]   [ top ] 
荣誉值:7
信誉值:10
注册日期:2009-11-19 11:28
mov ax,1000h
mov ds,ax
mov ds,[0]

dx=????
这个题那位老师给讲讲一直很困惑
scuzg
[第1楼]   [ 回复时间:2009-11-29 08:37 ]   [引用]   [回复]   [ top ] 
荣誉值:307
信誉值:0
注册日期:2009-03-15 23:46
楼主写的:
dx=???? 
是笔误吧?是不是:
ds=???? 
我假设楼主问的是ds作答。
我认为3.4这几句代码:
mov ax,1000h 
mov ds,ax 
mov ds,[0] 
的目的,是说明“mov 段寄存器,内存单元”也是可行的这个结论,所以代码运行后ds的值是多少并不重要。
suixin
[第2楼]   [ 回复时间:2009-11-29 10:40 ]   [引用]   [回复]   [ top ] 
荣誉值:7
信誉值:10
注册日期:2009-11-19 11:28
我想问的是这个题为什么1000:0中的值却是ds的值而不是[0]的值
scuzg
[第3楼]   [ 回复时间:2009-11-29 14:37 ]   [引用]   [回复]   [ top ] 
荣誉值:307
信誉值:0
注册日期:2009-03-15 23:46
当执行了指令:
mov ax,1000h  
mov ds,ax  
后,ds的内容就是1000h,然后指令:
mov ds,[0]
就是将1000H:0字单元的内容送ds,也就是说,上条指令的源操作数是“直接寻址方式”,偏移量直接就是0,而段基址的高16位默认使用ds的内容,现在ds中是1000h,所以读取[0]的内容就是读取1000:0的内容。
suixin
[第4楼]   [ 回复时间:2009-11-29 14:43 ]   [引用]   [回复]   [ top ] 
荣誉值:7
信誉值:10
注册日期:2009-11-19 11:28
可是事实上在debug上的结果很让我困惑它却不是1000:0指向的内容
suixin
[第5楼]   [ 回复时间:2009-11-29 14:57 ]   [引用]   [回复]   [ top ] 
荣誉值:7
信誉值:10
注册日期:2009-11-19 11:28
谢谢SCUZG,
我重新做了遍
mov ax,1000h 
mov ds,ax 
mov ds,[0] 
的确ds=[0]的内容
scuzg
[第6楼]   [ 回复时间:2009-11-29 20:55 ]   [引用]   [回复]   [ top ] 
荣誉值:307
信誉值:0
注册日期:2009-03-15 23:46
应用是:
ds的新内容是以ds的旧内容1000h为段基址,以0为偏移量的那个字存储单元的内容。
suixin
[第7楼]   [ 回复时间:2009-11-30 11:11 ]   [引用]   [回复]   [ top ] 
荣誉值:7
信誉值:10
注册日期:2009-11-19 11:28
此贴由 贴主 于 [ 2009-11-30 11:11 ] 结贴。 结贴原因:问题已解决
得分情况: 6楼(scuzg):12分  
此问题已结贴!
    Copyright © 2006-2024   ASMEDU.NET  All Rights Reserved