IBM-PC微机组成原理(ppt48)-咨询报告【PPT课件】
2020-09-24 08:52:06
【导读】微型计算机中的中央处理器也叫微处理器。运算器和控制器。件完成指定功能的各项操作。主存储器是用于存放程序和数据的部件。对每个存储单元内容的存和取是按照地址进。储一个二进制数0或1。每8位组成一个字节。每一个基本单位称为一个存储单元。为了区分这些不同的存。个10位二进制数表示的地址,助存储器,简称辅存。由于它的位置是在主机之外,因。统能识别的信息形式向外输出。有的设备既具有输入功能又具有输出功能。系统总线将CPU、存储器和I/O设备连接起来,用于传送各大部件之间的信息。指令是构成汇编语言程序的最基本单位。相应的控制信号,控制各部件完成指令规定的操作。到指令队列中,等待EU取走并执行。部总线周期,与存储器或I/0进行数据的存取。EU和BIU是既分工又合作的两个独立部分。而大大加快了指令执行速度。在多数情况下,使用这些寄存器时必须在。隐念使用了某寄存器,称为隐含使用。例如,在循环指令LOOP中,CX被隐含指定作循环次数计数用。
【正文】
1
IBM-PC微机组成原理
IBM-PC微机基本结构
一、微机的一般构成
运算器、控制器、存储器、输入设备和输出
设备。
一般计算机应包括五大部件:
由于微机的主要特点是其体积很小,因此在系
统设计上就有一些特殊考虑,它将运算器和控制器
两大部件集成在一个集成电路芯片上,称为微处理
器,也叫中央处理器,简称CPU
2
微处理器
CPU主存储器
I/O接口
I/O设备
I/O接口
I/O设备
地址总线
数据总线
控制总线
系
统
总
线
微机硬件系统基本组成框图
3
1、中央处理器CPU
微型计算机中的中央处理器也叫微处理器。它包括
运算器和控制器。
功能:从主存储器中逐条取出构成程序的指令序
列,分析各指令的功能,控制计算机各部
件完成指定功能的各项操作。
2、主存储器
主存储器是用于存放程序和数据的部件。它由若干
个存储单元构成。存储单元的多少表示存储器的容量。
每个存储单元使用一个唯一的编号来标识,称为存储单
元的地址。对每个存储单元内容的存和取是按照地址进
行访问的。
4
计算机存储信息的基本单位是一个二进制位,一位可存
储一个二进制数0或1。每8位组成一个字节(BYTE)。
76543210
在大多数计算机中,存储器的组织都是以字节为基本
单位。每一个基本单位称为一个存储单元。
一个存储器是由许多的存储
单元构成的,如某存储器的
容量为32KB,1MB,128MB等
等。为了区分这些不同的存
储单元,一般使用单元地址
来指示各个存储单元。如一
个10位二进制数表示的地址,
可以用来区分210=1024=1K
个单元。
存储器地址
0000000000
0000000001
0000000010
1111111111
……
……
5
习惯上将CPU与主存储器合称为主机
在计算机中,除了主存储器之外,一般还配置有辅
助存储器,简称辅存。由于它的位置是在主机之外,因
此也叫做外存。
3、输入输出设备及接口
输入设备将外部信息(程序、数据和命令)送入
计算机。包括键盘、鼠标等。
输出设备将计算机处理后的结果转换为人或其它系
统能识别的信息形式向外输出。如显示器、打印机等。
有的设备既具有输入功能又具有输出功能。如磁
盘、磁带、触摸显示屏等。
6
由于I/O设备的工作速度、工作原理以及所处理的
信息格式等与主机相差很大,因此I/O设备要通过I/O
接口才能与系统总线连接。
I/O接口是主机与I/O设备之间设置的逻辑控制部
件。通过它实现主机与I/O设备间的信息传送。
4、系统总线
系统总线将CPU、存储器和I/O设备连接起来,
用于传送各大部件之间的信息。
系统总线包括地址总线、数据总线和控制总线三
组。它们分别用于传送不同的信息。
7
二、Intel8086/8088CPU的功能结构
指令是构成汇编语言程序的最基本单位。就象高级语
言中的一个语句。
程序是由一系列的指令——指令序列构成。
CPU执行指令序列就是重复执行以下两个步骤:
从存储器中取指令
执行指令所规定的功能
8
这两个步骤的执行又可以分为两种情况:
1.串行方式
取指执行存数取指执行取指取数执行
忙闲忙忙闲忙忙闲
CPU
外部总线
特点:
(1)当CPU在执行指令时,不需要占用外部总线,但此时
总线也不能作它用,因此外部总线的空闲时间比较多。
(2)在从存储器取指令或数据时,总线处于忙状态,其所
占用的时间也较长。但CPU却只需要使用很短的时间去处
理。因此大部分时间都是处于闲置状态。
采用串行工作方式的计算机其运行速度较慢
时间
9
AHAL
BHBL
CHCL
DI
SP
BP
SI
地址加法器
IP
CS
DS
SS
ES
总线
控制
逻辑暂存器
标志寄存器
ALUEU控制器123456
控制信号
16
位
数
据
总
线
段
寄
存
器
通
用
寄
存
器
组
外部总线
16位CPU内总
线
AX
BX
CX
20位地址总线
指令队列
执行单元(EU)总线接口单元(BIU)
10
(1)执行单元EU
EU的主要任务是分析与执行指令,它包括:
A、从指令队列中取出指令代码,由控制器译码后产生
相应的控制信号,控制各部件完成指令规定的操作。
B、对操作数执行各种指定的算术或逻辑运算
C、向BIU发送访问主存或I/0的命令,并提供相应的
地址和传送的数据
11
(2)总线接口单元BIU
BIU负责CPU与存储器、I/0的信息传送。具体功能包括:
A、取指令——根据CS寄存器和指令指针IP形成20位的物
理地址,从该地址指定的存储器单元中取出指令,并暂存
到指令队列中,等待EU取走并执行。
B、存取数据——在EU执行指令的过程中,如果需要与存
储器或I/O端口传送数据时,根据EU提供的数据和地址,
并结合相应的段寄存器(DS、ES或SS)的内容,进入外
部总线周期,与存储器或I/0进行数据的存取。
EU和BIU是既分工又合作的两个独立部分。它们的操
作在一定程序上是并行工作的,分别完成不同的任务,因
而大大加快了指令执行速度。
12
Intel8086/8088运行时执行过程大致如下图所示。
执行执行执行执行
忙
存数取数取指取指取指取指
忙忙忙忙忙
EU
BIU
外部总线
时间
……
……
……
等待
13
2.2Intel8086/8088CPU寄存器结构及其用途
一、通用寄存器
AHAL
BHBL
CHCL
DHDL
AX
BX
CX
DX
SP
BP
SI
DI
IP
FLAGS
DS
ES
SS
CS
累加器
基址寄存器
计数寄存器
数据寄存器
堆栈寄存器
基址寄存器
源变址寄存器
目的变址寄存器
指令指针
标志寄存器
堆栈段寄存器
代码段寄存器
数据段寄存器
附加段寄存器
通用寄存器8个
控制寄存器2个
段寄存器4个
14
Intel8086/8088有8个16位通用寄存器,它们一般不只
用作某个特定的功能,而是具有良好的通用性,可以由程
序设计人员进行编程访问。
1.数据寄存器
它包括AX、BX、CX和DX四个寄存器。它们中的每一
个既可以是16位寄存器,也可以分成两个8位寄存器使用。
即可以当作8个独立的8位寄存器使用。
数据寄存器既可以用来存放参加运算的操作数,也可以
存放运算的结果。在多数情况下,使用这些寄存器时必须在
指令中指明。
例:MOVAX,BX;将BX的内容送到AX中
ADDCH,DH;将DH和CH的内容相加,结果送到CH
15
在有些指令中,不需要明确指出使用的寄存器名,即
隐念使用了某寄存器,称为隐含使用。
例如,在循环指令LOOP中,CX被隐含指定作循环次数计数用。
另外,个别指令对寄存器有特定的使用,并且又必须在
指令中指明它的名字,这类寄存器的使用称为特定使用。
例如,在移位指令(SHLAX,CL)中,CL被固定用作移位次数。
2.指针寄存器
指针寄存器有堆栈指针SP和基址指针BP
它们一般被用作16位地址指针,在形成20位的物理地
址时常被作为偏移量使用。
来自
16
SP指针——在进行堆栈操作时,被隐含使用,指向堆栈顶
部单元。
BP指针——被用来指向堆栈段内某一存储单元。BP除用
作地址指针外也可以象数据寄存器一样,存放参加运算的
操作数和运算的结果。
3.变址寄存器
有两个16位的变址寄存器SI和DI,一般被用来作地址指针。
SI——源变址寄存器DI——目的变址寄存器
同BP寄存器一样,SI和DI也可以用作通用数据寄存
器存放操作数和运算结果。
17
二、段寄存器
8086/8088CPU在使用存储器时,将它划分成若干个
段。每个段用来存放不同目的内容,如程序代码、数据等
等。每个存储段用一个段寄存器来指明该段的起始位置
(也叫段基址)。
…
…
…
…
…
…
代码段
数据段
堆栈段
附加段
ES
CS
DS
SS
段
寄
存
器
段基址
段基址
段基址
段基址
18
CPU在访问存储器时必须指明两个内容:
(1)所访问的存储单元属于哪个段,即指明使用的段
寄存器。
(2)该存储单元与段起始地址(段基址)的偏移大小,
即偏移量。
在程序设计中,一个程序将存储器划分成多少个存
储段是任意的。但在程序运行的任何时刻最多只能有用
CS、DS、ES和SS分别指定的4个当前段。
19
三、指令指针IP
CPU在运行程序时,以IP的内容作为将要执行指令
在内存中的存放地址的偏移量,以段寄存器CS作为代码
段的基址指针,即以CS和IP的内容共同构成了一条指令
的存放地址。
CPU根据CS和IP寄存器的内容到内存中去取指令,
当取出一条指令后,IP内容自动修改为指向下一条指令。
…
…
…
CS
IP偏移量
代码段基址
CPU
下一条指令
正在执行的指令
20
子程序调用指令CALL,将IP原有内容自动压入堆栈,而将
子程序的入口地址偏移量自动送入IP,而返回指令RET,
又自动从堆栈中弹回原有IP的内容。
转移指令将指令中的目的地址的偏移量送入IP
例如,下面两种指令就可以自动改变IP寄存器的内容。
注意:IP的内容不能被直接进行访问,即不能用指令去
读IP的值,也不能用指令给它赋值。但是可以通过某些指
令的执行而自动修改IP的内容。
21
四、标志寄存器
标志寄存器是用来反映CPU在程序运行时的某些状态,
如是否有进位、奇偶性、结果的符号、结果是否为零等等。
8086/8088CPU中标志寄存器的长度为16位,但其中只
有9位才有意义。
1514131211109876543210
OFDFIFTFSFZFAFPFCF
进
位
位
奇
偶
位
零
值
位
辅
助
进
位
位
单
步
标
志
位
符
号
位
中
断
允
许
位
方
向
位
溢
出
位
22
1.进位位CF
在进行算术运算时,若最高位(对字操作是第15位,字节
操作是第7位)产生进位或借位时CF被自动置“1”,否则置
“0”。
在移位类指令中,CF也被用来存放从最高位(左移时)
或最低位(右移时)移出的数值(0或1)。
2.奇偶位PF
当指令操作结果的低8位中含有1的个数为偶数时,则PF
被置1,否则PF被置0。
注意:PF只反映操作结果的低8位的奇偶性,与指令操
作数的长度无关。
23
3.辅助进位位AF
在进行算术运算时,若低字节的低四位向高4位产
生进位或借位,即第3位产生进位或借位时,AF位被置1,
否则置0。AF标志位用于十进制运算的调整。
注意:AF只反映运算结果低八位,与操作数长度无关。
4.零值位ZF
若运算结果各位全为0,则ZF被置1,否则置0。
5.符号位SF
将运算结果视为带符号数,当运算结果为负数时SF被
置1,为正数时,则置0。
24
由于第7位是字节操作数的符号位,而第15位是字
操作数的符号位,因此,SF位与运算结果的最高位
(第7位或第15位)相一致。
OF
当运算结果超过机器用补码所能表示数的范围时,
则OF置1,否则置0.
字节数据,机器用补码所能表示的数范围为-128—+127。
字数据的表示范围为:-32768—+32767
注意:溢出与进位是两个完全不同的概念,不能相互混淆。
25
例如:计算-85D+(-1D)=-86D
10101011B
+)11111111B
10101010B1-86D
计算100D+100D=200D
01100100B
+)01100100B
11001000B-56D
CF=0,OF=1,结果发生溢出,即结果出错。
进位被
丢弃
CF=1,OF=0,结果正确。
26
计算-85D+-117D=-202D
10101011B
+)10001011B
00110110B54D1
CF=1,OF=1,结果发生溢出,即结果出错。
7.单步标志位TF(TraceFlag)
单步标志也叫跟踪位,该标志为控制标志位,当
TF位被设置为1时,每执行一条指令后,CPU暂停运行,
即产生单步中断。单步标志位供调试程序使用。
27
8.中断允许位IF
该标志位为控制标志位。当IF被设置为1时,CPU可以
响应可屏蔽中断,否则不允许响应可屏蔽中断。
9.方向位DF
DF也是控制标志位。它被用来规定串操作指令的增减
方向。当DF=0时,串操作指令自动使变址寄存器(SI和DI)
的内容递增。当DF=1时,串操作指令自动使变址寄存器的
内容递减。
28
存储器
一、存储器的组成
1.存储器是由若干个存储单元构成
存储单元的多少就表示了存储器的容量。
2.每个存储单元存放相同长度的二进制数
一个存储单元的长度一般为8位二进制数,称为一个字节(BYTE)。
3.每个存储单元有一个唯一的地址编码——地址
8086/8088CPU具有20根地址线,即它可以产生20位
的地址码,它的存储器寻址能力为220,即1兆字节空间。
29
这一兆字节存储单元的地址范围为:00……0~11……1。如图所示。
20位20位
……
07
存储单元(字节)二进制数地址
00000000000000000000
00000000000000000001
00000000000000000010……
11111111111111111110
11111111111111111111
十六进制数地址
00000H
00001H
00002H
FFFFEH
FFFFFH
……
为了方便书写,在源程序中常用5位十六进制数或一个符
号来表示一个存储单元的地址。
30
4.任何两个相邻字节单元就构成一个字单元
一个字存储单元(WORD)的长度为16位二进
制数,即两个字节。字单元的地址为两个字节单元中
较小地址字节单元的地址。
16位长数据的存放规则是低8位放在较低地址字
节单元中,高8位放在较高地址字节单元中。
例如,将数据3456H放在地址为09235H
的存储单元中的存储分配如图所示。
…
…
地址存储单元
09235H
09236H
56
34
31
5、在定义一个地址时必须指出是字节或字类型属性
由于存储单元可分为字单元和字节单元,因此
8086/8088CPU访问内存的指令中,分为字节访问和字访
问两种指令。
二、存储器的段结构
8086/8088系统的存储器段结构具有以下几个特点:
1.8086/8088CPU将1MB的存储空间划分成若干个段,每
个段最大长度为64K(65536)个字节单元组成。
在8086/8088的汇编程序中,用户可以根据自己需要来
设定段的个数、各个段长度和每个段的用途。并且代码或
数据可以存放在段内任意单元中。
32
2.每个段的基址必须是一个小节的首址。
段基址——一个段的起始地址。
在存储器中规定从0地址开始,每16个字节单元称为一个小
节(Paragraph)。因此,1MB内存就可划分为64K个小节。
第1小节:00000H,00001H,00002H……0000FH
第2小节:00010H,00011H,00012H……0011FH
第65535小节:FFFE0HFFFE1HFFFE2H……FFFEFH
第65536小节:FFFF0HFFFF1HFFFF2H……FFFFFH
…..
…..
…..
…..
…..
可以看出,每个小节的首地址最低位必为0(16进制数表
示)。因此段基址只能是上述64K个小节首址之一。
33
3.逻辑段在物理存储器中可以是邻接的、间隔的、
部分重叠的和完全重叠的等4种情况。
逻辑段是指在汇编语言源程序中设置的段。
内存中的一个物理存储单元可以映象到一个或多个逻辑段中。
物理存储器
00000H
10000H
DA_BYTE
段
1
段
2段
3段4
段
5
邻接
部分重叠
完全重叠
间隔
逻辑段
0FFFFFH
DA_BYTE物理单元
可以映象到逻辑段2、
段3和段4中。
34
4、在任一时刻,一个程序只能访问4个段中的内容。
4个段分别是代码段、数据段、堆栈段和附加段,
称为当前段。4个段寄存器CS、DS、SS和ES分别保
存了它们段基址的高16位地址,称为段基值。段基址
的最低4位为0。(小节首址的低4位为全0)。
三、逻辑地址与物理地址及相互关系
1.物理地址
在1MB的存储空间中,每个存储单元的物理地址是唯
一的,它就是该存储单元的20位地址。
8086/8088的物理地址范围:00000H~0FFFFFH
35
CPU与存储器之间的任何信息交换都使用物理地址。
2.逻辑地址
在程序设计中,为了便于程序的开发和对存储器进行动
态管理,使用了逻辑地址。
一个逻辑地址包括两个部分:段基值和偏移量(OFFSET)
段基值:存放在某一个段寄存器中,是一个逻辑段的起始
单元地址(段基址)的高16位。
偏移量:表示某个存储单元与它所在段的段基址之间的字
节距离。
当偏移量为0时,就是这个段的起始单元,而偏移量
为0FFFFFH时,就是这个段的最后一个字节单元。
36
逻辑地址的表示方法是段基值:偏移量
例:3267H:00A0H
它表示该逻辑单元位于段起始地址为32670H,段内
偏移量为00A0H个字节。
当CPU要访问存储器时,需要由总线接口单元BIU将逻
辑地址转换成物理地址。
转换方法:将逻辑地址的段基值左移4位,形成20位的段基
址(低位为0)然后与16位的偏移量相加,结果即为20位的
物理地址。其转换示例如图所示。
37
段1:2B0H
段2:2C0H
002D3H
偏移量
23H偏移量
13H
0915H
003AH
09150H
003AH+)
0918AH
偏移量
段基值
逻
辑
地
址
物理地址
右图表示同一个物理地址
002D3H被被两个逻辑段中
的逻辑地址映射。
002B0H+00023H=002D3H
002C0H+00013H=002D3H
38
在程序的执行过程中,CPU根据不同操作类型访问存
储器,其逻辑地址中段基值和偏移量的来源是不一样的。
下表是各种操作类型所对应的逻辑地址的来源。
逻辑地址
隐含来源允许替代来源偏移量(OFFSET)
操作类型序号
1
2
3
4
5
6
取指令
堆栈操作
取源串
存目的串
以BP作基址
存取一般变量
DI
CS
SS
DS
ES
SS
DS
IP
SP
SI
有效地址EA
有效地址EA
无
无
CS,SS,ES
无
CS,DS,ES
CS,SS,ES
段基值
39
说明:
(1)允许替代来源也叫做段超越,它表示了段基值除使
用隐含的段寄存器外是否可以指定其它段寄存器来提供。
(2)有效地址EA,它表示根据指令所采用的寻址方式
(下一章介绍)计算出来的段内偏移量。
40
堆栈及其操作方法
堆栈是一个特定的存储区,访问该存储区必须按照指
定的规则进行操作。
堆栈一般分为:和专用堆栈存储器软件堆栈
按堆栈的工作方式专门设计的存储器专用堆栈存储器
软件堆栈由程序设计人员用软件在内存储器中划出的一块
存储区作为堆栈来使用。8086/8088就是这种方式。
堆栈的用途:主要用于暂存数据以及在过程调用或处理
中断时保存断点信息。
一、堆栈的构造
41
堆栈
已
存
放
数
据
TOP
Bottom
…
…
主存
00000H堆栈的一端是固定的,
称为栈底。栈底是堆栈存储
区的最大地址单元。
另一端是浮动的,称为
栈顶。在任何时刻,栈顶是
最后存入信息的存储单元。
栈顶是随着堆栈中存放信息
的多少而改变。
为了指示现在堆栈中存放数据位置,通常设置一个寄存
器来指示栈顶位置。其内容就象一个指针一样,因此被称为
堆栈指针SP(StackPointer)。
SP的内容始终指向栈顶单元
堆栈中数据进出都由SP来控制
42
在堆栈中存取数据的规则是:“先进后出FILO”
(First-InLost-Out)。即最先送入堆栈的数据要到最后
才能取出,而最后送入堆栈的数据,最先取出。
二、8086/8088堆栈的组织
在8086/8088微机中堆栈是由堆栈段寄存器SS指定的一段存储区。
SS
SP
堆栈
Bottom
Top
XX
XX
XX
XX
XX
XX
堆栈初始化时的SP
43
堆栈顶部由椎栈指针SP指示。SP中内容始终表示堆
栈段基址与栈顶之间的距离(字节数)。当SP内容为最
大值时,表示堆栈为空。而当(SP)=0时,表示堆栈全
满。
当SP被初始化时,指向栈底+2单元,其值就是个堆
栈的长度。由于SP是16位寄存器,因此堆栈最大64K字节
数据在堆栈中的存放格式是:以字为单位存放,数据
的低8位放在较低地址单元,高8位放在较高地址单元。
当用户程序中要求的堆栈长度超过一个堆栈段的最
大长度64KB时,可以设置几个堆栈段。通过改变堆栈段
寄存器SS的内容,即可改变到另一个堆栈段,当改变了
堆栈段寄存器SS的内容后,必须紧接着赋与SP新值。
44
三、堆栈操作
设置堆栈主要是对堆栈段寄存器SS和堆栈指针SP赋值。
例如:
STACK1SEGMEMTPARASTACK
DB100DUP(0)
STACK1ENDS
第一行中的PARASTACK就是用来说明本段为堆栈段。
当程序经过汇编、连接并装入内存时,系统将自动为
其分配一个存储区作为堆栈段,将这个段的段基址的高16
位送入SS中,而将程序指定的字节单元数100(64H)赋值
给SP,这样堆栈就被设置好了。
45
PUSH
进栈就是把数据存入堆栈。由指令PUSH或者由机器自动
实现,可以将通用寄存器、段寄存器或字存储单元的内容压
入堆栈顶部。
例:PUSHAX;将寄存器AX的内容压入堆栈
PUSHDS;将段寄存器DS的内容压入堆栈
PUSHDATA-WORD;将字存储单元DADA-WORD压入
;堆栈
PUSHF;将标志寄存器内容压入堆栈。
进栈的执行过程:
(1)首先将堆栈指针SP减2,即指向一个空的堆栈字单元
SP<=(SP)—2
46
(2)将要储存的内容(寄存器或存储单元的内容)送
入SP指向的字单元中。(SP)<=数据
例如,指令PUSHAX的执行过程如下图所示:
SS
ALAH
(AH)
(AL)现(SP)
原(SP)
…
…
…
SP
(SP)-2
(1)
(2)
00000H
47
POP
出栈操作由POP指令实现,它从堆栈顶部弹出一个
字到通用寄存器、段寄存器或字存储单元。
例如:POPAX;将栈顶字单元内容弹出到AX
POPDS;将栈顶字单元内容弹出到DS
POPDATA-WORD;将栈顶字单元内容弹出到
;DATA-WORD存储。
POPF;将栈顶字单元内容送回标志寄存器F。
出栈的操作过程:
(1)将SP指向的字单元(即栈顶字单元)内容送往指定
的寄存器或存储器。即寄存器/存储器<=(CSP)
48
(2)堆栈指针SP内容加2,即SP<=(SP)+2
例如,指令POPAX的操作过程如下图所示。
SP
(SP)+2
SS
ALAH
XX
XX
现(SP)
原(SP)
…
…
…
XX
XX
00000H(2)
(1)
党政相关相关推荐
文库吧 www.wenkub.com
鄂ICP备17016276号-1