|
主题 : : 实验任务(3)疑问!! [待解决] |
回复[ 7次 ]
点击[ 538次 ] | |
|
|
|
|
[帖 主]
[ 发表时间:2012-09-16 00:42 ]
[引用]
[回复]
[ top ] | |
荣誉值:0
信誉值:0
注册日期:2012-09-16 00:19 |
rom是只读存储器,它只可以读取不能后来修改。这个概念在之前已经在我脑里形成了,但是做到这个实验之后才开始有了疑问。
1. 我的计算机用debug是能修改FFFF:0000这段内存的。但是打开另一个debug之后又回复到原来的内容了。
2. 来自百度和《汇编语言第二版答案》的
--------------------------------------------------------
还有另一种情况,如果你发现你能修改ROM中的生产日期,那么原因如下:
每个计算机的结构都不一样,教材考虑的是普通8086PC机上的效果,个别计算机的效果可能不同。
也就是说 在你的计算机中 这个内存是可修改的
所以,认为所有的计算机某些地址的内存不能修改是片面的。
--------------------------------------------------------
我认为这个解释是错误的。ROM如果因为不同的构造就能够被修改那不就应该被称为RAM了吗?为什么还要叫它ROM。
我自己又这样实验。
1. 打开debug
2. 修改FFFF:0000中的内容 -e ffff:0005 30 32 2f 30 39 2f 31 32
3. 查看内容 -d ffff:0005
4. 发现ffff:0005里的内容被修改了
5. 再打开一个debug 查看-d ffff:0005 发现没有被修改
我自己认为这种现象是这样的。
debug是首先在内存地址空间中获取到数据 然后拷贝到自己的地址空间中,在自己的内存空间中对这个虚拟的ffff:0005进行了修改。而实际上根本没有修改到ROM中的内容。
我不敢这样肯定,希望有人能来帮我讨论讨论。 | | |
|
|
|
|
[第1楼]
[ 回复时间:2012-09-16 01:16 ]
[引用]
[回复]
[ top ] | |
荣誉值:0
信誉值:0
注册日期:2012-09-16 00:19 |
我又在DOS环境下试了一下,完全不能修改到FFFF:0005 | | |
|
|
|
|
[第2楼]
[ 回复时间:2012-11-11 21:13 ]
[引用]
[回复]
[ top ] | |
荣誉值:0
信誉值:0
注册日期:2012-09-25 19:43 |
|
|
|
|
|
[第3楼]
[ 回复时间:2012-11-11 22:00 ]
[引用]
[回复]
[ top ] | |
荣誉值:0
信誉值:0
注册日期:2012-08-12 15:28 |
|
|
|
|
|
[第4楼]
[ 回复时间:2012-11-15 13:29 ]
[引用]
[回复]
[ top ] | |
荣誉值:0
信誉值:0
注册日期:2012-11-15 09:42 |
我们现在使用的实验环境应该不会是真实的8086的16位机,一般大家用的都是32位机,在windows下进程虚拟地址空间全部就有4G的大小,而默认是有2G留给内核空间,我们能使用到的是2G空间。
在模拟16位空间的时候,会有差别,我认为楼主的理解是对的:
debug是首先在内存地址空间中获取到数据 然后拷贝到自己的地址空间中,在自己的内存空间中对这个虚拟的ffff:0005进行了修改。而实际上根本没有修改到ROM中的内容。 | | |
|
|
|
|
[第5楼]
[ 回复时间:2013-03-03 20:02 ]
[引用]
[回复]
[ top ] | |
荣誉值:0
信誉值:0
注册日期:2013-02-27 21:02 |
windows运行CMD和运行COMMAND就会出现两个不同的结果。书上说了:只有运行command,才是进入8086虚拟模式下的DOS,而CMD则仅仅是一个看起来像DOS的WINDOWS程序。(后半句书上没说) | | |
|
|
|
|
[第6楼]
[ 回复时间:2013-07-07 10:54 ]
[引用]
[回复]
[ top ] | |
荣誉值:0
信誉值:0
注册日期:2013-07-07 10:19 |
rom你进去用debug修改的话也只能暂时修改的,去看看王爽老师的视频有讲解,真的能修改日期,你就不用学这个了。 | | |
|
|
|
|
[第7楼]
[ 回复时间:2013-07-14 15:51 ]
[引用]
[回复]
[ top ] | |
荣誉值:0
信誉值:0
注册日期:2013-07-14 15:44 |
我今天刚看完,试了一下。情况跟楼主的一样,我还以为书上弄错了,rom的东西咋能被修改呢。后来再次运行debug查看命令发现还是原来的日期。具体原因不懂,不过觉得楼主说的有道理。受教了谢谢! | | |