当前位置:文档之家› 存储器知识点小结

存储器知识点小结

`
Word文档
CPU工作的实质即为不断从存中取指令并执行指令的过程。

一、8086CPU构成
CPU的工作:取指令和执行指令
1. CPU部两大功能部件:总线接口部件BIU和执行部件EU(2部件并行工作提高了
CPU的工作效率)
重点:理解2个独立功能部件的分工和协同配合关系。
理解BIU地址加法器的作用,理解指令队列的作用。
2. 掌握CPU部寄存器的作用
包括:通用寄存器AX,BX,CX,DX,BP,SP,SI,DI
段寄存器CS,DS,SS,ES
指令指针寄存器IP
标志寄存器FLAG
二、存储器的基础知识
1.物理地址
8086的存储器是以字节(即每个单元存放8位二进制数)为单位组织的。8086CPU具
有20条地址总线,所以可访问的存储器地址空间容量为220即1M字节(表示为1MB)。
每个单元对应一个唯一的20位地址,对于1MB存储器,其地址围用16进制表示为00000H~
0FFFFFH,如图1所示。
`

Word文档
图1 1MB存储器地址表示
物理地址:存储器的每个单元都有一个唯一的20位地址,将其称为物理地址。
2.字节地址与字地址
存储器两个连续的字节,定义为一个字,一个字中的每个字节,都有一个字节地址,每
个字的低字节(低8位)存放在低地址中,高字节(高8位)存放在高地址中。字的地址指
低字节的地址。各位的编号方法是最低位为位0,一个字节中,最高位编号为位7;一个字
中最高位的编号为位15。
字数据在存储器中存放的格式如图2所示。

图2 字数据在存储器中的存放
地址低端

地址高端

地址低端
地址高端
`

Word文档
3.单元地址与容

图3
如图3,地址是00100H的字节单元的容为27H,表示为 (00100H)= 27H。

图3中字数据3427H存放在地址是00100H和00101H的两个字节单元中,其中低字
节27H在低地址的字节单元00100H中,高字节34H在高地址的字节单元00101H中,字
数据3427H的地址是低地址00100H。 地址是00100H的字单元的容为3427H,表示
为 (00100H)= 3427H
可见 一个地址既可作字节单元的地址,又可作字单元的地址,视使用情况而定。
总结:
字节单元:(00100H)=27H
字单元: (00100H)=3427H
设寄存器DS=0000H,
用MOV指令访问字节单元:MOV AL,[0100H]
用MOV指令访问字单元: MOV AX,[0100H]

三、存储器的分段

1. 为什么要分段

内容
单元地址
`

Word文档
8086CPU有20位地址总线,可寻址的最大存空间达1M字节,地址围为

00000H-0FFFFFH。存中每个字节单元有唯一的20位物理地址,CPU存取存中的程序和数
据必须使用20位物理地址。
问题:8086 CPU访问1MB空间的存必须有20位地址,而其部的寄存器均为16位的,
那么在传输地址时一次只能传输16位地址,即只能访问64K字节地址空间。
8086 CPU应如何提供20位地址,以寻址1MB存?
2.如何分段
为了使8086 CPU能访问到1MB存空间中任何一个单元,8086巧妙地采用了地址分
段方法(即将1MB空间分成若干个逻辑段),从而将寻址围扩大到了1MB。
分段的规则:
(1)为了能在1MB空间进行全围寻址,即可访问到1MB存储器的任何一个存储单元,
把lMB存储器分成若干段(segment),每一段最大为64KB。
(2)在分段时,要求段起始单元的20位物理地址的低4位全为0(即是16的整数倍),

写成十六进制,最后一位应是0,即XXXX0H(X为任一个十六进制数码)。
图4 分段示意图
`
Word文档
分析:既然段起始地址的低4位为零,则只需将段起始地址的高16位保存到CPU部的

寄存器中(保存段起始地址的寄存器称之为段寄存器)
3.有关存地址的概念
段基址:将段起始地址的高16位称为段基址。
偏移量:段各存储单元相对段的起始单元都有一个距离,称为段偏移量,又称偏移地址
或有效地址(EA)。
因段的大小不超过64KB,所以段任何一个单元距离段首的偏移量均在0000H-FFFFH
之间,即偏移量可以用一个16位二进制数表示。
总结:段基址决定了一个段在存的开始位置(即段首地址),偏移地址描述了该单元与
段首的距离。
可见,由段基址与偏移地址可描述出一个单元在存的空间位置。例如:一个单元所在段
的段基址为1234H,该单元与段首的距离为2,该单元在存的位置表示如图5。

12340H-----段首(物理地址表示)
地址低端

地址高端
该单元所在的段基址为1234H,
它距离段首偏移2个单元

逻辑地址表示:1234H:0000H

逻辑地址表示:1234H:0002H
`

Word文档
图5 存单元的物理地址与逻辑地址表示

把1MB的存贮空间分成若干个逻辑段以后,对一个段的任意存贮单元,都可以用两部
分地址来描述,一部分地址为段基址,另一部分为段偏移地址(有效地址EA),段基址和段偏
移地址都是16位二进制数,常用4位十六进制数表示。
逻辑地址:使用段基址:偏移地址表示存单元的地址形式称为逻辑地址。
上图中单元的地址用逻辑地址表示为:1234H:0002H
4.物理地址的形成
在整个1M地址空间中,存储单元的物理地址等于段起始地址加上段偏移。

已知某存储单元的逻辑地址,该单元的物理地址PA的计算方法为:物理地址=段基址
*10H+段偏移地址。
8086CPU 的总线接口部件BIU中设置了地址加法器Σ,它用来完成物理地址的计算。

图6 物理地址的形成
例1:某单元的逻辑地址为1234H:1000H,则该存储单元的物理地址为:
物理地址(PA)=段地址*10H+EA=1234H* 10H+1000H=12340H+1000H=13340H
例2:物理地址为00020H单元,其逻辑地址可以有:0000H:0020H和0001H:0010H
`
Word文档
可见,一个单元的物理地址是唯一的,逻辑地址确有多个。
5.信息的分段存储与段寄存器的关系
用8086汇编语言编写程序时,要把程序中的不同信息安排在不同的段。而程序中的信息
包括:程序(代码)信息;数据信息;堆栈信息。
其中,代码信息存放在代码段,其地址由CS:IP提供。
堆栈信息存放在堆栈段,其地址由SS:SP提供。
数据信息,通常情况下,存放在数据段(段基址由DS提供),当然也可以存放在附加数

据段(段地址由ES提供),其段偏移地址依据寻址方式的不同来求得。
图 7 信息的分段存储与段寄存器的关系
`
Word文档
其中段基址由段寄存器提供:

CS ——提供当前代码(程序)段的段基址;
DS ——提供当前数据段的段基址;
SS ——提供当前堆栈段的段基址;
ES ——提供当前附加数据段的段基址;

一个存储单元用逻辑地址表示后,CPU 访问该单元时应提供两部分地址:段基址和段
偏移地址。CPU访问存时,根据对应的操作,形成段基址和偏移地址,具体来说:
 当CPU 从存取指令时,由寄存器CS提供代码段的段基址,由指令指针寄存器IP提供指令
所在单元的偏移地址。

在取指令时,CPU会自动引用代码段寄存器CS,再加上由IP所给出的16位段偏移,得

到要取指令的物理地址。
 当进行堆栈操作时,由寄存器SS提供堆栈段的段基址,由寄存器SP提供堆栈段的段偏移地
址。

当涉及堆栈操作时,CPU会自动引用堆栈段寄存器SS,再加上由SP所给出的16位段偏

移,得到堆栈操作所需的物理地址。
 当CPU 对存储器进行数据读/写操作时,可由寄存器BX,SI,DI,BP以某种寻址方式向存
储器提供段偏移地址。

当段偏移涉及BP寄存器时,缺省引用的段寄存器为堆栈段寄存器SS。

相关主题