|
主题 : : 关于第3章 3.4的“mov 段寄存器,内存单元” [已解决] |
回复[ 7次 ]
点击[ 545次 ] | |
|
|
|
|
[帖 主]
[ 发表时间:2009-11-28 22:21 ]
[引用]
[回复]
[ top ] | |
荣誉值:7
信誉值:10
注册日期:2009-11-19 11:28 |
mov ax,1000h
mov ds,ax
mov ds,[0]
dx=????
这个题那位老师给讲讲一直很困惑 | | |
|
|
|
|
[第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的值是多少并不重要。 | | |
|
|
|
|
[第2楼]
[ 回复时间:2009-11-29 10:40 ]
[引用]
[回复]
[ top ] | |
荣誉值:7
信誉值:10
注册日期:2009-11-19 11:28 |
我想问的是这个题为什么1000:0中的值却是ds的值而不是[0]的值 | | |
|
|
|
|
[第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的内容。 | | |
|
|
|
|
[第4楼]
[ 回复时间:2009-11-29 14:43 ]
[引用]
[回复]
[ top ] | |
荣誉值:7
信誉值:10
注册日期:2009-11-19 11:28 |
可是事实上在debug上的结果很让我困惑它却不是1000:0指向的内容 | | |
|
|
|
|
[第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]的内容 | | |
|
|
|
|
[第6楼]
[ 回复时间:2009-11-29 20:55 ]
[引用]
[回复]
[ top ] | |
荣誉值:307
信誉值:0
注册日期:2009-03-15 23:46 |
应用是:
ds的新内容是以ds的旧内容1000h为段基址,以0为偏移量的那个字存储单元的内容。 | | |
|
|
|
|
[第7楼]
[ 回复时间:2009-11-30 11:11 ]
[引用]
[回复]
[ top ] | |
荣誉值:7
信誉值:10
注册日期:2009-11-19 11:28 |
此贴由 贴主 于 [ 2009-11-30 11:11 ] 结贴。 结贴原因:问题已解决 | | |