社区
汇编语言
帖子详情
为何8086中寻址范围大于内存
schlieffen
2009-04-05 11:04:06
我们知道段地址最大值是FFFFH,基础地址就是FFFF0H,偏移地址也是16位的,最大值是FFFFH,两个最大值构成的地址就是10FFEFH。然而我们知道20位的最大值是FFFFFH,前者明显大于后者。
...全文
386
9
打赏
收藏
为何8086中寻址范围大于内存
我们知道段地址最大值是FFFFH,基础地址就是FFFF0H,偏移地址也是16位的,最大值是FFFFH,两个最大值构成的地址就是10FFEFH。然而我们知道20位的最大值是FFFFFH,前者明显大于后者。
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
9 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
schlieffen
2009-04-06
打赏
举报
回复
以下是我找到的一些资料:
早期的8086只有20根地址线,只能访问1M的地址空间。CPU寻址则按段+偏移的方式进行。16位段+16位偏移的可能的范围是0~0x10FFEF(即0xFFFF0+0xFFFF),即1M+65520字节的范围。由于只有20根地址线,所以在对1M~1M+65520范围进行访问时,会发生“地址回绕”的现象,就是说实际会访问到0~65520的地方。据说某个著名的/臭名昭著的软件利用了这个特点。在80286,386等CPU上,它会失败,因为这些CPU有多于20根的地址线,并不产生“地址回绕”现象。为了保持完全的兼容性,IBM决定在PC AT系统上加个逻辑,来模仿以上的回绕特征。他们的方法就是把A20和键盘控制器的一个输出进行AND,这样来控制A20的打开和关闭。一开始时A20是被屏蔽的(总为0),直到系统软件去打开它。
schlieffen
2009-04-06
打赏
举报
回复
你是所说的是同一地址,但不能回答我提问的,如果按你的写法,20位的地址最大为FFFFFH,也就是FFFF:000FH,而我们完全可以表示FFFF:FFFFH这样的地址,这样的话就是寻址范围大于了内存地址了。7楼说的有道理.
jxc25
2009-04-06
打赏
举报
回复
大于20位的有个忽略开关.
叫做a20开关
huayangcvj
2009-04-06
打赏
举报
回复
恩
顶一下
rookie001
2009-04-06
打赏
举报
回复
ls的正解,所以楼主这样的分析是不行的。
ToBeTough
2009-04-06
打赏
举报
回复
[Quote=引用 2 楼 lizi5803 的回复:]
我个人认为,FFFF:000EH与F000:FFFEH应该是内存的同一地址
[/Quote]
就是,所以同一个物理地址很多种表示方法;
BAYNPU
2009-04-06
打赏
举报
回复
对,是内存的同一地址
难得糊涂ha
2009-04-06
打赏
举报
回复
我个人认为,FFFF:000EH与F000:FFFEH应该是内存的同一地址
「已注销」
2009-04-05
打赏
举报
回复
8086段地址是16位,而寻址的物理地址是20位,所以需要通过寻址才能完成基础地址+偏移地址=物理地址的寻址工作。
地址总线,字长,
内存
容量,
寻址
范围
之间的计算
本文详细解析了地址总线、数据总线与
内存
容量、
寻址
范围
之间的计算关系,并通过实例说明了字长、主频、存储容量等关键概念。
关于地址总线,字长,
内存
容量,
寻址
范围
的计算
本文介绍了处理机字长、地址总线和数据总线的概念及其关系,通过实例解析了如何计算
寻址
范围
,并阐述了地址总线宽度对CPU
寻址
空间的影响。此外,还解释了数据总线的作用以及计算机
中
的三种总线类型:数据总线、地址总线和控制总线的功能和传输方向。
汇编语言
21,500
社区成员
41,617
社区内容
发帖
与我相关
我的任务
汇编语言
汇编语言(Assembly Language)是任何一种用于电子计算机、微处理器、微控制器或其他可编程器件的低级语言,亦称为符号语言。
复制链接
扫一扫
分享
社区描述
汇编语言(Assembly Language)是任何一种用于电子计算机、微处理器、微控制器或其他可编程器件的低级语言,亦称为符号语言。
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章