内存管理的基础

8086微处理器共有4个16位的段寄存器,在寻址内存单元时,用它们直接或间接地存放段地址。
  代码段寄存器CS:存放当前执行的程序的段地址。
  数据段寄存器DS:存放当前执行的程序所用操作数的段地址。
  堆栈段寄存器SS:存放当前执行的程序所用堆栈的段地址。
  附加段寄存器ES:存放当前执行程序中一个辅助数据段的段地址。
存储器分段管理
  在8086微处理器中,在描述存储器地址时有三个相关的术语:物理地址偏移地址逻辑地址

  物理地址是由8086的地址引线送出的20位地址码。这20位地址码送到存储器经过译码,最终选定一个存储单元进行读/写。物理地址可写成5位的十六进制数。

  偏移地址是相对于某段首地址的段内偏移量,用16位二进制代码表示,写成4位十六进制数,例如:004AH。

  逻辑地址是在程序中对存储器地址的一种表示方法,由某段的段地址和段内偏移地址组成。写成:段地址 : 偏移地址
例如:2000H : 0080H
  
  对存储器寻址起作用的是物理地址,8086对外有20位地址线,因此,存储器的可寻址范围为220=1MB。但是8086微处理器的内部结构是16位的,用户可用的寄存器也都是16位的。显然用16位的地址码无法寻址1MB的存储空间,为了解决这一矛盾,8086采用了分段的方法对存储器进行管理。

  存储器地址分段的具体做法是:把1MB的存储器空间分成若干段,每段的容量最大64KB,这样段内地址就可以用16位来表示。实际上,可以根据编程的需要来确定段的大小,它可以是64K字节范围内的任意多个字节。

  8086规定:从0地址开始,每16个字节为一小段,段的起始地址必须从任一小段(paragraph)的首地址开始,也就是说,段地址表示成20位的二进制地址码,其最低4位必须是"0"。

  存储器采用分段管理后,每个段的首地址(称为段基地址或段地址)保存在8086内部的CS、DS、SS和ES四个16位的寄存器中,我们可以对段寄存器设置不同的值以指向不同的段。

  16位的段地址和16位的偏移地址组合形成20位的物理地址,这就是8086的工作方式,这在80x86的寻址模式中称为实模式。

  物理地址的计算方法可以表示如下:
  

  也就是说,把段地址左移4位再加上偏移地址值就形成物理地址。或写成:
       段地址 × 16d + 偏移地址 = 物理地址
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值