|
主题 : : 【讨论+心得】8086段地址 和物理地址 关系 以及物理地址中的1~15内存单元去哪了??? [待解决] |
回复[ 8次 ]
点击[ 382次 ] | |
|
|
|
|
[帖 主]
[ 发表时间:2009-04-15 15:04 ]
[引用]
[回复]
[ top ] | |
荣誉值:30
信誉值:0
注册日期:2009-04-09 10:05 |
8086cpu是 16位的
他的地址总线有20根
他的寻址范围是0~FFFFF
cpu处理能力是0~FFFF
所以 他用了 段地址*16+漂移地址来合成 20位的物理地址
分析。。。
理论上 段地址 和 漂移地址的范围都是 0~FFFF
但是书上强调 物理地址必须是16的倍数(最小为16)
也就须是 段地址最小为1
同时段地址最大为f000
这样组成的物理地址范围是16~FFFFF
那么问题来了 物理地址中 1~15的内存单元去哪了怎么处理的?
因为他们的编号 除以16都非整数??? | | |
|
|
|
|
[第1楼]
[ 回复时间:2009-04-15 15:05 ]
[引用]
[回复]
[ top ] | |
荣誉值:30
信誉值:0
注册日期:2009-04-09 10:05 |
。。是偏移地址不是漂移地址写的时候没注意 汗一个
我试验的时候 cs 指定0000狂出错 所以后来思考了下 写了此文章 | | |
|
|
|
|
[第2楼]
[ 回复时间:2009-04-15 15:12 ]
[引用]
[回复]
[ top ] | |
荣誉值:30
信誉值:0
注册日期:2009-04-09 10:05 |
绝的有点混 我想问下 cs=0000 ip=0这样的地址算合法的吗
因为我试验的时候 cs=0000 ip=0 每次写的指令都会自己变化。。。 | | |
|
|
|
|
[第3楼]
[ 回复时间:2009-04-23 20:05 ]
[引用]
[回复]
[ top ] | |
荣誉值:0
信誉值:1
注册日期:2009-04-20 20:16 |
我也debug了下查看如下:
-r
AX=0000 BX=0000 CX=0000 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000
DS=13A7 ES=13A7 SS=13A7 CS=13A7 IP=0100 NV UP EI PL NZ NA PO NC
13A7:0100 0000 ADD [BX+SI],AL DS:0000=CD
-r cs
CS 13A7
:0000
-r ip
IP 0100
:0000
-r
AX=0000 BX=0000 CX=0000 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000
DS=13A7 ES=13A7 SS=13A7 CS=0000 IP=0000 NV UP EI PL NZ NA PO NC
0000:0000 68 DB 68
-d 0000:0 f
0000:0000 68 10 A7 00 8B 01 70 00-16 00 AD 03 8B 01 70 00 h.....p.......p. | | |
|
|
|
|
[第4楼]
[ 回复时间:2009-04-23 20:06 ]
[引用]
[回复]
[ top ] | |
荣誉值:0
信誉值:1
注册日期:2009-04-20 20:16 |
|
|
|
|
|
[第5楼]
[ 回复时间:2009-04-23 20:07 ]
[引用]
[回复]
[ top ] | |
荣誉值:0
信誉值:1
注册日期:2009-04-20 20:16 |
|
|
|
|
|
[第6楼]
[ 回复时间:2009-05-05 01:40 ]
[引用]
[回复]
[ top ] | |
荣誉值:0
信誉值:0
注册日期:2009-05-01 00:25 |
16进制中
A=10 B=11 C=12 D=13 E=14 F=15
这样组成的物理地址范围是10~FFFFF
不是 16~FFFFF
所以和10进制一样 10/10=1
在16进制中 10/16=1 | | |
|
|
|
|
[第7楼]
[ 回复时间:2009-05-06 18:34 ]
[引用]
[回复]
[ top ] | |
荣誉值:337
信誉值:0
注册日期:2008-01-01 17:48 |
但是书上强调 物理地址必须是16的倍数(最小为16)
-------------------
这个是哪里的论断,书上能找到原文吗?这个结论肯定是错误的。 | | |
|
|
|
|
[第8楼]
[ 回复时间:2009-05-06 18:37 ]
[引用]
[回复]
[ top ] | |
荣誉值:337
信誉值:0
注册日期:2008-01-01 17:48 |
绝的有点混 我想问下 cs=0000 ip=0这样的地址算合法的吗
因为我试验的时候 cs=0000 ip=0 每次写的指令都会自己变化。。。
-------------------------
cs ip都等于0当然是可以的,他们得到的物理地址=0.
但是你向这个物理地址写东西是否被改变是第二个问题。比如你向显存写数据,当你屏幕数据变化后原来写入的数据是否变了?你向rom写数据,是否修改成功了?
至于0:0存放是数据是什么,等学到后面就明白了。 | | |