|
主题 : : 实验二有个大问题 [待解决] |
回复[ 14次 ]
点击[ 888次 ] | |
|
|
|
|
[帖 主]
[ 发表时间:2009-08-27 02:15 ]
[引用]
[回复]
[ top ] | |
荣誉值:15
信誉值:0
注册日期:2009-07-08 20:35 |
据书中P67实验二所述,在DEBUG中执行“D 1000:0”时,段地址1000会送入寄存器DS中,但在执行后,发现DS中的数据并没有变化,这是怎么回事(我真郁闷了,刚学时还没发现,回头复习时发现了个这么大的问题,真是太粗心啦) | | |
|
|
|
|
[第1楼]
[ 回复时间:2009-08-27 22:12 ]
[引用]
[回复]
[ top ] | |
荣誉值:0
信誉值:0
注册日期:2009-04-14 13:00 |
|
|
|
|
|
[第2楼]
[ 回复时间:2009-09-13 15:36 ]
[引用]
[回复]
[ top ] | |
荣誉值:15
信誉值:0
注册日期:2009-07-08 20:35 |
不对,不是我理解错了,我看好几遍了,应该是你没仔细看 | | |
|
|
|
|
[第3楼]
[ 回复时间:2009-09-13 19:33 ]
[引用]
[回复]
[ top ] | |
荣誉值:188
信誉值:4
注册日期:2009-07-05 19:26 |
据书中P67实验二所述,在DEBUG中执行“D 1000:0”时,段地址1000会送入寄存器DS中,但在执行后,发现DS中的数据并没有变化,这是怎么回事
=========================================================================================
没明白LZ想问什么?
执行“D 1000:0”是查看1000:0中的内容,段地址1000当然不会送入DS | | |
|
|
|
|
[第4楼]
[ 回复时间:2009-10-21 13:11 ]
[引用]
[回复]
[ top ] | |
荣誉值:2
信誉值:0
注册日期:2009-10-09 11:42 |
|
|
|
|
|
[第5楼]
[ 回复时间:2009-11-19 13:44 ]
[引用]
[回复]
[ top ] | |
荣誉值:3
信誉值:0
注册日期:2009-10-27 16:12 |
书中原文是:D命令是由Debug执行的,Debug在执行"D 1000:0"这样的命令时,也会将段地址1000H送入段寄存器中。
接下来,书上又说了,Deubug是靠什么来执行D命令的?当然是一段程序
===================================================================================
我学完第四章回过头来理解这句话的时候是这样想的
D命令也是一段程序,在这段程序中有一段指令是修改DS值的。执行完之后,会有一个程序返回,在D命令程序末尾段返回了原来DS中的值
所以,执行D 1000:0这条命令后,我们看到DS中的值根本没有发现改变
-------以上纯属个人理解,具体真实的解释留给高手了。 | | |
|
|
|
|
[第6楼]
[ 回复时间:2009-11-19 17:06 ]
[引用]
[回复]
[ top ] | |
荣誉值:0
信誉值:0
注册日期:2009-11-16 09:59 |
|
|
|
|
|
[第7楼]
[ 回复时间:2009-12-22 16:19 ]
[引用]
[回复]
[ top ] | |
荣誉值:0
信誉值:0
注册日期:2008-01-14 11:55 |
|
|
|
|
|
[第8楼]
[ 回复时间:2009-12-25 14:38 ]
[引用]
[回复]
[ top ] | |
荣誉值:12
信誉值:0
注册日期:2009-02-14 14:25 |
是楼主搞错了吧,D命令是用来查看内存单元的数据的,不会改变DS的内容。 | | |
|
|
|
|
[第9楼]
[ 回复时间:2009-12-28 16:17 ]
[引用]
[回复]
[ top ] | |
荣誉值:6
信誉值:0
注册日期:2009-12-18 19:53 |
|
|
|
|
|
[第10楼]
[ 回复时间:2009-12-29 20:07 ]
[引用]
[回复]
[ top ] | |
荣誉值:2
信誉值:1
注册日期:2009-12-24 11:13 |
我也是新手,在p82页看到了这段话,我理解是d命令作为一个程序,中间会有 add ds 1000的指令。然后才能去访问1000:0的内存。楼主这个问题提得真好,我同意你后来的理解 | | |
|
|
|
|
[第11楼]
[ 回复时间:2009-12-29 21:21 ]
[引用]
[回复]
[ top ] | |
荣誉值:61
信誉值:0
注册日期:2009-12-19 01:51 |
|
|
|
|
|
[第12楼]
[ 回复时间:2009-12-29 21:22 ]
[引用]
[回复]
[ top ] | |
荣誉值:61
信誉值:0
注册日期:2009-12-19 01:51 |
debug的D命令只是显示指定地址内容, 改变地址内容可以用E命令 | | |
|
|
|
|
[第13楼]
[ 回复时间:2010-01-18 23:02 ]
[引用]
[回复]
[ top ] | |
荣誉值:0
信誉值:4
注册日期:2009-10-17 21:41 |
书中原文是:D命令是由Debug执行的,Debug在执行"D 1000:0"这样的命令时,也会将段地址1000H送入段寄存器中。
接下来,书上又说了,Deubug是靠什么来执行D命令的?当然是一段程序
===================================================================================
我学完第四章回过头来理解这句话的时候是这样想的
D命令也是一段程序,在这段程序中有一段指令是修改DS值的。执行完之后,会有一个程序返回,在D命令程序末尾段返回了原来DS中的值
所以,执行D 1000:0这条命令后,我们看到DS中的值根本没有发现改变
-------以上纯属个人理解,具体真实的解释留给高手了。
------------------
回复:同意此段内容 | | |
|
|
|
|
[第14楼]
[ 回复时间:2010-04-18 21:19 ]
[引用]
[回复]
[ top ] | |
荣誉值:0
信誉值:0
注册日期:2010-04-18 00:41 |
其实只要看后面的例子再实验一下就很好理解了~~
比如打:
-r ds
ds FFFF(显示的是你当前的ds值)
:1000
-d ds:0
这两个式子合起来,就相对于先是把ds的值改为1000,再执行d 1000:0 | | |