|
主题 : : 关于虚拟8086CPU模式下可寻址空间大于1M的问题 [已解决] |
回复[ 9次 ]
点击[ 616次 ] | |
|
|
|
|
[帖 主]
[ 发表时间:2010-10-31 10:45 ]
[引用]
[回复]
[ top ] | |
荣誉值:0
信誉值:4
注册日期:2009-12-18 19:17 |
大家可以试验
在DEBUG中,用D命令查看 FFFF:0处往后的内存有多少?
看是不是以循环的方式访问了其他地方的内存呢?
大家多讨论讨论 | | |
|
|
|
|
[第1楼]
[ 回复时间:2010-10-31 12:58 ]
[引用]
[回复]
[ top ] | |
荣誉值:10
信誉值:0
注册日期:2009-06-25 23:01 |
|
|
|
|
|
[第2楼]
[ 回复时间:2010-10-31 15:51 ]
[引用]
[回复]
[ top ] | |
荣誉值:0
信誉值:4
注册日期:2009-12-18 19:17 |
回复:[第1楼]
------------------
^_^请教 :回环的哪段内存 | | |
|
|
|
|
[第3楼]
[ 回复时间:2010-10-31 16:55 ]
[引用]
[回复]
[ top ] | |
荣誉值:268
信誉值:12
注册日期:2010-06-18 22:19 |
在8086cpu中,有效地址超过FFFFH时, 则取64K的模作为有效地址。比如:
d:\MASM>debug
-dffff:fff0 ;显示ffff:fff0~ffff
FFFF:FFF0 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................
-d ;当偏移地址超过FFFFH的时候, debug从FFFF:0000开始显示,也即产生环绕。
FFFF:0000 EA 5B E0 00 F0 30 38 2F-33 31 2F 30 37 00 FC 00 .[...08/31/07...
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,
- | | |
|
|
|
|
[第4楼]
[ 回复时间:2010-11-02 15:09 ]
[引用]
[回复]
[ top ] | |
荣誉值:0
信誉值:4
注册日期:2009-12-18 19:17 |
回复:[第3楼]
------------------
恩 我理解你的意思
请你想想这个问题:
8086虚拟模式下 FFFF:FFF0 等价于 10FFE0H,
10FFE0H已经超出了1M的寻址空间,
而我试验时没有发现“超出1M的内存空间的内容”和“0到FFFFFH中的某一段的内容”相同,
所以我感觉不是内存循环的问题。 | | |
|
|
|
|
[第5楼]
[ 回复时间:2010-11-03 18:01 ]
[引用]
[回复]
[ top ] | |
荣誉值:10
信誉值:0
注册日期:2009-06-25 23:01 |
由于FFFF:FFF0在逻辑上符合CPU的分段体系,OS不认为它是个错误的地址,并在DOS下从内存的低部访问。这就像CPU在处理算术运算FFFF+1h时不告诉你“容量已经满了”,而是产生从0开始的结果。
在DOS下访问大于1MB的内存必须开启A20地址线。
保护模式下的虚拟8086不在此讨论范围内。 | | |
|
|
|
|
[第6楼]
[ 回复时间:2010-11-03 20:56 ]
[引用]
[回复]
[ top ] | |
荣誉值:268
信誉值:12
注册日期:2010-06-18 22:19 |
回复:[第5楼]
------------------
嗯, 正解 | | |
|
|
|
|
[第7楼]
[ 回复时间:2010-11-03 21:13 ]
[引用]
[回复]
[ top ] | |
荣誉值:0
信誉值:4
注册日期:2009-12-18 19:17 |
回复:[第5楼]
------------------
恩 通过你的回答和网上查的一些资料,我有些理解了这个A20。
虚拟8086模式可以这样理解吧:保护模式下,虚拟出的是开启了A20的8086模式。
(什么模式与是否开启A20无关) | | |
|
|
|
|
[第8楼]
[ 回复时间:2010-11-03 21:15 ]
[引用]
[回复]
[ top ] | |
荣誉值:0
信誉值:4
注册日期:2009-12-18 19:17 |
|
|
|
|
|
[第9楼]
[ 回复时间:2010-11-04 16:12 ]
[引用]
[回复]
[ top ] | |
荣誉值:0
信誉值:4
注册日期:2009-12-18 19:17 |
此贴由 贴主 于 [ 2010-11-04 16:12 ] 结贴。 结贴原因:问题已解决 | | |