寄存器(CPU工作原理)03 - 零基础入门学习汇编语言08


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

让编程改变世界

Change the world by program


物理地址

CPU访问内存单元时要给出内存单元的地址。所有的内存单元构成的存储空间是一个一维的线性空间。 我们将这个唯一的地址称为物理地址。

16位结构的CPU

概括的讲,16位结构描述了一个CPU具有以下几个方面特征: 1、运算器一次最多可以处理16位的数据。 2、寄存器的最大宽度为16位。 3、寄存器和运算器之间的通路是16位的。

8086CPU给出物理地址的方法

8086有20位地址总线,可传送20位地址,寻址能力为1M。 8086内部为16位结构,它只能传送16位的地址,表现出的寻址能力却只有64K。

问题:那么,8086CPU如何用内部16位的数据转换成20位的地址呢?

自问自答:8086CPU采用一种在内部用两个16位地址合成的方法来形成一个20位的物理地址~ [caption id="attachment_257" align="aligncenter" width="300"] 8086CPU如何用内部16位的数据转换成20位的地址[/caption]

8086CPU读写内存时,发生了这么一些事:

CPU中的相关部件提供两个16位的地址,一个称为段地址,另一个称为偏移地址;

段地址和偏移地址通过内部总线送入一个称为地址加法器的部件;

地址加法器将两个16位地址合并成一个20位的地址;

地址加法器工作原理

地址加法器合成物理地址的方法:物理地址=段地址×16+偏移地址 例如:8086CPU访问地址为123C8H的内存单元 [caption id="attachment_258" align="aligncenter" width="300"] 8086CPU访问地址为123C8H的内存单元[/caption] 由段地址×16引发的血案…… “段地址×16”有一个更为常用的说法就是数据左移4位。(二进制位) [caption id="attachment_259" align="aligncenter" width="300"] 进制转换[/caption] 我们通过观察移位次数和各种形式数据的关系:

一个数据的二进制形式左移1位,相当于该数据乘以2;

一个数据的二进制形式左移N位,相当于该数据乘以2的N次方;

地址加法器如何完成段地址×16的运算?没错,以二进制形式存放的段地址左移4位。

一个馒头引发的分析…… 经过进一步的思考,我们可以看出:

一个数据的十六进制形式左移1位,相当于乘以16;

一个数据的十进制形式左移1位,相当于乘以10;

一个数据的X进制形式左移1位,相当于乘以X。

“段地址×16+偏移地址=物理地址”的本质含义

两个比喻说明:

说明“基础地址+偏移地址 = 物理地址” 的思想:第一个比喻 比如说,学校、体育馆同在一条笔直的单行路上(学校位于路的起点0米处)。 读者在学校,要去图书馆,问我那里的地址,我可以用几种方式描述这个地址? [caption id="attachment_260" align="aligncenter" width="300"] 段地址×16+偏移地址=物理地址[/caption] (1)从学校走2826m到图书馆。这2826可以认为是图书馆的物理地址。 (2)从学校走2000m到体育馆,从体育馆再走826m到图书馆。 第一个距离2000m是相对于起点的基础地址; 第二个距离826m是将对于基础地址的偏移地址。 说明“段地址×16+偏移地址=物理地址”的思想:第二个比喻 比如我们只能通过纸条来通信,读者问我图书馆的地址,我只能将它写在纸上告诉读者。 显然我必须有一张可以容纳 4 位数据的纸条才能写下2826这个数据: [caption id="attachment_261" align="aligncenter" width="235"] 段地址×16+偏移地址=物理地址[/caption] 不巧的是,没有能容纳4位数据的纸条,仅有两张可以容纳3位数据的纸条。 这样我只能以这种方式告诉读者2826这个数据: [caption id="attachment_262" align="aligncenter" width="261"] 段地址×16+偏移地址=物理地址[/caption] 8086CPU就是这样一个只能提供两张3位数据纸条的CPU。 [buy]获得所有教学视频、课件、源代码等资源打包[/buy] [Downlink href='http://kuai.xunlei.com/d/LPOBVJBHIWMY']视频下载[/Downlink] 优质内容筛选与推荐>>
1、Linux下的docker
2、原文地址:Qt数据库总结 作者:ImmenseeT
3、第09组 Alpha事后诸葛亮
4、UIViewController
5、无标题窗体的移动及其简单美化


长按二维码向我转账

受苹果公司新规定影响,微信 iOS 版的赞赏功能被关闭,可通过二维码转账支持公众号。

    阅读
    好看
    已推荐到看一看
    你的朋友可以在“发现”-“看一看”看到你认为好看的文章。
    已取消,“好看”想法已同步删除
    已推荐到看一看 和朋友分享想法
    最多200字,当前共 发送

    已发送

    朋友将在看一看看到

    确定
    分享你的想法...
    取消

    分享想法到看一看

    确定
    最多200字,当前共

    发送中

    网络异常,请稍后重试

    微信扫一扫
    关注该公众号