寄存器(CPU工作原理)04 - 零基础入门学习汇编语言09
2010-11-03 17:31
741 查看
第二章:寄存器(CPU工作原理)04
让编程改变世界Change the world by program
段的概念
错误认识:内存被划分成了一个一个的段,每一个段有一个段地址。
其实是:
内存并没有分段,段的划分来自于CPU,由于8086CPU用“(段地址×16)+偏移地址=物理地址”的方式给出内存单元的物理地址,使得我们可以用分段的方式来管理内存。
[caption id="attachment_264" align="aligncenter" width="300"]
分段的方式来管理内存[/caption]
[caption id="attachment_265" align="aligncenter" width="300"]
分段的方式来管理内存[/caption]
以后,在编程时可以根据需要,将若干地址连续的内存单元看作一个段,用段地址×16定位段的起始地址(基础地址),用偏移地址定位段中的内存单元。
两点需要注意
段地址×16 必然是 16的倍数,所以一个段的起始地址也一定是16的倍数;偏移地址为16位,16 位地址的寻址能力为 64K,所以一个段的长度最大为64K。
内存单元地址小结
CPU访问内存单元时,必须向内存提供内存单元的物理地址。8086CPU在内部用段地址和偏移地址移位相加的方法形成最终的物理地址。
思考两个问题
1. 观察下面的地址,读者有什么发现?[caption id="attachment_266" align="aligncenter" width="265"]
内存单元[/caption]
结论:CPU可以用不同的段地址和偏移地址形成同一个物理地址。
2. 如果给定一个段地址,仅通过变化偏移地址来进行寻址,最多可以定位多少内存单元?
结论:偏移地址16位,变化范围为0~FFFFH,仅用偏移地址来寻址最多可寻64K个内存单元。
比如:给定段地址1000H,用偏移地址寻址,CPU的寻址范围为:10000H~1FFFFH。
小结
在8086PC机中,存储单元的地址用两个元素来描述。即段地址和偏移地址。“数据在21F60H内存单元中。”对于8086PC机的两种描述:
数据存在内存2000:1F60单元中;
数据存在内存的2000段中的1F60H单元中。
可根据需要,将地址连续、起始地址为16的倍数的一组内存单元定义为一个段。
检测点2.2
[buy] 获得所有教学视频、课件、源代码等资源打包 [/buy]
[Downlink href='http://kuai.xunlei.com/d/LYTPWHZBNXYG']视频下载[/Downlink]
相关文章推荐
- 寄存器(CPU工作原理)04 - 零基础入门学习汇编语言09
- 寄存器(CPU工作原理)01 - 零基础入门学习汇编语言06
- 寄存器(CPU工作原理)07 - 零基础入门学习汇编语言12
- 寄存器(CPU工作原理)01 - 零基础入门学习汇编语言06
- 寄存器(CPU工作原理)02 - 零基础入门学习汇编语言07
- 寄存器(CPU工作原理)06 - 零基础入门学习汇编语言11
- 寄存器(CPU工作原理)02 - 零基础入门学习汇编语言07
- 寄存器(CPU工作原理)06 - 零基础入门学习汇编语言11
- 寄存器(CPU工作原理)05 - 零基础入门学习汇编语言10
- 寄存器(CPU工作原理)05 - 零基础入门学习汇编语言10
- 寄存器(CPU工作原理)07 - 零基础入门学习汇编语言12
- 寄存器(内存访问)04 - 零基础入门学习汇编语言16
- 寄存器(内存访问)04 - 零基础入门学习汇编语言16
- 更灵活的定位内存地址的方法04 - 零基础入门学习汇编语言35
- 寄存器(内存访问)02 - 零基础入门学习汇编语言14
- 寄存器(CPU工作原理)03 - 零基础入门学习汇编语言08
- 寄存器(内存访问)02 - 零基础入门学习汇编语言14
- 汇编语言学习笔记(二):寄存器(cpu工作原理)
- 寄存器(CPU工作原理)03 - 零基础入门学习汇编语言08
- Call指令和Ret指令讲解04 - 零基础入门学习汇编语言51