|
主题 : : 为何用E命令改不了内存数据? 是系统保护吗? [已解决] |
回复[ 15次 ]
点击[ 410次 ] | |
|
|
|
|
[帖 主]
[ 发表时间:2009-03-21 17:03 ]
[引用]
[回复]
[ top ] | |
荣誉值:0
信誉值:4
注册日期:2009-03-14 15:44 |
如题, 操作都正确 单个改 也提示了 回车完以后用D 命令查看 还是原来的数据 这是为什么捏 ? | | |
|
|
|
|
[第1楼]
[ 回复时间:2009-03-22 07:49 ]
[引用]
[回复]
[ top ] | |
荣誉值:472
信誉值:12
注册日期:2007-10-16 15:34 |
|
|
|
|
|
[第2楼]
[ 回复时间:2009-03-22 10:49 ]
[引用]
[回复]
[ top ] | |
荣誉值:0
信誉值:4
注册日期:2009-03-14 15:44 |
那为什么 书中的例子能改啊 ····~~~~~~~·· | | |
|
|
|
|
[第3楼]
[ 回复时间:2009-03-22 11:54 ]
[引用]
[回复]
[ top ] | |
荣誉值:5
信誉值:0
注册日期:2009-03-14 22:04 |
回复:[第2楼]
------------------
你是在做习题3么,这题目试图修改rom的值,命令执行成功了,但是rom的值不会改变。 | | |
|
|
|
|
[第4楼]
[ 回复时间:2009-03-22 12:11 ]
[引用]
[回复]
[ top ] | |
荣誉值:6
信誉值:0
注册日期:2009-03-15 23:05 |
是不是没有执行?可能你在操作的时候没有使用t命令进行程序执行吧。程序有的时候在内存中你使用了命令去更改,但是没有执行,可能内存不会改变 | | |
|
|
|
|
[第5楼]
[ 回复时间:2009-03-22 23:28 ]
[引用]
[回复]
[ top ] | |
荣誉值:0
信誉值:4
注册日期:2009-03-14 15:44 |
没做习题啊 就是书中介绍 E命令的 例子啊
E命令本身不就是用来修改 内存中的数据吗?还要T命令去运行? T 命令是用来执行 当前CS IP 指向的指令吧。 | | |
|
|
|
|
[第6楼]
[ 回复时间:2009-03-22 23:29 ]
[引用]
[回复]
[ top ] | |
荣誉值:0
信誉值:4
注册日期:2009-03-14 15:44 |
比如 我用 E: FFFF:0000 00 00 00 00 00 00 00 00
是把FFFF :0000 以后的 8 个字节都改成零吧 执行完之后不是
书中例子 好像直接就改了吧 这么说大家明白了吧 | | |
|
|
|
|
[第7楼]
[ 回复时间:2009-03-23 10:14 ]
[引用]
[回复]
[ top ] | |
荣誉值:472
信誉值:12
注册日期:2007-10-16 15:34 |
比如 我用 E: FFFF:0000 00 00 00 00 00 00 00 00
是把FFFF :0000 以后的 8 个字节都改成零吧 执行完之后不是
书中例子 好像直接就改了吧 这么说大家明白了吧
------------------
回复:楼主做的是实验一的第三题。
书中例子 好像直接就改了吧 这么说大家明白了吧
----------------
这个实验的结果应该是肯定的啊,“好像”这个词就不用要了,要自己动手去实验。
然后看看3楼的回复。
这个题下面有提示,如果对实验结果有疑惑去看看1.15(rom是不能改的)
你可以把dos抓图放上来,虚拟dos窗口模式,标题栏点右键/编辑/标记/dos窗口选择要复制的内容回车就行了,然后找地方粘贴出来。 | | |
|
|
|
|
[第8楼]
[ 回复时间:2009-03-23 14:28 ]
[引用]
[回复]
[ top ] | |
荣誉值:0
信誉值:4
注册日期:2009-03-14 15:44 |
-d ffff:0000
FFFF:0000 EA 5B E0 00 F0 30 35 2F-33 30 2F 30 35 00 FC 00 .[...05/30/05...
FFFF:0010 34 12 00 00 00 00 00 00-00 00 00 00 00 00 00 00 4...............
FFFF:0020 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................
FFFF:0030 70 00 2E 8E 06 30 00 BF-7F 01 B9 02 00 AB 47 47 p....0........GG
FFFF:0040 E2 FB CB 56 50 51 52 57-55 1E 06 53 8B EC 8B 76 ...VPQRWU..S...v
FFFF:0050 12 2E 8E 1E 30 00 8B 44-02 A2 22 00 88 26 08 01 ....0..D.."..&..
FFFF:0060 8B 34 C4 1E 18 00 26 8A-47 01 26 8A 67 0D 26 8B .4....&.G.&.g.&.
FFFF:0070 4F 12 26 8B 57 14 97 26-8A 47 02 2E 3A 04 73 2C O.&.W..&.G..:.s,
-e ffff:00 00 00 00 00 00 00 00 00
-d ffff:0000
FFFF:0000 EA 5B E0 00 F0 30 35 2F-33 30 2F 30 35 00 FC 00 .[...05/30/05...
FFFF:0010 34 12 00 00 00 00 00 00-00 00 00 00 00 00 00 00 4...............
FFFF:0020 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................
FFFF:0030 70 00 2E 8E 06 30 00 BF-7F 01 B9 02 00 AB 47 47 p....0........GG
FFFF:0040 E2 FB CB 56 50 51 52 57-55 1E 06 53 8B EC 8B 76 ...VPQRWU..S...v
FFFF:0050 12 2E 8E 1E 30 00 8B 44-02 A2 22 00 88 26 08 01 ....0..D.."..&..
FFFF:0060 8B 34 C4 1E 18 00 26 8A-47 01 26 8A 67 0D 26 8B .4....&.G.&.g.&.
FFFF:0070 4F 12 26 8B 57 14 97 26-8A 47 02 2E 3A 04 73 2C O.&.W..&.G..:.s, | | |
|
|
|
|
[第9楼]
[ 回复时间:2009-03-23 14:30 ]
[引用]
[回复]
[ top ] | |
荣誉值:0
信誉值:4
注册日期:2009-03-14 15:44 |
说了半天 还说试验 我没做试验 就是书中的例子 只不过我选的地址段不同 E命令不就是改内存数据的吗 为啥我改不了 | | |
|
|
|
|
[第10楼]
[ 回复时间:2009-03-23 16:56 ]
[引用]
[回复]
[ top ] | |
荣誉值:6
信誉值:0
注册日期:2009-03-20 22:14 |
你改的是rom里的值,rom里的内容是不能改的.你换个地址,改一下10000H里的内容试试。 | | |
|
|
|
|
[第11楼]
[ 回复时间:2009-03-23 17:12 ]
[引用]
[回复]
[ top ] | |
荣誉值:337
信誉值:0
注册日期:2008-01-01 17:48 |
说了半天 还说试验 我没做试验 就是书中的例子 只不过我选的地址段不同 E命令不就是改内存数据的吗 为啥我改不了
------------------
回复:你看看大家说的实验,和你问的问题不一样么
你根据“段地址*16+偏移地址=物理地址”算算 | | |
|
|
|
|
[第12楼]
[ 回复时间:2009-03-23 20:55 ]
[引用]
[回复]
[ top ] | |
荣誉值:0
信誉值:0
注册日期:2009-03-20 06:11 |
1.15章节里的一句话可以回答你的问题:CPU把逻辑存储器内的A000—FFFF认为是ROM空间(ROM就是只读储存器,是不能改写的!)
A000-FFFF其实指的是段地址,也就是:对CPU来说,只要你改写以A000—FFFF为段地址里的内容,无论偏移地址是多少,都是无效的,明白了吧?
为什么指的是段地址而不是物理地址?因为A000-FFFF是16位而不是20位,所以很肯定它是段地址,是由CPU给出的。
以楼主的贴出的内容为例:
-d ffff:0000
很明显,楼主是想改写段地址为FFFF的内容,而FFFF包含在AOOO-ffff里。 | | |
|
|
|
|
[第13楼]
[ 回复时间:2009-03-23 23:35 ]
[引用]
[回复]
[ top ] | |
荣誉值:0
信誉值:0
注册日期:2009-03-20 06:11 |
很抱歉,再研究后,发现自己上面的结论是错误的;认为“段地址”这方面是错误的。
发现原因:
-d ffff:0 f
FFFF:0000 EA 5B E0 00 F0 30 34 2F-31 31 2F 30 38 00 FC 00 (查看FFFF0-FFFFF的内容)
-e ffff:0
FFFF:0000 EA.34 5B.67 E0.56 00.18 F0. 30. 34. 2F.
FFFF:0008 31. 31. 2F. 30. 38. 00. FC. 00.19(尝试对内容作修改)
-d ffff:0 f
FFFF:0000 EA 5B E0 00 F0 30 34 2F-31 31 2F 30 38 00 FC 00 (查看后修改无效)
-d ffff:10 1f
FFFF:0010 34 12 00 00 00 00 00 00-00 00 00 00 00 00 00 00 (查FFFFF+1即100000-10000F)
-e ffff:10
FFFF:0010 34.12 12.17 00.5c (尝试对物理地址为100000以后内容作修改)
-d ffff:10 1f
FFFF:0010 12 17 5C 00 00 00 00 00-00 00 00 00 00 00 00 00 (修改成功)
可看出: ffff:10 以后就可以用E命令改了。
很抱歉没有实践就下结论。关于这个问题我想可以从本章置顶的帖子《有关1G内存的编址问题》里看到答案。
按我的猜测应该是Debug调试用其实是基于8086模式的,也就是它的“内存地址空间分配”是和8086一样的,在书中第12页可以看到:
物理地址C0000-FFFFF是8086各类ROM的空间,因此在这段物理地址内改写内存的内容是无效的。而ffff:10或以后已经不属于8086的内存地址空间范围了,所以用E命令可以改写。
结论是:debug里“物理地址C0000-FFFFF范围为ROM空间”,所以不能改写。 | | |
|
|
|
|
[第14楼]
[ 回复时间:2009-03-25 01:42 ]
[引用]
[回复]
[ top ] | |
荣誉值:0
信誉值:4
注册日期:2009-03-14 15:44 |
明白了 HOHO 谢谢 楼上诸位 本人脾气有点急 对不住了 :) | | |
|
|
|
|
[第15楼]
[ 回复时间:2009-03-25 01:42 ]
[引用]
[回复]
[ top ] | |
荣誉值:0
信誉值:4
注册日期:2009-03-14 15:44 |
此贴由 贴主 于 [ 2009-03-25 01:42 ] 结贴。 结贴原因:问题已解决 | | |