




已阅读5页,还剩130页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第1章 基础知识1.1 概述1946年,世界上第一台计算机ENIAC在美国问世以来,计算机技术的发展日新月异,在五十多年的历史中,先后经历了电子管计算机、晶体管计算机、集成电路计算机,到大规模、超大规模集成电路计算机这样四代的更替。目前已有了第五代“非冯诺依曼”计算机和第六代“神经”计算机的研制计划。所谓“非冯诺依曼”计算机,是将现有的计算机系统结构进行改革,把电脑仿真为人脑的结构。每个人的脑体只有900克左右,但它能存储和处理及其大量的信息,并具有分析和综合的能力,这就是人的智能。计算机研究有一个分支,叫人工智能,就是所谓第五代的人工智能计算机。生物大脑神经网络可看成一个大规模并行处理的、紧密耦合的、能自行重组的计算机网络。神经网络使人能有效地组织和处理信息,对神经网络研究,并从大脑工作的模型中抽取计算机设计的模型,这就是所谓第六代的神经网络计算机。计算机按其性能、价格、体积、规模不同可分为巨型机、大型机、中型机、小型机、微型机和单片机六类。其中微型计算机诞生于20世纪70年代。由于其体积小、价格低,在各行各业的得到了广泛的应用。微型计算机的发展历史是和大规模集成电路的发展密不可分的。1963年、1964年研制出了小规模集成电路SSI(Small Scale Integration)。到60年代后期,在一个几平方毫米大的硅片上,已可集成数千个晶体管,这就出现了大规模集成电路LSI(Large Scale Integration),为微型计算机的核心部件微处理器的生产打下了基础。现代最新型的集成电路已可在单个芯片上集成上千万个晶体管,线宽小于0.13m,工作频率已超过2GHz。到目前为止,微型计算机的核心部件微处理器(说明)的发展过程大致可分为六代(参见P.4表1-1):1.第一代4位或低档8位微处理器(说明“位”的概念)其发展大约从1971年到1973年。1971年美国Intel公司研制成功世界上第一个微处理器Intel4004,并于次年推出低档8位微处理器Intel8008。第一代微处理器指令系统较简单,运算能力较弱,速度也较慢,执行一条指令需1020S,即0.05MIPS(million instruction per second),软件主要用机器语言(说明)和汇编语言(说明),它主要用于计算器及各种家用电器上。2.第二代高档8位微处理器1973年至1978年,各公司相继推出了第二代高档8位微处理器。1973年,美国Intel公司率先推出了Intel8080,这是一个划时代的产品,它是第一个真正实用于微型计算机的微处理器。它的存储器寻址空间(说明)增加到64K字节,并扩充了指令集,指令执行速度达0.5MIPS。软件方面,除使用汇编语言外,还可使用BASIC、FORTRAN等高级语言,后期产品,如以8085A、Z80及MC6502等CPU为核心的具有磁盘和各种外设的微型计算机,还可用简单的操作系统,如CP/M(Control Program/Monitor)。这个时期推出的微处理器除Intel公司的产品(8080、8085)外,还有Zilog公司的Z80及Motorola公司的M6800等。3. 第三代16位微处理器1977年前后,超大规模集成电路(VLSI)研制成功,在一块芯片上可集成上万个晶体管,为研制16位微机创造了条件。1978年,Intel公司率先推出8086,为与原8位机兼容,又同时推出了准16位的微处理器8088。它的内部结构是16位,但外部数据总线是8位,其指令系统与8086完全兼容。以8088芯片为核心的IBMPC及PC/XT等准16位微型计算机很快占领了市场。在此同时,Zilog及Motorola公司也相继推出了同一级别的产品Z8000及MC68000等。16位微处理器比8位微处理器集成度提高了一个数量级,功能大大增强。主要表现在以下各个方面:数据总线的位数由8位增加到16位,大幅度提高数据处理能力(举例说明)。地址总线由16位增加到20位,扩大了寻址范围。时钟频率达540MHz,基本指令执行时间约0.15S。系统运算速度大大提高,同时内部结构也作了改进。采用“流水线”结构(简单说明),处理速度明显加快。另外内部通用寄存器增多,减少对存储器访问(说明),且大多数通用寄存器都可作累加器使用。扩充了指令系统,指令功能大大加强,寻址方式(说明)也较为丰富。由于指令系统指令数量多,复杂程度高,故这类计算机称为复杂指令系统计算机CISC(Complex Instruction Set Computer).可处理多种数据类型。如二进制位、压缩BCD码、非压缩BCD码、字节、字、双字、字串等(说明)。中断(说明)功能增强。具有构成多微处理器系统能力。配有较强的系统软件。1982年,Intel公司又推出16位高级微处理器80286,它具有多任务系统所必需的任务转换功能。同年Motorola公司也推出了同类型的MC68010。这两种微处理器的数据总线虽仍是16位的,但地址总线增加到24位,使存储器直接寻址能力达到16MB,在20世纪80年代中、后期及90年代初期,80286成为个人计算机的主流CPU。4.第四代32位高档微处理器1985年,Intel公司推出第四代微处理器80386,它是一种与8086向上兼容的超级微处理器,具有32位数据线,32位地址线,存储器直接寻址能力达4GB,其执行速度达34MIPS。同时推出的还有Motorola公司的MC68020等产品。32位微处理器无论从结构、功能、应用范围等各个方面看,可以说是小型机的微型化,已接近同时期小型机的水平。随着大规模集成电路工艺水平的进一步提高,1989年,Intel公司又推出了性能更高的32位微处理器80486,它在芯片上集成120万个晶体管,是80386的4倍。80486时在微处理器80386的基础上集成数字协处理器80387及8KB容量的高速缓冲存储器而构成的。它采用了RISC(Reduction Instruction Set Computer精简指令系统计算机)技术,与RAM进行高速数据交换的突发总线等先进技术。这些新技术的采用,使80486在同等时钟频率下,处理速度要比80386快2到4倍。同期推出的产品还有Motorola公司的MC68030及其后继产品MC68040等。5. 第五代32位高档微处理器1993年,Intel公司又推出了新的32位微处理器Pentium(奔腾),它集成了330万个晶体管,数据线64位,地址线36位,工作频率为60/66MHz, 处理速度达110MIPS。1994年又推出了第二代Pentium(以P54C代称),工艺更先进,工作频率达90/100 MHz。在体系结构上,Pentium在内核中采用更先进的RISC技术,它汇集了CISC和RISC技术的优点。同时采用超标量结构,拥有两条“流水线”,使之每个时钟周期内最多可执行两条指令。同时内置高性能的浮点运算部件及两个8K字节的超高速的缓冲存储器,使整个微处理器的性能大大提高。同时推出第五代微处理器的还有IBM、Apple和Motorola三家联盟的PowerPC及AMD公司的K5等产品。6.第六代Pentium微处理器1996年,Intel公司推出了Pentium Pro,该微处理器采用了0.35m的工艺,时钟频率为200MHz,运算速度达200MIPS。1998年到2001年,Intel公司又先后推出了Pentium Pro的改进型产品Pentium和Pentium。CPU的集成度已高达1千万个晶体管,时钟频率达1GHz以上,其他公司类似产品还有AMD公司的K7等产品。近年来,市场上已推出Pentium系列,其CPU集成度已达2千5百万个晶体管,工作频率达到2GHz。1.2 计算机中的数制日常生活中,人们惯于用十进制来计数,但计算机只能识别由“0”和“1”构成的二进制代码(说明为什么),而用二进制表示的数又显得冗长,为阅读和书写方便,往往采用十六进制数。为此,首先要掌握这三种数制及其之间的转换关系。1.2.1 常用计数制1.十进制数1)十进制数中有09共十个数字符号。2)逢10进1(10为基数)。3)各位数的“权”为10i。例:(3256.87)10 = 3103210251016100810-1710-2=3256.87即:(D)10 = Dn-110n-1Dn-210n-2D1101D0100D-110-1D-m10-m=式中n表示小数点左边的位数(自0开始),m表示小数点右边的位数(自1开始)。2.二进制数1)二进制数中只有0、1两个数字符号。2)逢2进1 (2为基数)。3)各位数的“权”为2i。例:(1010.11)2 = 12302212102012-112-2 = 10.75即:(B)2 = Bn-12n-1Bn-22n-2B121B020B-12-1B-m2-m= 3.十六进制数1)十六进制数共有十六个数字符号09及AF。2)逢16进1。3)各位数的“权”为16i.例:(2AE.4)16 = 21621016114160416-1 = 586.25即:(H)10 = Hn-116n-1Hn-216n-2H1161H0160H-116-1H-m16-m= 4.其他进制数(略)需要指出的是,除了用基数作下标来表示数的进制外,还可再数的后面加上字母B(Binary)、H(Hexadecimal)、D(Decimal)来分别表示二进制数、十六进制数和十进制数,而十进制数后面的D往往可以省略。1.2.2各种数制之间的转换由于人们习惯使用十进制数,计算机只能识别二进制数,而人们编程又多采用十六进制数,因此必然会产生不同进位制之间的转换问题。1.非十进制数转换为十进制数按“权”展开,例见P7例1-5。2.十进制数转换为非十进制数(1)十进制数转换为二进制数整数部分与小数部分分别转换。整数部分:“除2取余”。小数部分:“乘2取整”。例:将十进制数112.25转换为二进制数。整数部分:2 1122 56 02 28 02 14 02 7 02 3 12 1 10 1小数部分:0.25 20.5 00.5 21.0 1从而得:(112.25)10 = (1110000.01)2或写作:112.25 = 1110000.01B(2)十进制数转换为十六进制数同样整数部分与小数部分分别转换。整数部分:“除16取余”。小数部分:“乘16取整”。例:将十进制数301.6875转换为十六进制数。整数部分:16 30116 18 D16 1 20 1小数部分:0.6875 164.1250 6.875 11.0000 B从而得到(301.6875)10 = (12D.B)16或写作:301.6875 = 12D.BH需要指出的是,如要将十进制数转换为二进制数,为避免除2次数过多出现差错,往往先将之变为十六进制数,后再变为二进制数,而后者的转换是非常方便的。3.二进制数与十六进制数之间的转换(1)二进制数转换为十六进制数“四位一撇”法:例:将二进制数110100110.101101B转换为十六进制数1,1010,0110.1011,01 = 1A6.B4H(注意:首尾要补零)(2)十六进制数转换为二进制数“以四代一”法:例:将十六进制数2A8F.6DH转换为二进制数2A8F.6DH = 10,1010,1000,1111.0110,1101B1.3 无符号二进制数的算术运算和逻辑运算1.3.1 二进制数的算术运算(略)1.3.2 无符号数的表示范围1.无符号二进制数的表示范围8位二进制数的表示范围为OOHFFH(0255),16位二进制数的表示范围为0000HFFFFH(065535),一个n位的无符号数,它可表示数的范围为02n-1。如运算结果超出数的表示范围,将产生溢出,结果将出错。例见P.11例1-13。2.无符号二进制数的溢出判断两个无符号数相加(或相减),如最高位有进位(或错位),则产生溢出。这在计算机运算中很容易以C标志来进行判断(以后展开讲)。1.3.3 二进制数的逻辑运算逻辑运算包括“与”、“或”、“非”及“异或”四种运算,与算术运算不同的是它对二进制数按位进行操作,因之不存在进位(或借位)问题。1.“与”运算“与”运算的规则为“见0为0,见1不变”。例见P.12例1-14。2.“或”运算“或”运算的规则为“见0不变,见1为1,”。例见P.12例1-15。3.“非”运算“非”运算的规则为按位取反。例见P.12例1-16。4.“异或”运算“异或”运算的规则为“同则为0,异则为1”。 例见P.12例1-17。1.3.4 基本逻辑门及常用逻辑部件(略)1.4 带符号二进制数的表示及运算计算机只能识别“0”和“1”这两个代码,因之,在计算机中,数的正负号也只能由“0”和“1”来表示。通常规定,一个有符号数的最高位代表符号,该位为0代表正,该位为1代表负。习惯上把符号数值化了的数,称为机器数,而把其原来的数值称为真值。1.4.1 带符号数的表示方法在计算机中,带符号的数有三种表示方法,即原码、补码和反码。不管是哪一种表示方法,其最高位均为符号位,用“0”表示正数,用“1”表示负数。下面以8位二进制数位例加以说明。1.原码一个带符号数的原码记作X原。在原码表示法中,数值部分为该数的绝对值,以符号位表示该数的正负。例见P.16例1-19。需要指出的是在原码表示法中,0的原码有两种不同的表示形式,即0和0。0原 = 000000000原 = 10000000原码表示法的优点是简单,易于理解。它的缺点是不便于运算(举例说明)。2.反码一个带符号数的反码记作X反。在反码表示法中,对于正数,数值部分即为该数的原值;而对于负数,其数值部分为该数的绝对值各位取反。同样,以符号位表示该数的正负。例见P.17例1-20。在反码表示法中,0的反码也有两种表示形式:0反 = 000000000反 = 11111111由上可知,由于在原码和反码表示法中,数值0的表示法不是唯一的,必然对运算带来不利(缺乏唯一性)。为此,引入补码的概念。3.补码一个带符号数的补码记作X补。在补码表示法中,对于正数,其数值部分仍为该数的原值;对于负数,其数值部分为该数的绝对值各位取反再加1。也仍以符号位表示该数的正负。(即X补 = X反1)。例见P.18例1-21。特别需要指出的是,与原码和反码不同,在补码表示法中,0的表示法是唯一的。0补 = 0原 = 0反 = 000000000补 = 0反1 = 111111111 = 000000000补 = 0补 = 00000000另需指出的是,对于机器数,10000000在补码表示法中定义为128(同样,对于16位的机器数1000000000000000,在补码表示法中定义为32768)。1.4.2 真值与补码之间的转换要把一个用补码表示的二进制数转换为带符号的二进制数,可分两种情况来处理。如该数为正数,则除符号位外,其余7位即是此数的二进制数值,转换很为简单。例:已知X补 = 00101110,求X的真值。解:X = 00101110 = 46如该数为负数,则可将该数补码数值部分再求一次补,即可得到该数绝对值。例:已知X补 = 11010010,求X的真值。=1 = 00101110X = 46为什么要引进补码的概念呢?这是因为引进补码后,在计算机运算时,可将减法运算演变为加法运算。例:求Y = 9958 = 99(58)= 4199补 = 0110001158补 = 11000110 00111010(58的二进制代码)求反:11000101求补:1100011001100011110001101 00101001 即为41由于计算机中求反很易实现,故上述运算过程在计算机上较简单。而众所周知,对于二进制数的算术运算,乘法运算可转换为左移和加法运算,而除法运算可转换为右移和减法运算。由此得到,在计算机中,加、减、乘、除,均可由加法和移位两种操作得以实现,这就是引入补码的最终目的!1.4.3 补码的运算补码运算具有如下规律:1)XY补 = X补Y补2)XY补 = X补Y补3)XY补 = X补Y补这里Y补称为对补码数Y补的变补。变补规则为对Y补的各位(包括字符位)按位取反加1,结果即为Y补(当然也可直接对Y求补码,结果相同)。例见P.19例1-24及例1-25。需要强调的是上述三个公式的成立是有条件的。其条件是:式中X、Y、Y、XY及XY都必须在补码的表示范围内,倘若超出补码的表示范围,等式便不再成立,详见下节。1.4.4 带符号数运算时的溢出问题1.带符号数的表示范围(1)8位二进制数,原码、反码和补码的表示范围原码 1111111101111111(127127)反码 1000000001111111(127127)补码 1000000001111111(128127)(数的状态和数的个数对应)当运算结果超出上述范围时就会产生溢出。(2)16位二进制数,原码、反码和补码的表示范围原码 FFFFH7FFFH(3276732767)反码 8000H7FFFH(3276732767)补码 8000H7FFFH(3276832767)同样,当运算结果超出上述范围时就会产生溢出。2.带符号数运算时的溢出判断带符号数运算时的溢出判断的规则是:在运算中,当最高位和次高位同有进位或同无进位,则无溢出。如两者一个有进位,一个无进位,则有溢出。例见P.21例1-26、例1-27及P22例1-28、1-29。1.5 二进制编码计算机除处理数值领域的问题外,还被大量用于处理非数值领域的问题,这要求计算机能识别文字、字符和各种符号(例见P.22)。而所有字符符号及十进制数都必须转换为二进制代码才能为计算机所识别。1.二进制编码的十进制数(BCD码数)用二进制编码来表示十进制简称BCD码(Binary Coded Decimal)。BCD码的编码方式有多种,最常用的是8421码。(1)8421码BCD码与二进制码的对应关系如P.23表1-9所示。其特点为:用4位二进制数表示1位十进制数。BCD码是十进制数,逢10进1。(2)BCD码与十进制数、二进制数的转换。十进制数用BCD码表示十分简单,只要对十进制数每位按表1-9进行转换即可。例见P.23例1-30。显而易见,如要将BCD码转换为其对应的十进制数也十分简单,只要将每4位二进制代码变成其对应的十进制数即可。BCD码与二进制数之间的变化要稍麻烦些,一般要以十进制数为桥梁进行转换。例见P23例1-31及例1-32。为避免与二进制数混淆,BCD码书写时通常将每位BCD码(4位二进制码)写成一组,中间留一空格,且加下标BCD。(3)计算机中BCD码的存储方式在存储单元为8位的情况下,BCD码有两种表示方法。一种是压缩BCD码表示方法,例10010010表示十进制数92(即一个字节表示2个十进制数),另一种表示方法为非压缩BCD码(也称扩展BCD码),同样是十进制数92,用非压缩BCD码就表示为:0000100100000010。2.字符的编码为能让计算机识别,各种字符也必须用特定的二进制代码编写,目前在计算机中普遍采用的是ASCII码(American Standard Code for Information Interchange美国标准信息交换码)。ASCII字符编码表见附录A,它是用7位二进制代码来表示128个字符和符号。一般规定一个ASCII码存放在字节的低7位,字节的最高位在通信中常用作奇偶校验位(简单说明什么是奇偶校验)。1.6 常用术语解释1.6.1 数据单位1.位(bit)、兆位(Mb)、千兆位(Gb)和兆兆位(Tb)位是计算机处理的最小数据单位,它只有“0”、“1”两种状态。Bit通常缩写为b。Mb(Megabit)代表10241024位,也即220位。Gb(Gigabit)代表1024Mb,也即230位。Tb(Terabit)代表1024Gb,也即240位。2.字节(byte)、KB、MB、GB和TB1个字节包含8个二进制位,Byte通常缩写为B。字节是计算机中存储容量的基本单位。在计算机中,1K为1024,即210,所以1KB = 1024Byte。以此类推,1MB = 1024KB,1GB = 1024MB,1TB = 1024GB。3.字(word)字在不同场合有不同意义。它是数据总线的宽度。一个字代表两个字节,在8086系列的机型中为16位。1.6.2 计算机通信速率单位(略,待到有关章节再讲)1.6.3 兼容性系统兼容:若在一个系统上开发的硬件和软件能在另一个系统上成功运行,则称两个系统兼容。向上兼容:若兼容性是旧系统到新系统的单向发展,则称为向上兼容(举例说明)。第2章 微型计算机基础2.1 微型计算机基本结构微型计算机是计算机的一种。它体积小,重量轻,一般供个人使用。所以通常称个人计算机(Personal Computer PC)。微型计算机由硬件系统和软件系统两大部分组成,称之为微型计算机系统,其组成如P.27图2-1所示(作解释)。2.2.1 微型计算机的概念结构各种微型计算机从概念结构上来说都由运算器、控制器、存储器和输入输出设备等部分组成。这些组成部分往往合并和分解为若干个功能模块,分别由不同的部件予以实现。从大的功能部件来看,微型计算机的硬件主要由CPU、存储器、I/O接口和I/O设备组成,各部分之间通过数据总线(data bus DB)、地址总线(address bus AB)、控制总线(control bus CB)连接在一起。DB、AB、CB这三总线通常为系统总线,它是计算机各部件间传送信息的公共通道。这种总线结构形式的优点是设计简单、灵活性强、易于扩展、便于故障诊断和维修。故所有微型计算机系统都采用了总线结构形式。P.28图2-2为微型计算机的结构框图。1.硬件系统1)微处理器(或称中央处理单元,CPU)CPU是微型计算机的核心部件,是整个系统的运算和控制中心。微机性能、档次不同主要取决于CPU。各种CPU均有其特定的指令系统。然而无论哪种CPU,其内部组成总是大同小异的,一般都有运算器、控制器和寄存器三个主要部分。其典型结构如P.29图2-3所示,下面分别对各部分加以说明:运算器(又称算术逻辑单元Arithmetic and Logic Unit ALU):它是以加法器为基础,辅之以移位寄存器及相应的控制逻辑组合而成的电路,在控制信号作用下,完成各种算术运算和逻辑运算。控制器:一般由指令寄存器(Instruction Register IR)和指令译码器(Instruction Decoder ID)和控制电路组成,是CPU的指挥控制中心。它从存储器中依次取出程序的各条指令,并根据指令要求向微机各部分发出相应控制信号,使各部分协调工作。寄存器组:它是CPU内部的若干个存储单元。分为专用寄存器和通用寄存器两种。由于有这些寄存器,CPU在运算时出现中间结果,可暂放在寄存器中,以避免对存储器的频繁访问,而缩短指令执行时间,给编程带来方便。2)存储器(Memory)这里所指的存储器是指系统的内存或称主存,是微机的存储和记忆部件,其用途是存放数据和程序。微机的内存一般都由半导体存储器构成。(1)内存单元的地址和内容内存由许多单元组成,每个单元存放一组二进制数(例8位二进制数),称为一个字节。一台微机中内存单元的总量称为该机的内存容量,单位为字节。为区别个不同的内存单元,往往要对内存单元进行编址。如8086CPU的内存编址从00000H开始,一直到FFFFFH为止,共220个存储单元。每个存储单元有唯一的地址。CPU如要访问其内存单元,可通过指定该内存地址予以实现。内存单元中存放的信息称为内存单元的内容,它与内存地址在形式上都是一个二进制数,但在本质是两个完全不同的概念。详见P.29图2-4说明。(2)内存的操作CPU对内存单元的操作有读、写两种。P.30图2-5的(a)、(b)两图分别描述了CPU存储器的读、写操作过程(作解释)。需要指出的是读操作不会改变被读存储器的内容。这一特点称为非破坏性读出(no destructive read out)。反之,写操作将破坏该存储器的内容。上述类型存储器即可读出也可写入信息,因此这种存储器称为读写存储器,也称为随机存取存储器。(3)内存的分类按工作方式不同,内存可分为两大类,即随机存取存储器(random access memory RAM)和只读存储器(read only memory ROM)。ROM中的信息只能被CPU读取,而不能由CPU任意写入。但ROM中的信息不象RAM那样在机子断电后会丢失,所以ROM往往被用来存放程序,或各种常数及表格等。ROM内容的写入要使用专用设备。有关存储器的详细内容将在第五章中具体介绍。3)输入输出设备和输入输出接口。输入输出设备(简称I/O设备或外设)是微型计算机重要的组成部分。常用的输入设备有键盘、鼠标、扫描仪等。常用的输出设备有显示器、打印机、绘图仪等。而磁带、磁盘等则既是输入设备,又是输出设备。由于I/O设备种类繁多,结构原理各不相同。与CPU相比,外设的速度较低,且数据格式和逻辑电平一般也与计算机不能直接兼容。因此,一般来说,微机与I/O设备之间的连接与信息交换不能直接进行,而必须通过一个中间部件作桥梁,该部件称作输入输出接口(简称I/O接口),有时又称为I/O适配器(I/O adapter)。4)总线(bus)总线是由一组导线和相关电路组成的,是各种公共信号线的集合,用作微机各部分间转送信息所共同使用的“高速信息公路”。在CPU、存储器和I/O接口之间传输信息的总线称为“系统总线”,它包括数据总线、地址总线和控制总线。(1)数据总线(data bus DB)数据总线用来传送数据信息,是双向总线。CPU可通过DB从内存或I/O设备输入数据,也可通过DB向内存或I/O设备输出数据。(2)地址总线(address bus AB)地址总线用于传送CPU发出的地址信息,是单向总线。传送地址信息的目的为指明与CPU交换信息的内存或I/O设备的地址。(3)控制总线(control bus CB)控制总线用来传送控制信号、时序信息和状态信息等。其中有的是CPU向内存或外设发出信息,也有的是内存或外设向CPU发出的消息。因此,CB中每根线的方向是单向的,但CB作为一个整体来讲是双向的。2.软件系统软件包括系统软件和应用软件两大类。应用软件是用户解决各类实际问题而编制的程序(举例)。系统软件包括操作系统(OS)和系统实用程序。操作系统用于管理计算机的硬件与软件资源,进行任务调度,提供文件管理系统等,还包括各种外设的驱动程序。系统实用程序包括各种高级语言的翻译/编译程序、汇编程序、数据库系统、文本编辑程序、调试程序,以及许多系统工具程序等。计算机中程序设计语言分为机器语言、汇编语言和高级语言三种。机器语言程序是计算机能识别和直接执行的二进制代码形式的程序。汇编语言程序是用助记符语言表示的程序,计算机要通过“汇编程序”的翻译才能识别。而高级语言是不依赖于具体机型的程序设计语言(举例),由高级语言编写的程序需经过编译程序和解释程序的翻译才能执行。文本编辑程序是供输入或修改文本用的程序。另外在编写程序时,往往还需要几种系统程序,如系统程序库、连接程序和装入程序等。一般操作系统都有一个通用的系统程序库,程序库中的子程序可供调用(以后要讲到)。把待执行的程序与程序库其他已翻译好的程序连接起来成为一个整体的准备程序称为连接程序。另一种准备程序是把执行的程序加载到内存中,称为装入程序。上面简单地介绍了计算机的硬件和软件,需要强调的是硬件系统和软件系统是相辅相成的,共同构成微型计算机系统,两者是缺一不可的。现代计算机软硬件发展的趋势是两者统一融合,相互促进,使计算机技术不断发展。2.1.2 微型计算机的工作过程微型计算机究竟是如何进行工作的,这是学习微机原理必须探讨的一个重要问题。1.存储程序计算机目前,一般的微型计算机都为存储程序计算机。所谓“存储程序”,是指把处理问题的步骤和所需的数据事先送入存储器保存。运行时,由计算机的控制部件逐条取出并执行,从而使计算机能自动连续地进行处理。“存储程序”的设计思想是计算机发展史上的一个里程碑。(1)程序与指令所谓指令是控制计算机进行各种操作和运算的命令。所谓程序是计算机为解决某一具体问题所编制的一系列指令的有序集合(见P.33图2-6)。机器指令必须满足两个条件:一是指令的形式必须是计算机能够理解的(由此,指令也必须用二进制编码形式表示)。二是指令规定的操作必须是计算机能执行的(每条指令都有相应的电子线路来实现)。每台计算机的指令都有自己的格式和具体含义,但他们都有一个共同点,即指令必须指明要进行何种操作(操作码)以及操作的对象(操作数)。每台计算机都有其特定的指令系统,指令系统的优势决定了计算机的性能。一台计算机的指令种类是有限的,但在人的精心设计下,可实现信息处理的任务可以无限多,计算机能忠实地按照程序,有条不紊地执行规定的操作,完成预定的任务。(2)存储程序工作原理多年来,尽管计算机的体系结构发生了重大变化,性能不断提高,但存储程序控制始终是现代计算机的结构基础。“存储程序”是指把程序和数据送到具有记忆功能的存储器中保存起来,计算机工作时,只要给出程序中第一条指令的地址,控制器便根据存储器中的指令周而复始地取出指令、分析指令、执行指令,直至指令全部执行完毕为止。2.微型计算机的工作过程微型计算机的工作过程实际上就是逐条执行指令序列的过程。也就是不断地取指令和执行指令的过程,见P.34图2-7(展开解释)指令通常包括操作码(operation code)和操作数(operand)两部分。操作码表明计算机进行何种操作,而操作数指明操作对象。它可能给出操作的数的本身或其所在的地址,指令根据操作或其操作对象不同而有单字节、双字节或三字节乃至四字节之分,因此,在执行一条指令时,可能要处理1-4个不等字节数的信息代码。3.模拟机中存储程序工作的例子以计算机完成58 =?这一个简单的任务为例,说明程序编制及微机内部执行该程序各条指令的具体操作过程(详细介绍P.36P.39四个操作示意图及执行三条指令的过程)。2.2 8088/8086微处理器本节详细介绍8086微处理器系列中的主导产品8086和8088 CPU的硬件结构。由于这两种CPU的差异很小,本节将以8086为主进行介绍(在没有特别指明时所介绍内容对两者均适用)。2.2.1 8088/8086微处理器概述8086和8088均属第三代微处理器。8088存储器和外设进行数据传输的外部数据总线宽度为8位,而8086数据总线的宽度为16位,除此而外,两者几乎无差别。8086/8088都有40个脚的外部引线,均在单一5V电源下工作。8086/8088在最小配置下仅需4个外围芯片即可构成一个小型的应用系统,如P.40图2-13所示(作解释)。8086/8088具有最小和最大两种工作模式,将在以后分别介绍。2.2.2 8088/8086的指令流水线在程序执行过程中,CPU有规律地重复以下过程:从存储器取出下一条指令;如指令需要,从存储器读取数据(操作数);执行指令;如指令需要,将结果写入存储器。在8088/8086未问世前,微处理器用串行方式完成上述过程。从8088/8086开始,CPU采用一种新的结构来完成这些工作。8088/8086将上述步骤分配给两个独立的部件,执行单元(execution unit EU)负责执行指令;而总线接口单元(bus interface unit BIU)负责取指令、取操作数和写结果。当这两个单元独立进行工作时,大多数情况下取指操作和执行指令操作可同时并行进行,从而加快了程序的运行速度。P.41图2-14将并行操作和以前的串行操作方式进行了比较。显示出流水线操作的优越性。由P.41图2-14可知,指令队列操作过程为:EU不断地从指令队列中取出指令并执行。当EU从指令队列中取走指令,指令队列出现空字节时,BIU即自动执行一次取指令周期,从内存中取出后续指令代码放入队列中(到遇到跳转指令时,BIU使指令队列复位,从新的内存地址取指),指令队列的存在使得EU和BIU并行工作,而减少了为取指而等待的时间,提高了CPU的执行效率和运行速度,同时,也减低了对存储器存取速度的要求。需要指出的是8088/8086中指令队列的个数和级数都很少,远远不能与现在各种新型的CPU(如pentium)相提并论,但它首先在微处理器中采用中流水线结构,从而使8088/8086成为CPU发展史上一个里程碑。2.2.3 8088/8086的功能结构(原2.2.3 8088外部引脚及其功能放在本节后讲)1.8088/8086的结构8088与8086的结构极为相似,都是由执行单元EU和总线接口单元BIU两大部分组成,其内部结构框图如图P.46图2-16所示。执行单元EU负责执行指令,它由算术逻辑单元(运算器)ALU、通用寄存器、标志寄存器FLAGS和EU控制电路组成。工作时,EU不断地从指令队列取出指令代码,后对其译码,产生完成指令所需要的各种控制信息。数据运算在ALU中进行,运算结果的特征保留在标志寄存器FLAGS中。总线接口单元BIU负责CPU与存储器及I/O接口之间的信息传送。它由段寄存器、指令指针寄存器、指令队列、地址加法器及总线控制逻辑组成。8088的队列长度为4字节,8086的队列长度为6个字节。当EU从指令队列中取走指令,指令队列出现空字节时,BIU就自动执行一次取指周期,从内存中取出后续指令放入队列中。当EU需要数据时,BIU据EU给出的地址,从指定的内存单元或外设中取数据供EU使用。当运算结束时,BIU将运算结果送入指定的内存单元或外设。当指令队列空时,EU就等待,直到有指令为止。若BIU正在取指时,EU发出访问总线的请求,则必须等BIU取指完毕后,该请求才能响应。当遇到跳转指令时,BIU使指令队列复位,从新的地址取指,并由EU取执行。指令队列的存在,使EU和BIU并行工作,从而提高CPU的工作效率,加快了整机的运行速度。BIU中的地址加法器用来产生20位的物理地址,由于8086/8088的寄存器都是16位的(见下说明)无法装载20位的物理地址。为解决此矛盾,8086/8088采用了将地址空间分段的方法,即将220(1MB)的地址空间分成若干个64KB的段,然后用段基址加上段内偏移地址的方法来访问地址为20位的物理存储器。具体方法如P.47图2-17所示。8086/8088规定段的起始地址最低四位总是0,即XXXXOH,这样每个段的基地址只需用16位便可表示(即XXXXOH中的XXXXH),也即段基址实际上是段起始地址的高16位,由于段基址的这一特点,因此将段基址左移4位后和段内偏移量(16位)相加,即可获得物理地址。2.8088/8086的内部寄存器8088/8086内部有14个16位寄存器。按其功能分为三大类:第一类是通用寄存器(8个),第二类是段寄存器(4个),第三类是控制寄存器(2个),具体见P.47图2-18。(1)通用寄存器通用寄存器包括数据寄存器、地址寄存器和变址寄存器。数据寄存器AX、BX、CX、DX数据寄存器一般用于存放参与运算的数据或运算的结果。每个数据寄存器都是16位寄存器,但又可将高、低8位分别作为两个独立的8位寄存器使用。其高8位记作AH、BH、CH、DH,低8位记作AL、BL、CL、DL,这种灵活的使用方法给编程带来方便,使之既可处理16位数据,也能处理8位数据。数据寄存器除作为通用寄存器使用外,还有其各自的习惯用法:AX(accumulator)为累加器。是最常用的寄存器,用于存放算术逻辑运算中的操作数。另外,所有的I/O指令都通过累加器与外设接口之间传送信息。BX(base)为基址寄存器。常用来存放访问内存时的基地址。CX(count)为计数寄存器。在循环和串操作专用做计数器。DX(data)为数据寄存器。在寄存器间接寻址的I/O指令中存放I/O端口地址。另外,在做双字长乘除法运算时,DX与AX配合,存放一个双字长数(32位),其中DX存放高16位数据,AX存放低16位数据。地址指针寄存器SP、BPSP(stack pointer)为堆栈指针寄存器。它在堆栈操作中存放栈顶偏移地址,永远指向堆栈的栈顶。BP(base pointer)为基址指针寄存器。一般也常用来存放访问内存时的基地址。但要注意BP是和SS段寄存器配对使用的(而BX通常是和DS段寄存器配对使用的)。作为通用寄存器,SP和BP也可存放数据,但更经常地用于存放内存单元的偏移地址(两者的默认段寄存器都是SS)。变址寄存器SI、DISI(source index)为源变址寄存器,DI(destination index)为目标变址寄存器,主要在变址寻址方式中作为索引指针。(2)段寄存器CS、SS、DS、ESCS(code segment)为代码段寄存器,SS(stack segment)为堆栈段寄存器,DS(data segment)为数据段寄存器,ES(extra segment)为附加数据段寄存器。段寄存器用于存放段基址,即段起始地址的高16位。(3)控制寄存器IP、FLAGSIP(instruction pointer)为指令指针寄存器,用以存放指令的偏移地址。CPU取指总以CS内容为段基址,以IP内容为段内偏移地址。当CPU取走一个指令代码后,IP内容自动加1,指向指令代码的下一个字节。用户程序不能直接访问IP。FLAGS为标志寄存器或程序状态字(program status word PSW)。它是16位寄存器,但只使用了其中9位。这9位包括6个状态标志,如P.46图2-19所示。状态标志记录了算术和逻辑运算结果的一些特征,具体如下:CF(corny flag)进位标志位。当进行加(减)法运算时,如最高位有进(借)位,则CF = 1,否则CF = 0。PF(parity flag)奇偶标志位。当算术或逻辑运算结果中,低8位中“1”的个数为偶数时,PF = 1,为奇数时,PF = 0。AF(auxiliary flag)辅助进位标志位。在加(减)法操作中,由低半字节向高半字节进位(或借位)发生时,AF = 1,否则AF = 0。该标志通常用于对BCD码算术运算的结果进行调整(详见3.3.2)。ZF(zero flag)零标志位。当运算结果为0时,ZF = 1,否则ZF = 0。SF(sign flag)符号标志位。当运算结果的最高位为1时,SF = 1,否则SF = 0。OF(overflow flag)溢出标志位。当算术运算结果超出了带符号数的范围,即产生溢出时,OF = 1,否则OF = 0。注意,8位带符号数的范围是-128+127,16位带符号数的范围是-32768+32767。需要强调的是,不同指令执行结果对状态标志位的影响是不相同的,具体将在指令系统中作介绍。控制标志位用于设置控制条件。控制标志一旦被设置后,便对其后的操作产生控制作用。具体如下:TF(trap flag)跟踪标志位(也称陷阱标志位)。当TF = 1时,使CPU处于单步执行指令的工作方式。这种方式便于对程序进行调试。每执行一条指令后,自动产生一次单步中断,从而使用户能逐条地检查程序执行的结果。IF(interrupt-enable flag)中断允许标志位。当IF = 1时,CPU能够响应外部的可屏蔽中断;当IF = 0时,则不响应外部可屏蔽中断请求。但此标志对外部非屏蔽中断请求,或内部产生的中断不起作用。8086/8088有两条指令STI和CLI专门用于设置和消除IF标志。DF(direction flag)方向标志位。DF = 1,使串操作按地址减1方式进行,而DF = 0,使串操作按地址加1方式进行。2.2.4 8088的外部引脚及其功能8088和8086 CPU都是具有40个引脚的集成电路芯片,采用双列直插式封装。P.42图2-15是8088的引脚图,8086与之基本相同。8088的许多引脚具有双重定义和功能,采用分时复用方式(解释)工作,即在不同的时刻,这些引脚上的信号是不同的。8088有最大和最小两种工作模式,通过在MN/输入引脚上加上不同的
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 纪检培训试题及答案
- 河南学校面试题及答案
- 雨中跳舞测试题及答案
- 德语模拟测试题及答案
- 2025年广东省安全员(A证)第四批(主要负责人)证考试练习题库(含答案)
- 2025年中小学生卫生知识大赛试题(附含答案)
- 2024年广西公务员考试真题及答案
- 北京育儿知识培训班课件
- 2025年继续教育公需课必修课考试题库附含参考答案
- (健康档案老年人慢性病)模拟试卷含答案
- 2023施工技术交底编制与管理标准培训
- 物业管理考核细则-
- GB/T 3683-2023橡胶软管及软管组合件油基或水基流体适用的钢丝编织增强液压型规范
- 义教课程标准(2022年版)解读·徐蓝
- GA/T 954-2011法庭科学工具痕迹中凹陷痕迹的检验规范
- DB1331T004-2022雄安新区数据安全建设导则
- 环水保工程监理细则
- DB11-T1834-2021 城市道路工程施工技术规程高清最新版
- 手工电弧焊焊接头基本形式与尺寸
- 开拓进取:零碳汽车的材料脱碳之路
- (完整版)自我护理能力量表ESCA
评论
0/150
提交评论