8086存储器分段

存储器分段的原因:
我们都知道8086/8088 CPU有20根地址线,这样可以直接寻址的物理地址空间为1M字节(存储单元以字节为单位),范围是00000H至FFFFFH。但8086/8088 CPU的寄存器都是16位,那么在传输地址时显然一次只能传输16位有效地址,也就是只足够访问64K字节地址空间。为了实现寻址1M字节物理空间,8086/8088引入了分段的概念。
存储器分段的两个条件:
1. 逻辑段的开始地址必须是16的倍数,因为段寄存器长为16位;
2. 逻辑段的最大长度为64K,因为指针寄存器长为16位。
逻辑地址与物理地址的形成
段地址是指逻辑段在1MB内存中的起始地址,只是利用了其值的最低4位二进制固定为0的特性,将这4位暂时舍去,而仅保存其前16位并存放在16位的段寄存器中。
偏移地址是指某存储单元与本段段地址之间的距离,也叫偏移量。由于限定每段不超过64KB,所以偏移地址值最大不超过FFFFH。(偏移地址在编程中也常被称为“有效地址”(EA))
段地址和偏移地址的表示都是无符号的16位二进制数,一般用4位十六进制数。
逻辑地址是用户在程序中采用的地址
物理地址是存储单元的实际地址,是CPU和内存储器进行数据交换时所使用的地址。
对于任何一个存储单元来说,可以唯一地被包含在一个逻辑段中,也可以被包含在多个相互重叠的逻辑段中,也就是说,同一个物理地址可以对应多个逻辑地址,只要能得到它所在段的段地址和段内偏移地址,就可以对它进行访问。访问时,只需将逻辑地址转换为对应的物理地址即可。转换方法为:
物理地址 = 段地址 * 16 + 偏移地址
其中,段地址 * 16的操作常常通过将16位段寄存器的内容(二进制形式)左移4位,末位补4个0来实现(这也就是前面讲到的将暂时舍去的4个0补回来)。
例: 假设段地址 = 1000H,偏移地址 = 2345H,
那么物理地址 = 1000H * 16 + 2345H
=1000H * 10H + 2345H
= 12345H

在这里插入图片描述

  • 5
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值