1、第第1章数字设备中信息的表示方法章数字设备中信息的表示方法本章要点:掌握微型计算机的特点和用途;掌握数字设备中数的表示方法和各种进制间的转换方法;掌握原、补、反码的概念;初步掌握数字设备中常用的编码。计算机原理王书增编写1.1微型计算机概述微型计算机概述只是做一般性的介绍,应突出应用是发展的生命。111 微型计算机的特点和发展1体积小、重量轻 2价格低廉 3可靠性高、结构灵活 4应用面广 微型机的发展:第一个微处理器是1971年美国Intel公司生产的Intel 4004。19781979年推出了16位微处理器,有代表性的3种芯片是Intel的80868088,Zilog的Z8000,和Mot
2、orola的MC 68000。人们将这些微处理器称为第一代超大规模集成电路的微处理器。1980年以后相继出现Intel 80286、Motorola 68010的16位高性能微处理器。1983年以后生产出Intel 80386和Motorola 68020。这两者都是32位的微处理器。1993年Intel推出Pentium微处理器。112 微型计算机的分类以微处理器的字长作为微型机的分类标准:1 4位微处理器2 8位微处理器3 16位微处理器4 32位微处理器 113 微型计算机的应用1科学计算2信息处理和事务管理3过程控制4仪器、仪表控制 5家用电器和民用产品控制 6计算机辅助设计计算机辅助
3、制造(CADCAM)7人工智能12数和数制数和数制121 各种数制及其表示法1十进制(Decimal)十进制数通常具有如下两个主要特点:(1)它有09 十个不同的数码,这是构成所有十进制数的基本符号。(2)它是逢十进位的。十进制数在计数过程中,当它的某位计满10时就要向它邻近高位进一。2二进制(Binary)二进制数也有如下两个主要特点:(1)它共有0和l两个数码,任何二进制数都是由这两个数码组成的。(2)二进制数的基数为2,它奉行逢二进一的进位计数原则。二进制数可以展开成幂级数形式。例如:10110.11124十023十122十121十020十12-1十12-2 124十122十121十12
4、-1十12-2 22.75式中:指数24、23、22、21、20、2-1和2-2为权,2为基数,3十六进制(Hexadecimal)十六进制数也有两个主要特点:(1)它有0、1、29、A、B、C、D、E、F等16个数码,任何一个十六进制数都是由其中的一些或全部数码构成的。(2)十六进制数的基数为16,进位计数为逢十六进一。十六进制数也可展开成幂级数形式。例如:70F.B1H7162十F160十B16-l十116-218076914 在阅读和书写不同数制的数时,如果不在每个数上外加一些辨认标记,就会混淆而无法分清。通常,标记方法有二种:一种是把数加上方括号,并在方括号右下角标注数制代号,如101
5、16、1012和10110分别表示十六进制、二进制和十进制;另一种是用英文字母标记,加在被标记数的后面,分别用B、D和H大写字母表示二进制、十进制和十六进制数,如89H为16进制数、101B为二进制数等。其中,十进制数中的D标记也可以省略。在书写十六进制数时,若最高位是字母时必须在其前面加0,以免与英文单词混淆。例如:F9H应写成0F9H。122 各种数制的相互转换1二进制和十进制数间的转换(1)二进制数转换成十进制数:只要把欲转换数按权展开后相加即可。例如:11010.0lB124十123十121十12-226.25(2)十进制数转换成二进制数:本转换过程是上述转换过程的逆过程,但十进制整数
6、和小数转换成二进制的整数和小数的方法是不相同的。十进制整数转换成二进制整数的方法有很多种,但最常用的是“除2逆取余法”。十进制小数转换成二进制小数通常采用“乘2顺取整法”。0.6879D0.1011B应当指出:任何十进制整数都可以精确转换成一个二进制整数,但任何十进制小数却不一定可以精确转换成一个二进制小数。2十六进制和十进制数间的转换(1)十六进制数转换成十进制数:方法和二进制数转换成十进制数的方法类似,即可把十六进制数按权展开后相加。例如:3FEAH3163十15162十14161十1016016362 (2)十进制数转换成十六进制数十进制整数转换成十六进制整数和十进制整数转换成二进制整数
7、类似,十进制整数转换成十六进制整数可以采用“除16逆取余法”。十进制小数转换成十六进制小数方法类似于十进制小数转换成二进制小数,常采用“乘16顺取整法”。3二进制和十六进制数的转换二进制数转换成十六进制数:可采用“四位合一位法”。十六进制转换成二进制数:这种转换方法是把十六进制数的每位分别用四位二进制数码表示,然后把它们连成一体。123 二进制数的运算二进制数的运算分为两类:一类是算术运算;对无符号数或有符号数进行加、减、乘、除运算 另一类是逻辑运算。逻辑运算包括逻辑乘、逻辑加、逻辑非和逻辑异或等 1算术运算(1)加法运算二进制加法法则为:0+0=01+0=0+1=11+1=10 (向邻近高位
8、有进位)1+1+1=11 (向邻近高位有进位)(2)减法运算二进制减法法则为:0-0=01-1=11-0=10-1=1 (向邻近高位借1当作2)(3)乘法运算二进制乘法法则为:00=010=01=011=1两个二进制数相乘与两个十进制数相乘类似,可以用乘数的每一位分别去乘被乘数,所得结果的最低位与相应乘数位对齐,最后把所有结果总加起来,便得到积,这些中间结果又称为部分积。(4)除法运算除法是乘法的逆运算。与十进制类似,二进制除法也是从被除数最高位开始,查找出够减除数的位数,并在其最高位处上商1和完成它对除数的减法运算,然后把被除数的下一位移到余数的位置上。若余数不够减除数,则上商0,并把被除数
9、的再下一位移到余数的位置上。若余数够减除数,则上商1,余数减除数。这样反复进行,直到全部被除数的各位都下移到余数位置上为止。1.2.4 逻辑运算1逻辑乘运算逻辑乘又称逻辑与,常用“”算符表示,逻辑乘运算法则为:00=010=01=011=12逻辑加运算逻辑加又称逻辑或,常用算符“”表示。逻辑加的运算规则为:00=010=01=111=13非运算逻辑非运算又称逻辑取反,常采用“”运算符表示,运算规则为:01104逻辑异或逻辑异或又称为半加,是不考虑进位的加法,常采用 算符表示。逻辑异或的运算规则为:0 0=1 1=01 0=0 1=1 1.3 有符号二进制数的表示方法及溢出问题(4学时学时)1.
10、3.1 有符号二进制数的表示方法计算机内的数分为无符号数和有符号数。计算机中,为便于识别,需将有符号数的正、负号数字化。通常的做法是用一位二进制表示符号,称为“符号位”,放在有效数字的前面,用“0”表示正,用“1”表示负。有符号的二进制数在计算机中有三种表示形式:原码、反码和补码。1原码、反码和补码的表示方法(1)原码 在数值的前面直接加一符号位的表示法称为原码表示法。(2)反码 正数的反码与原码相同;负数的反码,符号位仍为“1”,数值部分“按位取反”。(3)补码1)模的概念:把一个计量单位称之为模或模数,用M表示。2)补码的表示:在补码表示法中,正数的补码与原码相同;负数的补码则是符号位为“
11、1”,数值部分按位取反后再在末位(最低位)加1。补码在微型机中是一种重要的编码形式,请注意如下事项:采用补码后,计算机中有符号数一般采用补码表示。正数的补码即是它所表示的数的真值,而负数的补码的数值部分却不是它所表示的数的真值。采用补码进行运算,所得结果仍为补码。为了得到结果的真值,还得进行转换(还原)。转换前应先判断符号位,若符号为0,则所得结果为正数,其值与真值相同;若符号位为1,则应将它转换成原码,然后得到它的真值。与原码、反码不同,数值0的补码只有一个,即0补00000000B00H。若字长为8位,则补码所表示的范围为-128一+127;若字长为16位,则补码所表示的范围为-32768
12、一+32767。进行补码运算时,应注意所得结果不应超过上述补码所能表示数的范围,否则会产生溢出而导致错误。采用其他码制运算时同样应注意这一问题。2原码、反码和补码之间的转换 由于正数的原码、补码表示方法相同,不存在转换问题。只有负数存在转换问题。(可根据情况举例说明)1.3.2有符号数运算时的溢出问题有符号数和无符号数在表现形式上是无法分辨的,而是由程序设计者人为规定的,当然在处理上也就不同了。由于无符号数的各位均为数值,判断运算结果是否溢出,只要测试进位位即可,若为“1”表示溢出,反之结果正确。溢出是在一定字长下发生的,从理论上讲溢出是不可能发生,因为可以增加位数,实际很难做到,尤其是在单片
13、机开发中更要引起注意。如果计算机的字长为n位,n位二进制数的最高位为符号位,其余n-1位为数值位,采用补码表示法时,可表示的数X的范围是-2n-1X2n-1-1两个有符号数进行加法运算时,如果运算结果超出可表示的有符号数的范围时,就会发生溢出,使计算结果出错。很显然,溢出只能出现在两个同符号数相加或两个异符号数相减的情况下。在程序设计时,若在加减运算过程中出现结果超出有符号数所能表示的数值范围,溢出标志位OF被置1。1.4 定点数和浮点数在计算机中,用二进制表示实数的方法有两种,即定点法和浮点法。1.4.1定点法所谓定点数是指小数点的位置固定不变的,以定点法表示的数称作定点数。通常,定点表示也
14、有两种方法:方法1:规定小数点固定在最高数值位之前,机器中能表示的所有数都是小数。方法2:规定小数点固定在最低数值位之后,机器中能表示的所有数都是整数。因为实际数值很少有都是小数或都是整数的,所以定点表示法要求程序员做的一件重要工作是为要计算的问题选择“比例因子”。1.4.2 浮点法任意一个二进制数N总可以写成下面的形式:N=d2p其中:d称为尾数,是二进制纯小数,指明数的全部有效数字,前面的符号称作数符。p称为阶数,它前面的符号称作阶符。1位 m位 1位 n位 阶符阶 码数符尾 数1.5 二进制编码的十进制数1.5.1 8421 BCD码用二进制数表示十进制数,保留各位之间“逢十进一”的关系
15、,这就是二十进制编码或称BCD码(Binary Coded Decimal)。这种编码将一位十进制数用4位二进制数表示,通常以8421为权进行编制。十进制与BCD码对照表 十进制数BCD码十进制数BCD码012345670000000100100011010001010110011189101112131415 1000 1001000l000000010001000100100001001100010100000101011.5.2 BCD码的运算由于BCD编码是将每个十进制数用一组二进制数来表示,因此,若将BCD码直接交计算机去运算,由于计算机总是把数当作二进制数来运算,所以结果可能出错。
16、例1.25 用BCD码求38+49 0011 1000 38的BCD码 +0100 1001 49的BCD码 1000 0001 81的BCD码对应十进制数为81,正确结果为87,显然结果是错误的,起原因是,十进制数相加应是“逢十进一”,而计算机按二进制数运算,所以当相加结果超过9时将比正确结果少6。解决的办法是对二进制加法运算的结果采用“加6修正”。两个BCD码进行减法运算时,可采用“减6修正法”来修正。(可根据情况举例说明)1.6 ASCII字符代码计算机中的每个字符均按某种规则,用一组二进制编码表示。目前微机中应用最普遍的是美国标准信息交换码(简称ASCII码)。ASCII码用7位二进制
17、码对字符进行编码。ASCII字符集共有128种常用字符。128个ASCII码字符分为可显示字符和非显示字符两类。可显示字符是指编码从20H到7EH的95个代码。非显示字符是编码从00H到1FH的32个代码,还有编码为3FH的字符共33个,它们主要用来控制输入输出设备。1.7其它信息的编码举例汉字的编码简介1国标码:为了在信息交换中有个通用标准,我国在1981年公布了国家标难GB23121980信息交换用汉字编码字符基本集,简称国标码。2机内码:机内码是计算机系统内部用来表示汉字的编码。3机外码:目前常用的机外码主要有区位码、国标码、首尾码、拼音码、五笔字型等。第第2章计算机系统的组成章计算机系
18、统的组成本章要点:介绍计算机系统的基本组成描述了微机指令的一般格式介绍了计算机系统的基本概念和基本工作原理介绍了几种寻址方式的寻址过程2.1计算机系统基本组成 211 计算机系统的组成迄今为止,计算机的组成结构多数是冯诺依曼型的,即:它是执行存储在存储器中程序而工作的。计算机通常有运算控制部件、存储器部件、输入设备和输出设备四部分组成,如图2.1所示。图2.1 计算机组成框图 运算器和控制器两部分,是计算机赖以工作的核心部件。运算器和控制器通常集成在单块大规模集成电路芯片内,人们称为中央处理单元CPU(Central Processing Unit),即微处理器。存储器分为内存储器和外存储器两
19、种。内存储器工作速度快,但存储容量有限;外存储器又称为海量存储器,它存储容量大,但存取速度慢。输出设备用于输出计算机的中间结果和最终结果,也可以输出原始程序和实时信息。输入设备用于信息的输入,常用的是键盘、鼠标和图像设备 等。上述四部分统称为计算机硬件(Hardware),各部分相互独立,但又彼此相连,组成一个有机整体。212 微型计算机的组成微型计算机的最大特点是采用总线结构,其中三总线结构尤为普遍,目前已成为微型计算机的一种基本结构。图 2.2 微型计算机的基本结构所谓总线是指信息传送的公共通道,实际上是印刷电路板上的短路线。这些短路线是沟通微型计算机各种器件的桥梁。1.地址总线AB(Ad
20、dress Bus)2.数据总线DB(Data Bus)3.控制总线CB(Control Bus)4.存储器这里的ROM和RAM是半导体存储器,是一种采用大规模或甚大规模集成电路工艺制成的存储器芯片。213单片机的组成单片机是计算机应用的重要组成部份。单片机的体系结构有两种,一是前面讲的传统的冯诺依曼结构;另一种是哈佛(Harvard)结构。下面结合图2.3简单地介绍哈佛结构特点。图2.3哈佛结构的示意图 CPU数据存储器程序存储器数据与程序分别存于两个存储器中,是哈佛结构的重要特点。所以与常见的冯诺依曼结构不同的第一点是:程序和数据总线可以采用不同的宽度。数据总线都是8位的,但低档、中档和高
21、档系列的指令总线位数分别为12、14和16位。第二点是:由于可以对程序和数据同时进行访问,CPU的取指和执行采用指令流水线结构。图2.4指令流水线结构示意图 周期0 周期1 周期2周期3周期4 取指0 执行0 取指1执行1取指2 执行2 取指3 执行3 22 微处理器微处理器MPU221 MPU的结构 现代微处理器MPU的内部结构极其复杂,要像电子线路那样画出它的全部电原理图来加以分析介绍是根本不可能的。为了弄清它的基本工作原理,现以图2.5中的模型机框图为例加以概述。图 2.5 模型MPU的结构框图222 运算器运算器由算术逻辑单元ALU、累加器A、通用寄存器R0、暂存器TMP和状态寄存器P
22、SW等五部分组成。运算器用于对二进制数进行算术运算和逻辑操作;其操作顺序是在控制器控制下进行的。223 控制器控制器由指令部件、时序部件和微操作控制部件三个主要部分及其它辅助电路组成。控制器是发布操作命令的机构,是计算机的指挥中心,相当于人脑的神经中枢。224 寄存器寄存器用于暂存用于寻址和计算过程的信息。寄存器分为两组:数据寄存器组和地址寄存器组,但有的寄存器兼有双重用途。一般情况下,CPU所含的数据寄存器越多,计算速度越快。地址寄存器组用于操作数的寻址。225 指令系统从程序设计的角度学习,指令是最小单位,但学习指令系统还应从组成指令的最小单位二进制位(bit)开始。1.操作码和地址码 操
23、作码 计算机是对数据进行处理的工具,指令中必须要有说明具体处理的部分,也是通常所讲的操作码。一条指令的组成必须有操作码,它的编码规律是由设计者定义的,其编码的长度与整个指令系统所完成的功能有关,也是设计CPU的依据。地址码地址码是存储器的地址编码,用于区分存储器的不同存储单元。作为存储器的地址码它有两个内涵,一是指示数据的地址,另一个是在改变程序执行顺序时,指示一下条指令(的第一个操作码字节)的地址。2.指令指令是指挥计算机完成各种操作最基本的命令,一条指令应包括两个基本部分操作码和地址码,指令的基本格式为:OP ADDR 操作码字段 操作数地址字段操作码OP(Operation)用于说明该指
24、令操作的性质及功能。地址码用来描述该指令的操作对象,由它给出操作数地址或给出操作数,及操作结果存放地址。(1)指令中的地址码格式 指令中包括的地址码字段有:操作数的地址,用以指明操作数的存放处,不同的指令其所需的操作数可能不同,最多可有两个操作数地址。操作结果的地址,用以运算结果的存放。指令格式按地址码部分的地址个数可分为以下几种:1)三地址指令格式指令格式为:OP表示操作码,Al、A2、A3分别表示操作数1的地址和操作数2的地址以及结果存放地址,Al、A2和A3可以是主存单元地址或寄存器地址。指令意义:(A1)OP(A2)(A3)OPA1A2A32)二地址指令格式 指令格式为:指令意义:(A
25、1)OP(A2)(A1)即把以Al、A2为地址的两个操作数进行OP所指定的操作,操作结果存入Al中替代原来的操作数1。因此,常称Al为目的操作数地址,称A2为源操作数地址。OPA1A23)一地址指令格式 指令格式为:指令中只给出一个操作数地址A,对于需要有两个操作数的指令,另一个操作数采用“隐含”方式。也就是说指令中看不出,实际操作时确实存在,其目的是为了减少指令的长度。这个隐含的操作单元每次操作都是必然的操作对象,同时也是存放运算结果的必然场所,也就是前面讲的累加器A(Accumulator),有时也用AC表示,以免与地址码A混淆。指令意义:(AC)OP(A)(AC)OPA14)零地址指令格
26、式 指令格式为:指令中只有操作码,不含操作数。对于需要有操作对象的指令所需操作数采用隐含指定。OP需要强调的是,这节谈到指令中的地址码个数并非指由于指令操作的不同而要求有不同的操作数。而是说对于相同的操作,不同地址码结构的计算机有不同的实现方案。从这节讨论可以看出,指令中的地址码格式和机器的字长有着比较密切的关系。一地址指令格式是8位机通常采用的地址码结构。16位机更多采用二地址指令格式。(2)指令中的操作码格式 操作码是用来指示机器执行什么样的操作,每一条指令都有一个确定的操作码,不同指令的操作码用不同的编码表示。操作码位数越多,所能表示的操作种类就越多。目前在指令操作码设计上主要采用以下两
27、种编码方式。1)定长操作码,变长指令码 操作码的长度固定,且集中放在指令字的第一个字段中,指令的其余部分全部用于地址码。IBM 370机和VAX11系列机,PC系列机均采用这种定长操作码格式。若操作码的长度均为8位,可表示256种不同的操作。2)变长操作码,定长指令码 这是操作码长度不固定,但指令码的长度固定的一种设计。由于不同的指令需要的操作个数不同,为了有效地利用每一位二进制位,采用扩展操作码的办法,即操作码和地址码位数不固定,操作码位数随地址码数的减少而增加,对地址数少的指令允许操作码长些,对地址数多的指令则操作码就短些。23存储器 231 存储器的分类 1随机存储器(Random Ac
28、cess Memory,简称RAM)随机存储器(又称读写存储器)指通过指令可以随机地、个别地对各个存储单元进行访问,一般访问所需时间基本固定,而与存储单元地址无关。2只读存储器(ReadOnly Memory,简称ROM)只读存储器是一种对其内容只能读不能写入的存储器,在制造芯片时预先写入内容。它通常用来存放固定不变的程序、汉字字型库、字符及图形符号等。由于它和读写存储器分享主存储器的同一个地址空间。故仍属于主存储器的一部分。3可编程序的只读存储器(Programmable ROM,简称PROM)一次性写入的存储器,写入后,只能读出其内容,而不能再进行修改。4可擦除可编程序只读存储器(Eras
29、able PROM,简称EPROM)可用紫外线擦除其内容的PROM,擦除后可再次写入。5可用电擦除的可编程只读存储器(Electrically EPROM,简称E2PROM)可用电改写其内容的存储器,近年来发展起来的快擦型存储器(flash memory)具有 E2PROM的特点。上述各种存储器,除了RAM以外,即使停电,仍能保持其内容,称之为“非易失性存储器”,而RAM为“易失性存储器”。232 存储器的地址信息 一个存储字所包括的二进制位数称为字长。一个字又可以划分为若干个“字节”,现代计算机中,大多数把一个字节定为8个二进制位,因此,一个字的字长通常是8的倍数。有些计算机可以按“字节”寻
30、址,因此,这种机器称为“字节可寻址”计算机。以字或字节为单位来表示主存储器存储单元的总数,就得到了主存储器的容量。常用的计量存储空间的单位还有K,M,G。K为210,M为220,G为230 233 存储器的组织和管理 主存储器用来暂时存储CPU正在使用的指令和数据,它和CPU的关系最为密切。主存储器和CPU的连接是由总线支持的,连接形式如图2.6所示。234 各种寻址方式 一、指令的寻址方式 冯诺依曼提出了现代计算机的工作方式,即存储程序的思想。其外在的表现形式是,在主存储器中存储着两种性质截然不同的信息:数据和指令。1.指令寻址的概念指令的寻址方式是,怎样指出下一条将要执行的指令在存储器中的
31、地址。2.程序计数器 程序计数器是指令寻址的焦点,也是存储指令寻址的结果。改变程序计数器的内容就会改变程序执行的顺序,由程序计数器的硬件结构可知,一是自动修改(+1)功能,用于执行非转移类指令。二是接收内部总线内容的功能,用于执行转移类指令或(中断处理时的由硬件完成的)转移类操作。3.指令的寻址方式 开机后的第一条指令地址 当打开机器电源或按下复位(RESET)键时,CPU内部会将程序计数器复位,对于不同的机型复位后的内容是有差异的。Intel 8088/8086将CS:IP 置为0FFFFh:0000h。当然它们就是开机后要执行的第一条指令的地址。单片机则从程序存储器的0号地址开始执行程序。
32、顺序执行的寻址 计算机工作过程是:先要取指令,再执行指令。由于在执行指令时指令计数器会自动修改其内容,也就是进行“1”操作,为取下一条指令做准备,这样周而复始地进行就会完成顺序执行的程序。这种寻址方式是机器自动完成的。图2.7 指令顺序执行时寻址示意图 改变执行顺序的寻址 当执行了转移类指令,如,条件转移、无条件转移或转子程序指令时;当有外部中断发生时,若CPU响应,则会转去执行中断服务程序。这些都需要改变程序的执行顺序,所以程序计数器中的“1”内容也就失去了作用,必须要更新。直接寻址指令格式是:图2.8 转移指令直接寻址过程示意图操作码(OP)(转移)地址码间接寻址 间接寻址与直接寻址相同之
33、处均是绝对转移,不同的是转移地址不是由指令的地址码直接给出。间接寻址有两种形式:一是转移地址在存储器某地址单元中;另一种是转移地址在CPU的某个寄存器中。前者的指令格式是:转移过程如图2.9a)所示。操作码(OP)地址码后者的指令格式是:对于寄存器间接寻址在指令格式中并不直接表示出来,主要是寻址寄存器的编码短,可以在操作码中给出。将原程序计数器的(已1的)内容被冲掉,当在进行后继指令取指时则从新地址开始,从而实现了程序执行顺序的转移。转移过程如图2.9b)所示。操作码(OP)相对寻址指令格式是:相对寻址是,指程序的转移地址是以当前的指令地址为基准再加上一个有符号的位移量,将运算结果送指令计数器
34、中,从而实现程序的转移。转移过程如图2.10所示。这种寻址方式的主要特点是,指令计数器指示的是现行指令地址,而指令中的位移量指出的是转移地址与 PC内容之间的相对距离。这样,整个程序模块就可以安排在主存中的任意区间执行。操作码(OP)地址码(位移量)中断寻址中断处理的实质也是改变程序执行的顺序,它的寻址方式特点是:改变程序执行的时间是随机的。转移的过程是由软件和硬件共同完成。从指令寻址的角度看与子程序调用的过程相似。不同之处是,子程序的调用时间和条件是由程序设计者事先安排好的,而中断则是随机发生的。二、操作数的寻址方式操作数可能在指令中,或存放在主存储器的某地址单元中或CPU的某寄存器中,还可
35、能存放在堆栈中或I/O接口中。当操作数存放在主存器的某地址单元中时,若指令中的地址码不能直接用来访问主存,则将这样的地址码称为形式地址,对形式地址进行一定的计算而得到的存放操作的主存单元地址(即可直接访问主存的地址)称为有效地址或物理地址。在某些寻址方式中,例如,Intel 8088/8086 有效地址和物理地址是两个不同的概念。1立即寻址(Immediate Addressing)在指令中直接给出操作数,即让操作数占据了地址码部分,在取出指令的同时也取出了操作数,立即有操作数可用,所以称为立即寻址。其指令格式是:这种方式不需要再寻找操作数,所以其指令的执行速度很快。但是由于操作数是指令的一部
36、分,不便修改,因此立即寻址只适用于操作数固定的情况,通常用于为主存单元和寄存器提供常数。操作码(OP)操作数2直接寻址(Direct Addressing)指令中的地址码给出的就是操作数所在主存单元的物理地址,或称实际地址。在指令执行期间,按该地址访问一次主存便获得操作数,这种寻址方式称为直接寻址。其寻址过程如图2.12所示。这种寻址方式不需作任何寻址计算,简单并易于硬件实现。但随着主存储器容量不断扩大,所需地址码越来越长,将导致指令的长度增加。此外,地址是指令的一部分,不能修改,因此只能用于访问固定主存单元。指令格式是:操作码(OP)地址码3寄存器寻址(Register Addressing
37、)指令中地址码部分给出某一通用寄存器的地址(即寄存器名),所指定的寄存器中存放着操作数,称为寄存器直接寻址。其寻址过程如图 2.13所示。这种寻址方式具有两个明显的优点:寄存器是CPU中的一部分,在寻址期间不需占用系统总线,因此寄存器存取数据的速度比主存快得多;由于寄存器的数量较少,其地址码也比主存单元地址短得多。4间接寻址(Indirect Addressing)指令地址码部分给出的并不是操作数的直接地址,而是存放操作数地址的主存单元地址(简称为操作数地址的地址),这种寻址方式称为间接寻址,简称间址。间接寻址分为一次间址和多次间址两种。在多数计算机中,只允许一次间址。其间址过程如图2.14所
38、示。5寄存器间接寻址(Register Indirect Addressing)为了克服间址中访存次数多的缺点,可采用寄存器间接寻址,即指令中给出寄存器地址,被指定的寄存器中存放操作数的地址。其寻址过程如图2.15所示。这种寻址方式的指令较短,并且在取指后只需访存一次便可得到操作数,因此指令执行速度较存储器间址方式快。在编程时常使用某些寄存器作为地址指针。6.变址寻址(Indexed Addressing)程序设计的很多场合都需要操作数地址按某种规律变化,以增加寻址的灵活性。指令中指定一个寄存器作为变址寄存器,并在指令地址码部分给出一个形式地址,变址寄存器的内容(称为变址值)与形式地址相加后的
39、结果作为操作数的地址。这种寻址方式称为变址寻址。变址寻址过程如图2.16所示。7.页面寻址(Page Addressing)页面寻址是将整个主存空间划分为若干相等的区,每个区为一页,由页面(编)号寄存器存放页面地址(内存高地址),指令中的形式地址给出的是操作数存放单元在页内的地址(内存低地址),相当于页内位移量:将页面号寄存器内容(内存高地址)与指令给出的形式地址(内存低地址)相拼接形成操作数的有效地址,这种寻址方式称为页面寻址。8基址寻址(Based Addressing)基址寻址原是大型计算机经常采用的一种技术,用来将用户的逻辑地址(用户编程时所使用的地址)转换成主存的物理地址(程序在主存
40、中的实际地址)。基址寻址中,操作数的有效地址等于指令中形式地址与基址寄存器内容之和,即EA(Rb)十D。其中Rb为基址寄存器,D为形式地址(这里表示位移量)。在应用场合上,基址寻址面向系统,可用来解决程序在主存中的重定位和扩大寻址空间等问题。而变址寻址却面向用户,用于访问字符串、向量和数组等成批数据。但在某些小型、微型机中,基址寻址与变址寻址的界限往往是不清楚的。9.其他寻址除了以上寻址方式外,还有位寻址、块寻址和堆栈寻址等。位寻址指能寻址到位(bit),常用于单片机编程中。24 常见常见I/O设备及设备及I/O接口接口1常见I/O设备I/0设备即输入输出设备。CPU是通过I/0设备与外界交换
41、信息的。常见的输入设备有键盘、扫描仪、光电输入机等,输出设备有CRT显示器、打印机等,而软盘、硬盘等外部存储器既可以输入信息,也可以输出信息,是复合的I/0设备。2典型I/O接口形式 图2.17是一个典型的I/O接口,其中既有数据端口,又有状态及控制端口。每个I/O端口对应一个I/O地址。本章小结本章介绍了计算机系统的组成。冯诺依曼型计算机主要由运算控制部件、存储器部件、输入设备和输出设备组成。介绍了微型计算机的结构和特点,微型计算机是在中小型计算机基础上发展而来的,它的最大特点是采用总线结构。它的总线分为地址总线、数据总线、控制总线,存储器分为RAM和ROM。本章还介绍了微处理器的结构、各种
42、寻址方式的寻址过程和指令格式。第第3章章 中央处理器中央处理器 本章要点:中央处理器的功能、结构 8088微处理器 CPU的常用技术3.1中央处理器的功能及组成中央处理器的功能及组成 3.1.1 什么是中央处理器什么是中央处理器 中央处理器又叫CPU(Central Processing Unit),是计算机系统的核心部件。根据CPU一次能处理的数据的位数(称为字长),通常把CPU称为多少位CPU。若字长为8位,即一次能处理8位数据,则称为8位CPU,如Z80CPU;若字长为16位的,即一次能处理16位的数据,则称为16位CPU,如8086/8088、80286等。3.1.2 CPU的功能的功
43、能 指令控制 程序的顺序控制,称为指令控制。操作控制 管理并产生每条指令的操作信号,把操作信号送往相应的部件,从而控制这些部件按指令的要求进行动作。时间控制 对各种操作实施时间上的控制,称为时间控制。数据加工 所谓数据加工,就是对数据进行算术运算和逻辑运算处理。3.1.3 CPU的组成的组成 一个典型的8位微处理器的内部结构,CPU内部结构大致可以分为指令控制单元、算术逻辑运算单元、寄存器组和时钟等几个主要部分。如图3.1所示。图3.1微处理器的内部结构 1算术逻辑运算单元ALU(Arithmetic Logic Unit)算术逻辑部件主要完成对二进制信息的各种运算。包括:算术运算和逻辑运算
44、状态寄存器的置位或复位条件,在不同机器中的规定有些差异。在程序中,状态位通常作为转移指令的判断条件。由此可见,它是程序设计的重要基础知识之一。2指令控制单元 控制器一般包括指令控制逻辑、时序控制逻辑、总线控制逻辑、中断控制逻辑等几个部分。指令控制逻辑要完成取指令、分析指令和执行指令的操作。时序控制逻辑要为每条指令按时间顺序提供应有的控制信号。总线逻辑是为多个功能部件服务的信息通路的控制电路。3CPU中的主要寄存器(Register)寄存器是CPU内部的高速存储单元,不同的CPU配有不同数量、不同长度的一组寄存器。从应用角度看,通常可以将寄存器分成以下三类:通用寄存器 地址寄存器 标志寄存器 标
45、志寄存器是一个由各种标志、状态拼凑而成的寄存器。3.2 8088微处理器微处理器 下面介绍一个具体的微处理器Intel公司的8088微处理器。8088微处理器是一个准16位微处理器。其内部的数据处理能力达到了16位字长,但其外部数据总线的宽度只有8位,所以当它和外界进行数据交换时,每次只能输入或输出一个字节。3.2.1 8088的寄存器结构的寄存器结构 CPU内部有14个寄存器,都是16位结构,通常分为通用寄存器、控制寄存器、段寄存器三组。1通用寄存器包括4个数据寄存器,2个指针寄存器,2个变址寄存器。4个数据寄存器为:AX、BX、CX和DX,其长度均为16位。但是它们都可以拆成高8位和低8位
46、两个寄存器来使用,拆成8位寄存器后,高8位依次用AH、BH、CH、DH表示;低8位依次用AL、BL、CL、DL表示。如表3.1所示表3.1 通用寄存器的用法 2 个指针寄存器:SP、BP,都是16位寄存器,不可以拆开使用。见表3-2。表3-2 指针寄存器在8088指令系统中的应用 2个变址寄存器:SI、DI。也是16位的寄存器,不可以拆开使用。见表3-3。表3-3 变址寄存器在8088指令系统中的应用 2.控制寄存器 包括指令指针寄存器和状态标志寄存器,都是16位的,不可以拆可使用。指令指针寄存器用IP表示,该寄存器用于存放内存某单元的有效地址,而该单元中存放的是1条指令(或指令的一个字节)。
47、CPU取出这条指令后,IP自动加1,指向下1条指令(或指令的下一个字节)。状态标志寄存器用F表示。用来存放现行指令执行后的一些状态信息,以及程序状态字PSW(Program Status Word),所以该寄存器又称为程序状态字寄存器。如图3-3。3.段寄存器 代码段寄存器CS(Code Segment Register)存放代码段地址堆栈段寄存器SS(Stack Segment Register)存放堆栈段地址数据段寄存器DS(Data Segment Register)存放数据段地址附加段寄存器ES(Extra Segment Register)存放附加段的段地址。3.2.28088的功能
48、结构的功能结构图3.4是8088的内部结构图 3.2.3 8088CPU引脚及其功能 8088的引脚如图3-5所示。8088有40条引脚,双列直插式封装。为了解决多功能与引脚的矛盾,在8088内部设置了若干个多路开关,使某些引脚具有多种功能。这些引脚功能的转换分为两种情况:一种是分时复用,在总线周期的不同时钟周期引脚具有不同的功能。另一种是通过工作模式控制引脚上外加的信号来改变8088的工作模式,使同一引脚在不同的工作模式下,具有不同的功能。当8088和存储器、I/O接口组成一个计算机系统时,根据系统要求不同,8088CPU有两种工作模式:最小工作模式和最大工作模式。最小模式系统通常指计算机系
49、统中只有一个微处理器,即8088CPU,系统中的所有控制信号都是由8088直接产生。最大模式系统通常指系统中存在两个或两个以上的微处理器,系统中的控制信号大部分是由总线控制器8288产生。最小/最大工作模式公用引脚 AD7AD0:地址数据线,双向,三态;A15A8:地址线,输出,三态;A19S6、A18S5、A17S4、A16S3:地址状态线,输出,三态,这是4根分时复用的多功能引脚;RESET:复位信号,输入,高电平有效;读信号,输出,低电平有效。READY:准备就绪信号,输入,高电平有效;RD测试信号,输入,低电平有效;INTR:可屏蔽中断请求,输入,高电平有效;NMI:不可屏蔽中断请求,
50、输入,边沿触发;模式选择:该引脚规定8088以何种模式工作,当该引脚接电源(+5V)时,则8088工作在最小模式;若该引脚接地,则8088工作于最大模式系统。MXMN/8088最小工作模式系统 图3-6 8088最小模式系统结构示意图 最大工作模式系统 图3-7 8088最大模式系统结构示意图 3.2.48088的典型时序 1指令周期、总线周期和T状态计算机的操作是在系统时钟CLK控制下严格定时的,每一个时钟周期称为一个“T状态”,T状态是总线操作的最小时间单位。CPU从存储器或I0端口存取一个字节所需的时间称为“总线周期”。CPU执行一条指令所需的时间称为“指令周期”。2.存储器读周期 图3