汇编语言个人学习笔记——第二章 寄存器(CPU的工作原理)第二部分

做完第二章第一部分检测题之后开始下面的学习

2.4物理地址

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

2.5十六位结构的CPU

概括的讲,十六位结构描述了一个CPU具有以下几个方面特征:

1、运算器一次最多可以处理16位的数据。

2、寄存器的最大宽度为16位。

3、寄存器和运算器之间的通路是16位的。

2.6 8086CPU给出物理地址的方法

8086有20位地址总线,可传送20位地址,寻址能力为1M。

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

问题:

8086CPU如何用内部16位的数据转化成20位的地址?

答案:

8086CPU采用一种在内部用两个16位地址合成的方法来形成一个20位的物理地址。

结构如图示:

8086CPU在读写内存时,会发生以下过程:

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

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

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

4、地址加法器通过内部总线将20位物理地址送入输入输出控制电路。

5、输入输出控制电路将20位物理地址送上地址总线。

6、20位物理地址被地址总线传送到储存器。

地址加法器的工作原理:

地址加法器合成物理地址的方法:

物理地址=段地址 x 16 +偏移地址

个人理解:乘16相当于二进制向左移动4位,这样就空出来4位地址,加上偏移地址就是20位地址了。

例如8086CPU访问地址为123C8H的内存单元,如图示:

上图是16进制,4位16进制段地址乘16相当于向左移一位,再加上偏移地址变成5位16进制,也就是20位二进制地址。

移位次数和各种形式数据的关系:

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

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

3、地址加法器段地址 x 16 的运算相当于以二进制形二进制形式存放的段地址左移4位。

十六进制十进制同理;

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

两个比喻说明:

1、说明“基础地址+偏移地址=物理地址”的思想:

要从学校到图书馆可以用两种方式告诉别人

(1)从学校走2826m到图书馆。这2826m可以认为是图书馆的物理地址;

(2)从学校走2000m到体育馆,从体育馆再走826m到图书馆。第一个距离2000m是相对于起点的基础地址,第二个距离826m是相对于基础地址的pian偏移地址(以基础地址为起点的地址)

2、说明“段地址x16+偏移地址=物理地址”的思想:

比如只能通过纸条来通信,要告诉别人图书馆的地址只能将它写在纸上。显然,必须有一张可以容纳4位数据的纸条,才能写下2826这个数据。

可我们只有两张能够容纳3位数据的纸条,这样我们就以这种形式告诉别人

假设我们事前对这种情况又有过约定:别人得到这两张纸后,做这样的运算:200(段地址)x10+826(偏移地址)=2826(物理地址)。

8086CPU就是这样一个只能提供两张3位数据纸条的CPU。

2.8 段的概念

错误认识:

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

其实,

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

如图示:

段只是我们自己认为的概念

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

需要注意两点:

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

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

注:x86是字寻址,不是位寻址 所以寻址能力就是 2的6次方=64K x 字寻址的大小=64KB。

两个问题:

1、观察下面地址有什么发现?

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

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

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

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

内存单元地址小结:

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

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

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

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

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

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

这两种描述都表示“数据在内存21F60H单元中”,第一种更常用。

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

到这里,先完成检测点,再进行后面的学习。

猜你喜欢

转载自blog.csdn.net/k17010/article/details/81126008