第一章 微型计算机系统导论
1.1 引言
1.2 计算机的发展状况
微型计算机属于第四代计算机,是20世纪70年代初期研制成功的。一方面是由于军事、空间及自动化技术的发展,需要体积小、功耗低、可靠性高的计算机;另一方面,大规模集成电路技术的不断发展也为微型计算机的产生打下了坚实的物质基础。
微处理器(Microprocessor)是微型计算机的核心,它是将计算机中的运算器和控制器集 成在一块硅片上制成的集成电路芯片。这样的芯片也被称为中央处理单元(Central Processing Unit),简称CPU。
微型计算机(Microcomputer)是由微处理器(CPU)、存储器和IO接口电路组成的计算机。
1.3 微型计算机硬件系统
微型计算机是指以微处理器为核心,配上存储器、输入/输出接口电路等所组成的计算机(又称为主机)。微型计算机系统(Microcomputer System)是指以微型计算机为中心,配以相应的外围设备、电源和辅助电路(统称硬件)以及指挥计算机工作
的系统软件所构成的系统。与一般的计算机系统一样,微型计算机系统也是由硬件和软件两部分组成的,如图1.1所示。
本节首先介绍微型计算机的硬件组成,微型计算机软件系统将在1.4节介绍。
1.3.1 基于总线的微型计算机硬件系统
到目前为止,计算机仍沿用1940年由冯·诺依曼提出的体系结构。其基本设计思想为:
①以二进制形式表示指令和数据。
②程序和数据事先存放在存储器中,计算机在工作时能够高速地从存储器中取出指令
加以执行。
③由运算器、控制器、存储器、输入设备和输出设备等五大部件组成计算机硬件系统。
微机体系结构的特点之一是采用总线结构,通过总线将微处理器(CPU)、存储器(RAM和ROM)、IO接口电路等连接起来,而输入/输出设备则通过I/O接口实现与微机的信息交换,如图1.2所示。
所谓总线,是指计算机中各功能部件间传送信息的公共通道,所有的信息都通过总线传送。
根据所传送信息的内容与作用不同,总线可分为以下三类:
(1)地址总线AB(Address Bus):在对存储器或I/O端口进行访问时,传送由CPU提供的要访问
存储单元或I/O端口的地址信息,以便选中要访问的存储单元或I/O端口。AB是
单向总线。
(2)数据总线DB(Data Bus):从存储器取指令或读写操作数,对I/O端口进行读写操作
时,指令码或数据信息通过数据总线送往CPU或由CPU送出。DB是双向总线。
(3)控制总线CB(Control Bus):各种控制或状态信息通过控制总线由CPU送往有关部
件、或者从有关部件送往CPU。CB中每根线的传送方向是一定的,图1.2中CB作为一个整体,用双向表示。
采用总线结构时,系统中各部件均挂在总线上,可使微机系统的结构简单,易于维护,并具有更好的可扩展性。一个部件(插件)只要符合总线标准就可以直接插入系统,为用户对系统功能的扩充或升级提供了很大的灵活性。
1.3.2 微处理器
图1.3所示为一个简化的微处理器模型(虚线框内),它由运算器(ALU)、控制器(CU)和
内部寄存器R)三部分组成。现将各部件的功能简述如下。
1.运算器
运算器又称算术逻辑单元(ALU,Arithmetic Logic Unit),用来进行算术或逻辑运算以及移位循环等操作。参加运算的两个操作数一个来自累加器A(Accumulator),另一个来自内部数据总线,可以是数据缓冲寄存器DR(Data Register)中的内容,也可以是寄存器阵列RA(Register Array)中某个寄存器的内容。
2.控制器
控制器又称控制单元(CU,Control Unit),是全机的指挥控制中心。它负责把指令逐条从存储器中取出,经译码分析后向全机发出取数、执行、存数等控制命令,以保证正确完成程序所要求的功能。控制器中包括以下几部分:
(1)指令寄存器IR(Instruction Register):用来存放从存储器取出的将要执行的指令码
当执行一条指令时,先把它从内存取到数据缓冲寄存器DR中,然后再传送到指令寄存IR中。
(2)指令译码器D(Instruction Decoder):用来对指令寄存器IR中的指令操作码字段(令中用来说明指令功能的字段)进行译码,以确定该指令应执行什么操作。
(3)可编程逻辑阵列PLA(Programmable Logic Array):用来产生取指令和执行指令所 要的各种微操作控制信号,并经过控制总线CB送往有关部件,从而使计算机完成相应的操作。
3.内部寄存器
虽然不同计算机的CPU所拥有的内部寄存器会有所不同,但一般至少要有以下几种寄 存器。
1)程序计数器PC(Program Counter)
程序计数器有时也被称为指令指针(IP,Instruction Pointer),它被用来存放下一条要执 行指令所在存储单元的地址。在程序开始执行前,必须将它的起始地址,即程序的第一条 指令所在的存储单元地址送入PC。当读取指令时,CPU将自动修改PC内容,以便使其保持的总是将要执行的下一条指令的地址。由于大多数指令是按顺序执行的,因此修改的办 法通常只是简单地对PC加1。但遇到跳转等改变程序执行顺序的指令时,后继指令的地址 (即PC的内容)将从指令寄存器IR中的地址字段得到。
2)地址寄存器AR(Address Register)
地址寄存器用来存放正要取出的指令的地址或操作数的地址。由于在内存单元和CPU 之间存在着操作速度上的差异,因此必须使用地址寄存器来保持地址信息,直到内存的读/ 写操作完成为止。
在取指令时,PC中存放的指令地址送到AR,根据此地址从存储器中取出指令。 在取操作数时,将操作数地址通过内部数据总线送到AR,再根据此地址从存储器中取 出操作数;在向存储器存入数据时,也要先将待写入数据的地址送到AR,再根据此地址向存储器写入数据。
3)数据缓冲寄存器DR(Data Register)“
数据缓冲寄存器用来暂时存放指令或数据。从存储器读出时,若读出的是指令,经DR暂存的指令经过内部数据总线送到指令寄存器IR;若读出的是数据,则通过内部数据总线 送到运算器或有关的寄存器。同样,当向存储器写入数据时,也首先将其存放在数据缓 寄存器DR中,然后再经数据总线送入存储器。
来补偿CPU和内存、外围设备之间在操作速度上存在的差异。 可以看出,数据缓冲寄存器DR是CPU和内存、外部设备之间信息传送的中转站,
4)累加器A(Accumulator)
而运算结果通常又放回累加器,其中原有信息随即被破坏。因此,顾名思义,累加器是 累加器是使用最频繁的一个寄存器。在执行算术逻辑运算时,它用来存放一个操作数 来暂时存放ALU运算结果的。显然,CPU中至少应有一个累加器。目前CPU中通常有 第个累加器。当使用多个累加器时,就变成了通用寄存器堆结构,其中任何一个既可存放的操作数,也可存放源操作数。例如本书介绍的80x86系列CPU就采用了这种累加器结构。
5)标志寄存器FLAGS(Flag Register)
标志奇存器有时也称为程序状态字(SW,Pogram Staus Word)。它用来存放执行算术 运算指令、逻辑运算指令或测试指令后建立的各种状态码内容以及对CPU操作进行控制的 控制信息。标志位的具体设置及功能随微处理器型号的不同而不同。编写程序时,可以通 过测试有关标志位的状态(0或1)来决定程序的流向。
6)寄存器阵列RA(Register Array)
寄存器阵列实际上相当于微处理器内部的RAM。微处理器内部有了这些寄存器后,就 可避免频繁访问存储器,缩短指令长度和指令执行时间,提高机器的运行速度,方便程序设计。不同类型CPU的寄存器阵列规模大小会有所不同。
1.3.3 存储器
这里介绍的存储器是指内存储器(又称为主存或内存)。它是微型计算机的存储和记忆装置,用来存放指令、原始数据、中间结果和最终结果。
在计算机内部,程序和数据都以二进制形式表示,8位二进制代码作为一个字节。为了 便于对存储器进行访问,存储器通常被划分为许多单元,每个存储单元存放一个字节的二 进制信息,每个存储单元分别赋予一个编号,称为地址。如图1.4所示,地址为4005H的 存储单元中存放了一个8位二进制信息00111000B。
计算机在执行程序时,CPU会自动而连续地从内存储器中取出要执行的指令,并执行 指令规定的操作。这就是说,计算机每完成一条指令,至少有一次为取指令而访问内存储 器的操作。内存储器是计算机主机的一部分,一般把具有一定容量且速度较高的存储器作 为内存储器,CPU可直接用指令对内存储器进行读/写。在微型计算机中,通常用半导体存 储器作为内存储器。
1.基本概念
(1)位(Bit):二进制信息的最小单位(0或1),
(2)字节(Byte):由8位二进制数组成,可以在放在一个存储单元中。字节是字的基本组成单位。
(3)字(Word):计算机中作为一个整体来处理和运算的一组二进制数,是字节的整数信 通常它与计管机内部的寄存器、算术逻辑单元、数据总线宽度相一致。每个字包括的位数 称为计管机的字长,是计算机的重要性能指标。目前为了表示方便,常把一个字定义为1 位,把一个双字定义为32位, (4)内存容量,内存中存储单元的总数。通常以字节为单位,1024(210)字节记作1KB
220字节记作1MB
(4)内存单元地址,为了能识别不同的单元,每个单元都赋予一个编号,这个编号称
内存单元地址。显然,各内存单元的地址与该地址对应的单元中存放的内容是两个完全不同的概念,不可混淆。
2.内存的操作
CPU对内存的操作有两种:读或写。读操作是CPU将内存单元的内容读入CPU内部, 而写操作是CPU将其内部信息送到内存单元保存起来。显然,写操作的结果改变了被写内 存单元的内容,是破坏性的,而读操作是非破坏性的,即该内存单元的内容在信息被读出 之后仍保持原信息不变。
从内存单元读出信息的操作过程如图1.5(a)所示。假设将地址为90H的单元中的内容 10111010B(BAH)读入CPU,其操作过程如下:
(1)CPU经地址寄存器AR将要读取单元的地址信息10010000B(90H)送地址总线,经 地址译码器选中90H单元:
(2)CPU发出“读”控制信号。
(3)在读控制信号的作用下,将90H单元中的内容10111010B(BAH)放到数据总线上, 然后经数据缓冲寄存器DR送入CPU中的有关部件进行处理。
向内存单元写入信息的操作过程如图1.5(b)所示。假定要将数据0写入内存中地址大 90H的单元,其操作过程如下:
(1) CPU把要写入单元的地址信息90H经地址寄存器AR送到地址总线上。
第1题微型计算机系统导论
(2)待写入的数抑0000000B经数据缓冲寄存器DR放到数据总线上.
(3) CPU发出“写”控制信号,在该信号的作用下将数据0写入90H单元。此时,90H 单元中原有的内容10111010B就会被0000000B所桥代,
3.内存的分类
按工作方式,内存可分为两大类,随机读写存储器RAM(Random Access Memory)和只 读存储器 ROM(Read Only Memory),
随机读写存储器可被CPU随机地读写,它用于存放将要被CPU执行的用户程序、数据 以及部分系统程序。断电后,其中存放的所有信息将丢失
只读存储器中的信息只能被CPU读取,而不能由CPU任意地写入。断电后,其中的信 息不会丢失。只读存储器用于存放永久性的程序和数据,如系统引导程序、监控程序、操 作系统中的基本输入/输出管理程序(BIOS)等。
1.3.4 I/O接口和输入输出设备
IO接口是微型计算机与输入/输出设备之间信息交换的桥梁,
IO设备是微型计算机系统的重要组成部分。程序、数据及现场信息要通过输入设备输 入给计算机。计算机的处理结果要通过输出设备输出,以便用户使用。常用的输入设备有 键盘、鼠标、数字化仪、扫描仪、AD转换器等。常用的输出设备有显示器、打印机、绘 图仪、D/A转换器等。
外设的种类很多,有机械式、电子式、机电式、光电式等。一般来说,与CPU相比 外设的工作速度较低。外设处理的信息有数字量、模拟量、开关量等,而计算机只能处理 数字量。另外,外设与微型计算机工作的逻辑时序也可能不一致。由于上述原因,微型机 与外设之间的连接及信息的交换不能直接进行,而需要设计一个I/O接口作为微型机与外设 之间的桥梁。IO接口也称为IO适配器,不同的外设必须通过不同的I/O接口才能与微机 相连。所以,IO接口是微型计算机应用系统不可缺少的重要组成部件。任何一个微机应用 系统的研制和开发,实际上都是1/O接口的研制和开发。因此,I/O接口技术是“微型计算 机原理”课程要重点讨论的内容之一,这将在第7和第8两章作详细介绍。
1.4 微型计算机软件系统
所谓软件,就是为了管理、维护计算机以及为完成用户的某种特定任务而编写的各种 程序的总和。计算机的工作就是运行程序,通过逐条地从存储器中取出程序中的指令并执 行指令规定的操作而实现某种特定的功能,因此,软件是微型计算机系统不可缺少的组成 部分。微型计算机的软件包括系统软件和用户(应用)软件。
1.4.1 系统软件
系统软件是指不需要用户干预的,为其他程序的开发、调试以及运行等建立一个良好 环境的程序,主要包括操作系统OS(Operating System)和系统应用程序。
1.4.2 用户(应用)软件
用户(应用)软件是和系统软件相对应的,是用户为解决各种实际问题,利用计算机以及 它所提供的各种系统软件,编制解决各种实际问题的程序,如数据库管理系统、办公自动化软件等。可用来编写用户软件的语言有机器语言、汇编语言和高级语言等。
1.5 微型计算机的工作过程
在对微型计算机的基本组成有了基本了解之后,本节通过在简化的模型机(8位机)上运行一个简单的程序来说明微型计算机的工作过程。
表1.1为在该模型机上完成“6+5”操作所需的机器语言程序和汇编语言程序,假设该机器语言程序从内存中地址为0000H的单元开始存放。机器语言程序是计算机能够理解和直接执行的程序,其指令是用二进制代码表示和存储的。汇编语言程序是用助记符语言表示的程序,计算机不能直接“识别”,需要经过“汇编程序”把它转换为机器语言程序后才能执行。机器语言指令和汇编语言指令是一一对应的,都是面向机器的,不 同的机器有着自己独有的机器语言指令系统和汇编语言指令系统。高级语言是不依赖于具体机型只面向过程的程序设计语言,由它所编写的高级语言程序,需经过编译程序或解释 程序的编译或解释生成机器语言程序后才能执行。由此可见,不论程序是用什么语言编写的,都必须首先将其转换为计算机能直接识别和执行的机器语言程序,然后才能由CPU逐条读取并执行。
表1.1完成“6+5”操作所需的机器语言程序和汇编语言程序
内存单元地址 | 机器语言程序 | 汇编语言程序 | 指令功能说明 |
0000H 0001H | 10110001 00000110 | MOV A,06H | 双字节指令。将数字6送累加器A |
0002H 0003H | 00001000 00000101 | ADD A,05H | 双字节指令。将数字5与累加器A中的内容相加,结果存放在累加器A中 |
0004H | 1111110 | HLT | 停机指令 |
微机的工作过程就是不断地从内存中取出指令并执行指令的过程。当开始运行程序时,首先应把第一条指令所在存储单元的地址赋予程序计数器PC(Program Counter),然后机器 就进入取指阶段。在取指阶段,CPU从内存中读出的内容必为指令,于是,数据缓冲寄存 器的内容将被送至指令寄存器IR,然后由指令译码器对IR中指令的操作码字段进行译码, 并发出执行该指令所需要的各种微操作控制信号。取指阶段结束后,机器就进入执行指令 阶段,这时CPU便执行指令所规定的具体操作。当一条指令执行完毕后,即转入下一条指 令的取指阶段。这样周而复始地循环,直到遇到暂停指令或程序结束为止。
对于所有的机器指令而言,取指阶段都是由一系列相同的操作组成的,所用的时间都 是相同的。而执行指令阶段由不同的事件顺序组成,它取决于被执行指令的类型,因此, 不同指令间执行阶段的时间存在很大差异。
需要说明的是,指令通常由操作码(Operation Code)和操作数(Operand)两部分组成。操 作码表示该指令完成的操作,而操作数表示参加操作的数本身或操作数所在的地址。指令 根据其所含内容的不同而有单字节指令、双字节指令以及多字节指令等,因此,计算机在执行一条指令时,就可能要处理一到名个不第字节数目的代码信息,包括操作码、操作数或操作数的地址。
假定完成“6+5”操作所需的机器语言程序(如表1.1所示)已由输入设备存放到内存
如图1.6所示。下面进一步说明微机内部执行该程序的具体操作过程。
开始执行程序时,首先将第一条指令的首地址0000H送程序计数器PC,然后就进入第 条指令的取指阶段,其操作过程如图1.6所示。下面对图示操作过程进行详细说明。
①把PC内容00H送地址寄存器AR。
②PC内容送入AR后,PC自动加1,即由0000H变为0001H,以使PC指向下一个要读取的内存单元。注意,此时AR的内容并没有变化。
③把地址寄存器AR的内容0000H放在地址总线上,并送至存储器系统的地址译码电 路(图中未画出),经地址译码选中相应的0000H单元:
④CPU发出存储器读命令。
⑤在读命令的控制下,把选中的000H单元的内容即第一条指令的操作码B1H读到数据总线DB上。
⑥把读出的内容B1H经数据总线送到数据缓冲寄存器DR。
⑦指令译码。因为取出的是指令的操作码,故数据缓冲寄存器DR中的内容被送到找 令寄存器IR,然后再送到指令译码器ID,经过译码,CPU“识别”出这个操作码代表的持 令,于是经控制器发出执行该指令所需要的各种控制命令。
接着进入第一条指令的执行阶段。经过对操作码B1H的译码,CPU知道这是一条把了 单元中的操作数送累加器A的双字节指令,所以,执行该指令的操作就是从下一个存 所示。下面对图示执行过程进行详细说明。 单元中取出指令第二个字节中的操作数06H,并送入累加器A。该指今的执行过程如图1.7所示。下面对图示执行过程进行详细说明。
①把PC内容01H送地址寄存器AR
②PC内容送入AR后,PC自动加1,即由0001H变为0002H。注意,此时AR的内 容0001H并没有变化
③把地址寄存器AR的内容0001H放到地址总线上,并送至存储器系统的地址译码电 路,经地址译码选中相应的0001H单元。
④CPU发出存储器读命令。
⑤在读命令的控制下,把选中的0001H单元的内容06H放到数据总线DB上。
⑥把读出的内容06H经数据总线送到数据缓冲寄存器DR。
⑦数据缓冲寄存器DR的内容经内部数据总线送到累加器A。于是,第一条指令执行 完毕,操作数06H被送到累加器A中。
此时,程序计数器PC的值为0002H,指向第二条指令在存储器中的首地址,计算机再 次重复取指令和执行指令的过程,完成第二条指令的执行。这样周而复始地循环,直到遇 到暂停指令为止。限于篇幅,这里不再赘述。