. : : Assembly Language : : .  |  首页  |  我提出的问题  |  我参与的问题  |  我的收藏  |  消息中心   |  游客  登录  | 
刷新 | 提问 | 未解决 | 已解决 | 精华区 | 搜索 |
  《汇编语言》论坛 ->寄存器(CPU工作原理)
  管理员: assembly   [回复本贴] [收藏本贴] [管理本贴] [关闭窗口]
主题 : :  【讨论+心得】8086段地址 和物理地址  关系  以及物理地址中的1~15内存单元去哪了???  [待解决] 回复[ 8次 ]   点击[ 382次 ]  
zhenglxd
[帖 主]   [ 发表时间: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都非整数???
zhenglxd
[第1楼]   [ 回复时间:2009-04-15 15:05 ]   [引用]   [回复]   [ top ] 
荣誉值:30
信誉值:0
注册日期:2009-04-09 10:05
。。是偏移地址不是漂移地址写的时候没注意 汗一个
我试验的时候 cs 指定0000狂出错 所以后来思考了下 写了此文章
zhenglxd
[第2楼]   [ 回复时间:2009-04-15 15:12 ]   [引用]   [回复]   [ top ] 
荣誉值:30
信誉值:0
注册日期:2009-04-09 10:05
绝的有点混 我想问下 cs=0000 ip=0这样的地址算合法的吗 
因为我试验的时候 cs=0000 ip=0 每次写的指令都会自己变化。。。
zjxiaogaoren
[第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.
zjxiaogaoren
[第4楼]   [ 回复时间:2009-04-23 20:06 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:1
注册日期:2009-04-20 20:16
注明,我的系统是winxp
zjxiaogaoren
[第5楼]   [ 回复时间:2009-04-23 20:07 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:1
注册日期:2009-04-20 20:16
汇编指令:DB      68
是说明了一个字节的内容吧
laihy
[第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
mess
[第7楼]   [ 回复时间:2009-05-06 18:34 ]   [引用]   [回复]   [ top ] 
荣誉值:337
信誉值:0
注册日期:2008-01-01 17:48
但是书上强调 物理地址必须是16的倍数(最小为16) 
-------------------
这个是哪里的论断,书上能找到原文吗?这个结论肯定是错误的。
mess
[第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存放是数据是什么,等学到后面就明白了。
需要登录后才能回帖 -->> 请单击此处登录
    Copyright © 2006-2024   ASMEDU.NET  All Rights Reserved