原题:PC主板上的ROM中有个一出产日期,在内存FFF00H-FFFFFH的某几个单元中,请找到这个出产日期并试图改变它。
我的思路:内存的地址=段地址*16+指针偏移地址
所以 FFF00=FFF0*16+0; FFFFF=FFFF*16+F
我在DEBUG中输入 -D FFF0:0 F
显示的是FFF0:0000 EF 53 FF 65 F0 4D F8 41 -F8 59 EC 39 E7 59 F8 32 .S.e.M.A.Y.9.Y.2
请问是我分析错了 还是本来就是这么显示的?
还有 原书中说:一个具体的物理地址可以有种段地址和偏移地址组成,那么为什么这题中只提示了内存地址就能判断出段地址和偏移地址呢?
通过这个问题我主要是想了解下 如果知道一个具体的内存地址,我们怎么推断出他的段地址和偏移地址?
接触汇编几天云云的
------解决方案--------------------------------------------------------
应该是-D FFFF:0,FF
256个字节的内容才对。
------解决方案--------------------------------------------------------
PC主板上的ROM中有个一出产日期,
这个日期在电脑reset时候执行的第一条跳转指令附近, 地址在FFFF0=FFFF*16+0; FFFFF=FFFF*16+F
所以你的地址计算错误.
用debug如下:
-d ffff:0 f
FFFF:0000 EA 5B E0 00 F0 (date here...)
还有, 你想要改变这个地址内容, 直接写MEM是没用的, 因为这时候northbridge中会设置LOCK来关闭shadowMemory, 具体看MCH spec(PAM0—Programmable Attribute Map) , 而且, 就算这样改成功, reset之后还是会还原. 如果没源代码, 真正要改的话, 需要找到用的FLASH ROM是那个厂家生产的, 然后去找这个厂家这个类型的FLASH ROM的读写方法,非常的麻烦, 但是我试成功过. 其他的比如读ROM binary然后改, 我在binary里面找不到日期, 所以失败了.
------解决方案--------------------------------------------------------
在内存fff0:f5 fc内存段中吧,这日期改变不了,只读存储器只能够读,不能够改写
-d fff0:f5 fc
FFF0:00F0 30 38 2F-31 33 2F 30 38 08/13/08
-