附录 各章习题参考答案第1章 习题参考答案答:微处理器MPU也常称为微处理机,它是微型计算机的核心部件,微处理器的发展过程就是微型计算机的发展过程。以Intel公司的微处理器为例,微处理器的发展历程经历了以下六代。
第一代微处理器
1971~1973年为4位或低档8位微处理器和微型计算机的时代。这一时期的典型产品是Intel 4004和Intel 8008。第一代微处理器的基本特点是:采用PMOS工艺,集成度低(1200~2000晶体管/片),系统结构和指令都比较简单,仅能进行串行十进制运算,且速度慢,基本指令执行时间为10~20μs,它采用机器语言编程,主要用于家用电器和简单控制场合。
第二代微处理器
1974~1977年为8位中档微处理器和微型计算机时代。这一时期的典型CPU产品有Intel 8080、Intel 8085。
第二代微处理器的显著特点是:采用了NMOS工艺,集成度提高约4倍(5000~9000晶体管/片),时钟频率为2~4MHz,平均指令执行时间为1~2s,速度提高了10~15倍,基本指令执行时间为1~2μs,指令系统较为完善。这一时期推出的微型计算机在系统结构上已具有典型的计算机体系结构以及中断、DMA等控制功能,软件方面除汇编语言外,还可使用如Basic、Fortran等高级语言,在系统设计上考虑了机器兼容性、接口标志化和通用性,且外围配套电路种类齐全、功能完善,因此这种系统广泛应用于电子仪器、现金出纳机和打印机等设备中。
第三代微处理器
1978~1984年为16位微处理器和微型计算机时代。这一时期的CPU产品有Intel 8086、Intel 8088。第三代微处理器的主要特点是:采用了HMOS工艺,时钟频率为5~40MHz,集成度达20 000~70 000晶体管/片,基本指令执行时间为0.5μs,比8位微处理器提高了一个数量级,数据总线宽度为16位,地址线为20位,最大可寻址空间为1MB,具有丰富的指令系统,且CPU的内部结构有很大改进,体系结构与指令更为完善利丰富,采用了多级中断、多种寻址方式、段式寄存器等结构。
第四代微处理器
1985~到1992年为32位微处理器和微型计算机时代。这一时期的典型CPU产品是Intel 80386、Intel 80486。第四代微处理器的主要特点是:大多采用了HMOS或CMOS工艺,集成度每个芯片高达100万个晶体管,基本指令执行速度一般在25Mips,为微型计算机带来了小型机的性能。拥有32条地址线,内存寻址范围为4GB,使用二级存储器管理方式,支持带有存储器保护的虚拟存储机制,虚拟存储空间高达264GB。Intel 80386时钟主频在16MHz以上,80486工作主频提高到了50MHz以上。
第五代微处理器这一时期的CPU产品有1993年Intel公司推出的Pentium微处理器,使微处理器的技术发展到了一个崭新的阶段,标志着微处理器完成从CISC向RISC时代的过渡,Pentium采用亚微米(0.8μm)CMOS工艺技术,集成度为330万个晶体管/片,内部采用4级超标量结构,数据线64位,地址线36位。工作频率为60/66MHz,处理速度达110Mips。在1994年3月,Intel推出了第二代Pentium,它采用0.6μm工艺和3.3V电源,功耗仅为4W,而且可在不需要时自动关闭浮点单元,散热问题基本得以解决,它的主时钟频率为100MHz和90MHz两种。
第六代微处理器
1995年,Intel公司正式公布的Pentium Pro是一种64位CPU。该处理器采用0.35μm工艺,集成度是550万个晶体管/片,地址线为36位,寻址范围为64GB,其主频提高到133MHz以上,具有两倍Pentium的性能。其余典型产品有称为“具有MMX技术的Pentium和Pentium Pro”,其型号分别为P55C和Pentium Ⅱ,64位的Pentium III,Pentium 4系列、Pentium D处理器系列、Pentium双核处理器系列和Pentium处理器至尊版系列。
答:利用大规模集成电路工艺将微型计算机的CPU、内存和I/O接口电路集成在一片硅片上,这就是单片机(Single-Chip Computer)。若将微型计算机的CPU、内存、I/O接口电路安装在一块印制电路板上就组成了单板机。
答:微型计算机的硬件主要由运算器、存储器、控制器、输入设备和输出设备5部分组成。运算器是完成二进制数据的算术或逻辑运算的部件,由累加器、暂存寄存器和算术逻辑单元(ALU,Arithmetic Logic Unit)组成,核心是算术逻辑单元。存储器是用来存放程序和数据的,是计算机的各种信息的存储和交流中心。计算机中的存储器包括内存储器、外存储器和只读存储器等。控制器主要用来实现微型计算机本身运行过程的自动化,即实现程序的自动执行。在控制器控制下,从输入设备输入程序和数据,并自动存放在存储器中,然后由控制器指挥各部件协同工作以执行程序,最后将结果打印输出。输入设备用来输入原始数据和处理这些数据的程序,输入的信息包括数字、字母和控制符号等,这些信息由译码电路产生相应的ASCII码再由控制器控制进行各种操作。输入设备目前主要是CRT终端、键盘、鼠标、扫描仪等。输出设备用来输出计算机的处理结果,这些结果可以是数字、字母、图形和表格等。最常用的输出设备有显示器、打印机、绘图仪等,当数据和程序通过键盘输入终端后,经计算机处理后的结果可显示在屏幕上。
答:微型计算机的系统软件的主要特点是简化计算机操作,支持应用软件的运行并提供服务,通常包括操作系统、程序设计语言、编译和解释程序,还包括机器的监控管理程序、调试程序、故障检查和诊断程序。
答:数制是人们用来表示数据的科学方法。常用的数制有十进制、二进制、八进制和十六进制。十进制数采用0~9共10个数字及其进位来表示数的大小,基数是10,其计数原则是“逢十进一”。二进制数采用0~2共2个数字及其进位来表示数的大小,基数是2,其计数原则是“逢二进一”。八进制数采用0~7共8个数字及其进位来表示数的大小,基数是8,其计数原则是“逢八进一”。十六进制数采用0~F共16个数字及其进位来表示数的大小,基数是16,其计数原则是“逢十六进一”。
解:
(97)10 = (1100001)2 = (141)8 = (61)16
(128)10 = (10000000)2 = (200)8 = (80)16
(350)10 = (101011110)2 = (536)8 = (15E)16
(1024)10 = (10000000000)2 = (2000)8 = (400)16
(0.125)10 = (0.001)2 = (0.1)8 = (0.2)16
(24.25)10 = (11000.01)2 = (30.2)8 = (18.4)16
解:
(101100)2 = (44)10 = (54)8 = (2C)16
(1101001)2 = (105)10 = (151)8 = (69)16
(1101.1011)2 = (13.6875)10 = (15.54)8 = (D.B)16
(10010011.10101)2 = (147.65625)10 = (223.52)8 = (93.A8)16
解:
(30)16 = (110000)2 = (48)10 = (60)8
(0D)16 = (1101)2 = (13)10 = (15)8
(24.5)16 = (00100100.0101)2 = (36.3125)10 = (44.24)8
(9B.2F)16 = (10011011.00101111)2 = (155.18359375)10 = (233.136)8
答:带符号数的表示方法有3种:原码、反码和补码。原码是一种简单的机器数表示方法,即符号和数值表示法,规定正数的符号位为0,负数的符号位为1。对于一个带符号的数来说,正数的反码与其原码相同,负数的反码为其原码除符号位外的各位按位取反,反码通常用做求补码过程中的中间形式。正数的补码与其原码相同,负数的补码为其反码在最低位加l,引入补码的目的在于将加、减法运算简化为单纯的加法运算。
解:
[48]原 = 00110000 [48]反 = 00110000 [48]补 = 00110000
[64]原 = 01000000 [64]反 = 01000000 [64]补 = 01000000
[-31]原 = 10011111 [-31]反 = 11100000 [-31]补 = 11100001
[-127]原 = 11111111 [-127]反 = 10000000 [-127]补 = 10000001
解:
由于[X + Y]补 = [X]补 + [Y]补,先求[X]补,[Y]补。
X = (-9) = -0001001,则[X]补 = 11110111
Y = (-2) = -0000010,则[Y]补 = 11111110
11110111 [X]补
+) 11111110 [Y]补
11110101 [X1]补+[Y1]补所以,[X + Y]补 = [11110101]补解:
由于[X]补=11000000,[Y]补=01001000,[Z]补=00110010,
所以[-X]补 = 01000000,[-Y]补 =10111000,[-Z]补 = 11001110
[X-Y]补 = [X]补 + [-Y]补 = 11000000 + 10111000 = 101111000,产生溢出,结果出错。
[X-Z]补 = [X]补 + [-Z]补 = 11000000 + 11001110 = 10001110,无溢出,结果正确。
答:ASCII编码通常用7位二进制数表示,A、a、0、CR、LF的ASCII码依次为65、97、48、13、10。
解:
8609的压缩8424-BCD码为1000011000001001
5254的压缩8424-BCD码为0101001001010100
2730的压缩8424-BCD码为0010011100110000
2008的压缩8424-BCD码为0010000000001000
第2章 习题参考答案答:8088/8086 CPU由两个独立的功能部件构成:指令执行部件EU(Execution Unit)和总线接口部件BIU(Bus Interface Unit),两者可并行操作。
指令执行部件(EU)中包含1个16位的算术逻辑单元ALU,8个16位的通用寄存器,1个16位的状态标志寄存器FR,1个数据暂存寄存器和执行部件的控制电路。EU主要功能是:从BIU的指令队列中取出指令代码,经指令译码器译码后执行指令规定的全部功能。执行结果或执行指令所需的数据,都由EU向BIU发出命令,对存储器或I/O接口进行读/写操作。EU中的各个部件通过16位的ALU总线连接在一起,在内部实现快速数据传榆。EU从BIU的指令队列中获得指令,当指令要求访问存储器单元或外部设备时,EU就向BIU发出操作请求,并提供访问的数据和地址,由BIU完成相应的操作。
BIU内部设有4个16位段地址寄存器,即代码段寄存器CS、数据段寄存器DS、堆栈段寄存器SS和附加段寄存器ES;1个16位指令指针寄存器IP;1个6字节指令队列缓冲器;以及20位地址加法器和总线控制电路。BIU的主要功能是:根据EU的请求,完成CPU与存储器或I/O设备之间的数据传送。BIU提供从存储器的指定单元取出指令,送至指令队列中或直接传送给EU去执行;从存储器的指定单元和外设端口中取出指令规定的操作数传送给EU,或者把EU的操作结果传送到指定的存储单元和外设端口中。
8086具有16位的内部数据总线和16位的外部数据总线,而8088却具有16位的内部总线和8位的外部数据总线,因而称为准16位机。
答:8088/8086内部有14个16位寄存器,按功能可分为3大类:第一类是通用寄存器8个,第二类是段寄存器4个,第三类是控制寄存器2个。通用寄存器中的数据寄存器用来存放操作数或中间结果;指针和变址寄存器用来存放地址的偏移量。段寄存器用来存放每一个逻辑段的段起始地址,其中代码段寄存器CS用来给出当前的代码段起始地址,存放CPU可以执行的指令,CPU执行的指令将从代码段取得;数据段寄存器DS指向程序当前使用的数据段,用来存放数据,包括参加运算的操作数和中间结果;堆栈段寄存器SS给出程序当前所使用的堆栈段,即在存储器中开辟的堆栈区,堆栈操作的执行地址就在该段;附加段寄存器ES指出程序当前所使用的附加段,通常也用来存放数据,典型用法是存放处理以后的数据。控制寄存器中的指令指针寄存器IP存放EU要执行的下一条指令的偏移地址,用以控制程序中指令的执行顺序;标志寄存器FLAG共9个标志,其中6个用做状态标志,3个用做控制标志,状态标志位用来反映EU执行算术或逻辑运算的结果特征,这些标志常用作条件转移类指令的测试条件,控制程序的执行流程,控制标志位用来控制CPU的工作方式或工作状态。
答:当访问存储器中某个字节时:指令中的地址码经变换后得到20位的物理地址。如果是偶地址(A0=0,BHE=1),这时可由A0选定偶地址存储体,A19~A1从偶地址存储体中选定某个字节地址,并启动该存储体,读/写该地址中一个字节的信息,通过数据总线的低8位传送数据;如果是奇地址(A0=1),则偶地址存储体不会被选中,系统将自动产生=0,作为奇地址存储体的选择信号,与A19~A1一起选定奇地址存储体中某个字节地址,并读/写该地址中一个字节的信息,通过数据总线的高8位传送数据。当访问存储体中某个字时:一种情况是需要访问从偶地址开始的一个字(即高字节在奇地址中,低字节在偶地址中),可一次访问存储器读/写一个字信息,这时A0=0,=0。另一种情况是需要访问从奇地址开始的一个字(即高字节在偶地址中,低字节在奇地址中),这时需要访问两次存储器才能读/写这个字的信息,第—次访问存储器读/写奇地址中的字节,第二次访问存储器读/写偶地址中的字节。显然,为了加快程序的运行速度,希望访问存储器的字地址为偶地址。
解:
段地址
偏移地址
物理地址
(1)2314H,0035H
2314H
0035H
23175H
(2)lFD0H,00A0H
lFD0H
00A0H
1FDA0H
(3)3FB0H,0053H
3FB0H
0053H
3FB53H
(4)0000H,0100H
0000H
0100H
00100H
(5)1000H,0110H
1000H
0110H
10110H
(6)2A00H,2010H
2A00H
2010H
2C010H
解:根据公式物理地址 = 段基址*16 + 偏移地址,得该程序段的第一个字的物理地址是0D430H。
答:状态标志位用来反映EU执行算术或逻辑运算的结果特征,这些标志常用作条件转移类指令的测试条件,控制程序的执行流程,控制标志位用来控制CPU的工作方式或工作状态,它一般由程序设置或由程序清除。对于状态标志,CPU在进行算术逻辑运算时根据操作结果自动将状态标志位置位(等于1)或复位(等于0);对于控制标志,实现用指令设置,在程序执行时,检测这些标志,用于控制程序的转向。8086/88的状态标志有CF、PF、AF、ZF、SF、OF,控制标志有TF、IF、DF。
答:SP和BP用于堆栈段操作,入栈(PUSH)和出栈(POP)指令由SP给出栈顶偏移地址,称为堆栈指针寄存器;BP存放位于堆栈段中数据区基址的偏移地址,称做基址指针寄存器。SI和DI用来存放当前数据段的偏移地址,源操作数的偏移地址存放SI中,称其为“源变址寄存器”,目的操作数的偏移地址存放于DI中,称其为“目的变址寄存器”。
答:8086有两种工作模式:最小模式和最大模式。最小模式是指系统中只有一个微处理器(8086)。在这种系统中,8086直接产生所有的总线控制信号,系统所需的外加总线控制逻辑部件最少。最大模式是指系统中含有两个或多个微处理器,其中一个为主处理器8086,其它的处理器称为协处理器,是协助主处理器工作的。在最大模式工作时,控制信号是通过8288总线控制器提供的。目前常用的是最大模式。在不同模式下工作时,8086的部分引脚(第21~24引脚)会有不同的功能。
答:总线周期是指CPU从存储器或I/O端口存取一个字节(或一个字)所需要的时间。8086 的最基本的总线周期由4个时钟周期组成,每个时钟周期称为T状态,用T1、T2、T3和T4表示。如一个CPU的时钟频率为24MHz,那么,它的一个时钟周期为1/24μs即0.042μs,一个基本总线周期为1/6μs。若CPU时钟频率为15MHZ,则其时钟周期为1/15μs即0.067μs,一个基本总线周期为4/15μs。
答:8086和8088采用分时的多路转换方法来实现对地址线和数据线的复用,作为复用引脚,在总线周期的T1状态用来输出要访问的存储器或I/O端口地址,在其它状态则用来传送数据。ALE在任何总线周期的T1状态输出有效电平,以表示当前在地址/数据复用总线上输出的是地址信息,地址锁存器将ALE作为锁存信号,对地址进行锁存。
答:RESET信号来到后,8086/88系统的CS设置为0FFFFH,IP清0。第一条指令的物理地址为FFFF0H,存放着一条无条件转移指令的代码。
第7章 习题参考答案答:所谓“中断”是指CPU在正常执行程序的过程中,由于内部/外部事件或由程序的预先安排,引起CPU暂时中断当前程序的运行而转去执行为内部/外部事件或预先安排的事件服务的子程序,待中断服务子程序执行完毕后,CPU再返回到暂停处(断点)继续执行原来的程序,这一过程称为中断。根据中断源是来自CPU的内部还是外部,8086的中断源可分为两大类:内部中断源和外部中断源,对应的中断称为内部中断和外部中断。
答:在现代微机系统中采用中断技术后,可以带来以下优点:并行操作、实时处理、故障处理和分时操作。(详细内容请参见教材)
答:8086可以处理256种中断向量,每种中断都指定一个中断类型号代码(0~255),每一个中断类型号都可以与一个中断服务程序相对应。中断向量表是存放中断服务程序入口地址的表格,它存放在存储器的最低地址区,每4个字节存放一个中断服务程序的入口地址,由于要存放256个中断服务程序的人口地址,所以要占用1024个字节,地址号为00000H~0003FFH。较高地址的两个字节存放中断程序入口的段基值CS,较低地址的两个字节放入口地址的段内偏移量IP,这4个单元的最低地址称为向量地址。
解:根据“中断类型号*4”即可计算出某个中断类型的中断向量在整个中断向量表中的位置,所以30H号中断的中断服务程序地址存放在8086中断向量表的0000:00C0H~0000:00C3H。
答:通常,确定中断的优先级的方法有以下几种:
软件查询确定中断优先级。其缺点是在中断源较多的情况下,由询问到转至相应的中断服务程序的入口时间较长。
链式优先级排队电路。(缺点略)
中断优先级编码电路。(缺点略)
略,参见图7-7
答:8259A的基本功能有:
采用NMOS制造工艺,只需要一组+5V电源。
有8个外部中断请求输入引脚,具有8级中断优先级控制,并且在不增加任何其它电路情况下,可以用9片8259A通过级联扩展至64级优先级控制。
每一级中断都可以通过初始设置为允许或屏蔽状态。
在中断相应周期,8259A可提供相应的中断向量,从而能迅速地转至中断服务程序。
8259A的工作方式可以通过编程设置,使用非常灵活。
答:按照对中断优先级的管理,8259A工作方式有全嵌套方式、特殊全嵌套方式、优先级自动循环方式和优先级特殊循环方式。
答:
ICW1 = 1BH = 00011011B
ICW2 = 30H = 00110000B
ICW4 = 01H = 00000001B
根据各初始化命令字各位的功能得,该8259A单片工作,电平触发方式,必须输出ICW4,8级中断的中断类型码为30H~37H,系统中的CPU为8088/8086,非缓冲方式,非自动中断结束方式,中断优先级采用普通全嵌套方式。
解:硬件接线图如下所示。其中,主片的ICW3=00101000B=28H,从片1的ICW3=00000011B=03H,从片2的ICW3=00000101B=05H。

答:1)在缓冲方式下,主片的ICW1的SNGL=0,ICW3指出从片连接情况,若相应引脚接有从片,则相应位置1,ICW4的M/S=1,BUF=1;从片的ICW1的SNGL=0,ICW3指出连接到主片的哪个引脚,ICW4的M/S=0,BUF=1。2)在非缓冲方式下,主片和从片的ICW4的BUF=0,其余设置同缓冲方式。
解:由OCW2的各位设置知,它是优先级设置命令,IR3发出中断请求,CPU响应之后,由于8259A工作于优先级自动循环方式,则其优先权排队顺序自动变为IR4、IR5、IR6、IR7、IR1、IR2,IR3。
第8章 习题参考答案第9章 习题参考答案第10章 习题参考答案第11章 习题参考答案第12章 习题参考答案