内存物理地址

本文解析了8086 CPU如何利用16位段地址和偏移地址生成20位物理地址的过程,并介绍了其在内存管理中的应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

CPU访问内存时要给出内存单元的地址(内存地址),每个内存单元都有一个唯一的地址,称之为物理地址。

首先给出一个公式:

物理地址=段地址x16+偏移地址

物理地址指的是cpu访问内存数据的内存地址,段地址指的是8086cpu的16位的地址总线,偏移地址也指的是16位的地址总线。

什么是段地址?

首先我们知道8086cpu有20位的地址总线,而8086机是16位机,也即字长是16位,16位机描述了:

  • 运算器一次最多处理16位的数据
  • 寄存器的最大宽度为16位
  • 寄存器和运算器之间的通路位16位

那么8086CPU是如何给出20位的物理地址呢?

首先对于16位机来说20位的地址总线多出了4条线,那么是否可以从这里下手呢?通过位运算,可以知道16位机比与20条地址总线的20位机来说少了四位,那么可以通过乘以16的方法,扩展为与20位机同等的大小,那么这时候的段地址可以作为基址地址,而另外的16位地址值可以作为偏移地址。

"段地址X16+偏移地址=物理地址"的本质含义是CPU在访问内存时用一个基础地址和一个相对于基础地址的偏移地址相加,给出内存单元的内存地址。

在内存栈结构中就是采用的这个思想。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值