寄存器(CPU工作原理)04 – 零基础入门学习汇编语言09

第二章:寄存器(CPU工作原理)04

让编程改变世界

Change the world by program

段的概念

错误认识:

内存被划分成了一个一个的段,每一个段有一个段地址。

其实是:

内存并没有分段,段的划分来自于CPU,由于8086CPU用“(段地址×16)+偏移地址=物理地址”的方式给出内存单元的物理地址,使得我们可以用分段的方式来管理内存。

宽客网,量化投资,宽客俱乐部

分段的方式来管理内存

宽客网,量化投资,宽客俱乐部

分段的方式来管理内存

以后,在编程时可以根据需要,将若干地址连续的内存单元看作一个段,用段地址×16定位段的起始地址(基础地址),用偏移地址定位段中的内存单元。

两点需要注意

段地址×16 必然是 16的倍数,所以一个段的起始地址也一定是16的倍数;

偏移地址为16位,16 位地址的寻址能力为 64K,所以一个段的长度最大为64K。

内存单元地址小结

CPU访问内存单元时,必须向内存提供内存单元的物理地址。

8086CPU在内部用段地址和偏移地址移位相加的方法形成最终的物理地址。

思考两个问题

  1. 观察下面的地址,读者有什么发现?

宽客网,量化投资,宽客俱乐部

内存单元

结论:CPU可以用不同的段地址和偏移地址形成同一个物理地址。

  1. 如果给定一个段地址,仅通过变化偏移地址来进行寻址,最多可以定位多少内存单元?

结论:偏移地址16位,变化范围为0~FFFFH,仅用偏移地址来寻址最多可寻64K个内存单元。

比如:给定段地址1000H,用偏移地址寻址,CPU的寻址范围为:10000H~1FFFFH。

小结

在8086PC机中,存储单元的地址用两个元素来描述。即段地址和偏移地址。

“数据在21F60H内存单元中。”对于8086PC机的两种描述:

数据存在内存2000:1F60单元中;

数据存在内存的2000段中的1F60H单元中。

可根据需要,将地址连续、起始地址为16的倍数的一组内存单元定义为一个段。

检测点2.2

视频下载
技术, IT技术, 汇编语言, 视频教程



                                                    风险提示及免责条款

市场有风险,投资需谨慎。本文不构成个人投资建议,也未考虑到个别用户特殊的投资目标、财务状况或需要。用户应考虑本文中的任何意见、观点或结论是否符合其特定状况。据此投资,责任自负。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部