计算机组成原理小结和习题2 下载本文

第1章 本章小结

计算机的发展是随着微电子技术,半导体制造技术的发展而发展的,微型计算机是计算机发展到第四代才出现的一个非常重要的分支,它的发展是以微处理器的发展为标志的。

微型计算机(Microcomputer)由微处理器、存储器和I/O接口电路以及输入/输出设备组成。

微处理器又称为中央处理单元,即CPU(Central Processing Unit),是微型计算机的核心,它是将运算器和控制器集成在一块硅片上而制成的集成电路芯片。

存储器(又称为主存或内存)用来存储程序或数据。计算机要执行的程序以及要处理的数据都要事先装入到内存中才能被CPU执行或访问。有关位、字节、字、字长、存储单元地址、存储容量等概念以及内存读/写操作原理等,读者务必要搞清楚。

输入/输出接口是微机与输入/输出设备之间信息交换的桥梁。不同的外设必须通过不同的I/O接口才能与微机相连。因此,I/O接口是微型计算机应用系统不可缺少的重要组成部件。

微型计算机体系结构的特点之一是采用总线结构,通过总线将微处理器、存储器以及I/O接口电路等连接起来。所谓总线,是指计算机中各功能部件间传送信息的公共通道。总线可分为三类:地址总线AB(Address Bus)、数据总线DB(Data Bus)、和控制总线CB(Control Bus)。

计算机的工作就是运行程序,通过逐条地从存储器中取出指令并执行指令规定的操作来实现某些特定的功能,因此,软件是微型计算机系统不可缺少的组成部分。微型计算机的软件包括系统软件和用户(应用)软件两大类。

本章还通过在一个8位模型机上运行一个简单的程序来说明微型计算机的工作过程。

总之,通过本章的学习,应对微型计算机的基本概念、基本组成及工作过程有一个基本了解,建立计算机整机概念,为后续各章节的学习打下良好的基础。

习题

1、计算机按其使用的逻辑元件的不同被分为哪几代?微型计算机是哪一代计算机的分支?

2、简述冯·诺依曼计算机体系结构的基本思想。 3、微型计算机系统由哪几部分组成?

4、何谓微型计算机硬件?它由哪几部分组成?简述各部分的作用。 5、何谓微型计算机软件?它是如何分类的? 6、何谓总线?有哪几类?作用如何?

7、试说明位、字节、字、字长、存储单元地址和存储容量等概念。 8、试比较存储器读和存储器写两种操作的区别。

第2章 本章小结

计算机的基本功能是进行数据和信息处理。在计算机中,数据、信息以及为处理这些数据和信息而编写的程序代码等都是以二进制形式表示的。

二进制对计算机来说是最佳的数制,因此,本章重点介绍了二进制计数法及其运算规则。十六进制计数法是为了克服二进制计数法书写麻烦而引入的一种进位计数制,在书写汇编语言源程序时被广泛使用,但读者应清楚,不论数据以什么格式书写,最终都要转换为二进制数后才能被计算机识别和处理。

人们习惯使用十进制数,因此,十进制数、二进制数和十六进制数之间的相互转换就显得非常重要了。对本章介绍的各种数制之间的相互转换方法,读者都应该熟练掌握。

带符号数的表示方法有原码表示法、反码表示法和补码表示法等。正数的原码、反码、补码相同;负数的反码是在原码基础上,符号位不变(仍为1),数值位按位取反;负数的补码是在原码基础上,符号位不变(仍为1),数值位按位取反,末位加1,或者在反码基础上末位加1。

引入补码的目的是为了将减法运算变为加法运算,通过使用同一个运算器实现加法和减法运算,从而简化了计算机运算器的结构。同时,还介绍了补码加、

减法运算规则。

进位与溢出是两个非常重要的概念。所谓进位,是指运算结果的最高位向更高位的进位,用来判断无符号数运算结果是否超出了计算机所能表示的最大无符号数的范围。溢出是指带符号数的补码运算溢出,用来判断带符号数补码运算结果是否超出了补码所能表示的范围。有关溢出的判断方法应熟练掌握。

BCD码是一个比较适合于十进制系统的二进制编码的特殊形式,它有压缩型和非压缩型两种。ASCII码是一种目前在微机中被广泛使用的字符编码。在计算机中,用二进制表示实数的方法有两种,即定点表示法和浮点表示法。

需要特别说明的是,同一个二进制数,当认为它是不同形式的编码时,它所代表的数值是不同的。因此,送给计算机处理的二进制形式的操作数,到底是无符号数、补码形式的带符号数或者是其他形式的编码信息,程序设计者自己应该心中有数,否则就无法对计算结果作出正确的判断和处理。这一点务必请读者注意。

习题

1.将下列十进制数分别转换为二进制数和十六进制数:

(1)129.75 (2)218.8125 (3)15.625 (4)47.15625 2.将下列二进制数分别转换为十进制数和十六进制数:

(1)111010B (2)10111100.1llB (3)0.11011B (4)11110.01B 3.完成下列二进制数的加减法运算。

(1)1001.11+100.01 (2)11010110.1001—01100001.0011 (3)00111101+10111011 (4)01011101.0110—101101.1011 4.完成下列十六进制数的加减法运算。

(1)7A6C+56DF (2)ABlF.8一EF6.A (3)12AB.F7+3CD.05 (4)6F01一EFD8 5.计算下列表达式的值:

128.8125+10110101.1011B+1E.2H=( )B 287.68-10101010.11B+8E.EH=( )H

18.9+1010.1101B+12.6H一1011.1001B=( )D

6.选取字长n为8位和16位两种情况,求下列十进制数的补码。 (1)X= -33 (2)Y= +33 (3)Z= -128 (4)N= +127 (5)A=一65 (6)C= +65 (7)C= 一96 (8)D= +96 7.写出下列用补码表示的二进制数的真值: (1)[X]补=1000 0000 0000 0000 (2)[Y]补=0000 0001 0000 0001 (3)[Z]补=1111 1110 1010 0101 (4)[A]补=0000 0010 0101 0111

8·设机器字长为8位,最高位为符号位,试对下列各式进行二进制补码运算,并判断结果是否溢出。

(1)43+8 (2) -52+7 (3)60+90 (4)72—8

(5)一33+(一37) (6)一90+(一70) (7)一9一(一7)

(8)60—90

9.设有变量x=lll01111B,y=11001001B,z=01110010B,v=-01011010B,试计算X + Y=? X + Z=? Y+Z=? Z+V=? 请问:①若为无符号数,计算结果是否正确?②若为带符号补码数,计算结果是否溢出?

10.试述计算机在进行算术运算时,所产生的“进位’’与‘‘溢出”二者之间的区别。

11.设x=-87H,y=78H,在下述情况下比较两数的大小。 (1)均为无符号数 (2)均为带符号数(补码)

(3)均为压缩型BCD数

12·试计算下列二进制数为无符号数、原码、反码、补码、8421 BCD码时分别代表的数值大小。若为非8421 BCD数时请指出。

(1)10001000B (2)00101001B (3)11001001B (4)10010011B

13.分别写出下列字符串的ASCII码:

(1)l0ab 2)AE98

(3)B#Dd (4)xyzi (5)hello comorade

14·设机器字长为32位,定点表示时,符号位1位,数值位31位;浮点表

示时,阶符1位,阶码5位,数符1位,尾数25位。

(1)定点原码整数表示时,最大正数是多少?最小负数是多少? (2)点原码小数表示时,最大正数是多少?最小负数是多少? (3)浮点原码表示时,最大浮点数是多少,最小浮点数是多少?

第3章 本章小结

微处理器(cvu)是构成微型计算机的核心部件,是全机的控制中心,它控制着全机各功能部件协调地工作,它的性能决定了整个微型计算机的性能和系统结构。因此,学习扣掌握微处理器的内部结构和工作原理是学习“微型计算机原理”的重要基础。本章首先重点介绍了808618088 CPU的内部结构、寄存器结构、引脚功能以及存储器管理等;之后从程序设计角度介绍了80x86系列微处理器内部寄存器结构及其使用方法;然后对80x86存储器管理方式(实方式、保护方式和虚拟8086方式)进行了介绍;最后分别简要介绍了80286

到Pentium CPU的内部结构特点。

8086/8088 CPU内部由总线接口单元BIU和执行单元EU两个独立工作的部件组成。BIU的功能是负责完成CPU与存储器或I/O设备之间的数据传送,具体操作包括取指令、存取操作数等。EU的功能是负责执行指令,要执行的指令直接从BIU的指令队列中得到,执行指令时若需要从存储器或I/O端口读取操作数,由EU向BIU发出请求,再由BIU对存储器或I/O端口进行访问,因此,EU不直接与外部发生联系。Bm和EU之间的工作既互相独立又互相配合,正是这种工作方式的并行性,使得8086/8088的存,弘操作和执行指令的操作在大多数情况下是同时进行的,从而大大提高了CPU的工作效率。

8086/8088CPU内部有14个16位寄存器。了解这些寄存器的结构和使用特点是进行汇编语言程序设计的基础,读者务必牢记它们的名称及其使用方法。这14个寄存器按功能可分为三大类:①8个通用寄存器:数据寄存器4个,即AX(AH/AL)、BX(BH/BL)、CX(CH/CL)和DX(DI-I/DL),对这4个数据寄存器,读者应注意它们各自的特定用途;地址指针寄存器2个,即堆栈指针寄存器sP和基址寄存器BP;变址寄存器2个,即源变址寄存器sI乖目的变址寄存器DI。②段

寄存器4个:代码段寄存器cs、数据段寄存器DS、堆栈段寄存器SS和附加数据段寄存器ES,它们分别用来存放代码段、数据段、堆栈段和附加数据段的段地址。③控制寄存器2个:指令指针寄存器p和标志寄存器FLAGS,其中p用来存放下一条要读取的指令在代码段内的偏移地址,FLAGS用来存放状态标志(6位)和控制标志(3位)。

为了对1M个存储单元进行管理,8086/8088采用了段结构的存储器管理的方法。每个存储单元都有其对应的逻辑地址(段地址:偏移地址)和物理地址。物理地址是由CPU内部总线接口单元BIU中的地址加法器根据逻辑地址产生的。由逻辑地址形成20位物理地址的方法为:段地址x10H+偏移地址。

8086/8088采用40引脚双列直插式封装。地址/数据(状态)引脚20个,电源和地线引脚3个,控制引脚17个,其中引脚24~31(8个控制引脚)在最大方式和最小方式下具有不同的功能。

对程序设计人员来讲,了解CPU内部寄存器结构并掌握其使用方法是进行汇编语言程序设计的关键和基础。寄存器可分为程序可见寄存器和程序不可见寄存器两大类。所谓程序可见寄存器,是指在汇编语言程序设计中可以通过指令来访问的寄存器。程序不可见寄存器是指一般用户程序中不能访问而由系统所使用的寄存器。本章从程序设计角度对80x86CPU内部程序可见寄存器的结构和使用方法作了较为详细的介绍,而对于那些程序不可见寄存器(系统使用)也作了简要说明。

存储器管理是由微处理器的存储器管理部件MMU提供的对系统存储器资源进行管理的机制。本章从应用角度出发,介绍80x86系列微处理器的存储器管理机制。从8086/8088到Pentium,80x86系列微处理器的存储器管理机制有了较大变化。8086/8088只有一种存储器管理方式,即实地址方式(简称实访式);80286CPU具有两种工作方式,即实方式和保护虚地址方式(简称保护方式);80386及其后续CPU有三种工作方式,即实方式、保护方式和虚拟8086方式。

0286CPU是比8086/8088更先进的16位微处理器芯片,采用68引线4列直插式封装。80286首次引入了段式虚拟存储管理机制,在芯片内集成了存储器管理和虚地址保护机构,从而使80286CPU能在两种不同的工作方式(实方式和保护方式)下运行。

80386是与8086/8088、80286兼容的高性能32位微处理器。该芯片以132条引线网络阵列式封装。80386具有三种工作方式:实方式、保护方式(段页式虚拟存储器管理方式)和首次引入的虚拟8086方式。

80486为第二代32位微处理器,以168个引脚网络阵列式封装。从结构组成上看,80486芯片实际上是将80386、80387及8 KB超高速缓存集成在一起,因此具有80386的所有功能。

Pentium系列微处理器为第五代微处理器芯片,引入了超标量流水线等新的体系结构,使微处理器的性能得到了较大幅度的提高。

本章涉及的概念较多,初学者往往觉得难于理解和记忆,但本章内容是后续学习汇编语言程序设计以及接口技术的基础,读者应该设法掌握。对于一时难于理解和掌握的内容,建议读者在后面学习有关章节时再回到本章对有关内容进一步理解和掌握。

习题

1.简述8086/8088 CPU中BIU和EU的作用,并说明其并行工作过程。 2.808618088 CPU内部有哪些寄存器?其主要作用是什么?

3.8086/8088 CPU中有哪些寄存器可用来指示操作数在存储器中某段内的偏移地址?

4.808618088 CPU中标志寄存器FLAGS有哪些标志位?它们的含义和作用如何?

5.808618088 CPU的地址总线有多少位?其寻址范围是多少?

6.什么叫指令队列?8086/8088CPU中指令队列有什么作用?其长度分别是多少?

7.Intel 8086与8088有何区别?

8.8086 CPU使用地址锁存信号ALE将地址A15~~与数据D15~Do分开的工作原理?

9.什么是逻辑地址?什么是物理地址?若已知逻辑地址为BA00:A800,试求物理。

10.简述堆栈指针寄存器SP的功能及堆栈的操作过程。

11.80286CPU由哪几个独立部件组成?各有何功能?与8086CPU相比有哪些改进与提高?

12.80286在实方式和保护方式下可寻址的存储空间分别为多少? 13.80386 CPU有哪几种工作方式?各有何特点?

14. 80386CPU有哪几部分独立的部件组成啊?各有何功能?试说明80386和80286的先进之处。

1580386CPU有几种状态标志位?有那几个控制标志位?其中那几个控制标志位与80286相兼容?那几个控制标志位是80386新增的?

16.简述80386的GDTR和LDTR的作用。

17. 80486CPU由那几个独立的部件组成的?各部件功能如何?与80386相比如何?

18. pentumn系列微处理器的体系结构胶80486有哪些主要突破?

第4章 本章小结

本章详细介绍了80x86指令系统中全部指令的功能和应用。指令就是计算机能执行的、由人发布的命令。显然,指令一定要能为计算机所识别和接受,因而它必须具有一定的格式。指令中惟一不可缺少的是操作码,而指令中的操作数则是指令的操作对象。

操作数可以直接放在指令中,也可以放在别的地方如寄存器或存储单元中,只要在指令中指明该地方或提供获得该地方的“线索”即可,这就是指令的寻址方式,即寻找操作数的方法。本章详细介绍了80x86系统的两大类寻址方式,即数据寻址方式和地址寻址方式。数据寻址方式有四类12种寻址方式。这四类寻址方式是:立即数寻址方式、寄存器寻址方式、存储器寻址方式和输脯出(I/o)端口寻址方式。其中存储器寻址方式包括:①直接寻址方式;②寄存器间接寻址方式;③寄存器相对寻址方式;④基址变址寻址方式;⑤基址变址相对寻址方式;⑥比例因子变址寻址方式;⑦基址比例变址寻址方式;⑧相对基址比例变址寻址方式。而输2,d辅r出端口寻址方式有端口直接寻址和端口间接寻址两种。地址寻址方式是与转移地址有关的寻址方式,它有四种寻址方式,即段内直接寻址、

段内间接寻址、段间直接寻址和段间间接寻址。这些寻址方式对于理解和记忆80x86指令系统有很大帮助,读者应很好掌握。

本章重点逐条解释了8086指令系统中六大类全部指令(包括指令前缀)’。8086指令系统共有指令助记符115个,如果按机器代码扩展开来可达3000条以上。这么多的指令要正确无误地记忆,显然并非易事。其难点在于:第一,指令之间只有很细小的差别,容易互相混淆;第二,初学时容易写出指令系统中不存在的非法指令,例如“MOV[BX】,[SI】'就是一条非法指令。为此,读者应特别注意指令系统中指令的分类以及指令中操作数允许的寻址方式,使所有的指令能够有机地串在一条条的线上,不致于混乱。汇编语言是助记符语言,因此,在记忆指令时读者应尽可能地根据其英文含义来帮助记忆。

习题

1.指出下列指令中源操作数的寻址方式。

(1)MOV BX,2000H (2)MOV BX,[2000H]

(3)MOV BX,【SI】 (4)MOV BX,[SI+2000H] (5)MOV [BX+SI】,AL (6)ADD AX,[SI+2000H] (7)MUL BL (8)SUB AX,BX

(9)IN AL,DX (10)PlUSH WORD PTR[BP+10H] (11)MOV CL,LENGTHVARl (12)MOV BL,OFFSET VARI 2.指出下列指令是否正确,若不正确请说明原因。 (1)MOV DS,0100H (2)MOV BP,AL (3)XCHG AH,AL (4)OUT 310H,AL (5)MoV BX,[BX] (6)MoV ES:[BX+DI],AX (7)MOV AX,[SI+DI] (8)MoV SS:[BX+SI+100H],BH (9)AND AX,BL (10)MOV DX,DS:[BP] (11)ADD [SI],20H (12)MOV 30H,AL (13)PUSH 2000H (14)MOV [SI],[2000H] (15)MOV SI,AL (16)ADD [2000H],20H (17)MOV CS,AX (18)INC [DI]

(19)OUT BX,AL (20)SHL BX,3 (21)XCHG CX,DS (22)POPAL

3.写出下列指令中存储器操作数物理地址的计算表达式。

(1)MOV AL,[DI] (2)MoV AX,[BX+SI] (3)MOV 5[BX+DI],AL (4)ADD AL,ES:[BX] (5)SUB AX,[1000H] (6)ADC AX,[BX+DI+20010H] (7)MoV CX,[BP+SI] (8)INC BYTEPTR[DI]

4.若(DS)=3000H,(BX)=2000H,(SI)=0100H,(ES)=4000H,计算下列各指令中存储器操作数的物理地址。

(1)MOV [BX],AH (2)ADD AL,[BX+SI+lOooH] (3)MoV AL,[BX+SI] (4)SUB AL,ES:[BX] 5.若(CS)=E000H,说明代码段可寻址物理存储空间的范围。

6.设(SP)=2000H,(AX)=3000H,(BX)=5000H,执行下列程序片段后,问(sP)=?,(AX)=?,(BX)=?

PUSH AX PUSH BX POP AX

7.试比较SUBAL,09H与CMPAL,09H这两条指令的异同,若(AL)=08H,分别执行上述两条指令后(AL)=?(cF)=?(OF)=?(zF)=?

8.分别执行下列指令后,试求AL的内容及各状态标志位的状态。

(1)MoV AL,19H (2)MOV AL,19H

ADD AL,61H SUB AL,61H (3)MOV AL,5DH (4)MoV AL,7EH

ADD AL,0C6H SUB AL,95H

9.选用最少的指令,实现下述要求的功能。 (1)AH的高4位清0。 (2)AL的高4位取反。

(3)AL的高4位移到低4位,高4位清0。

(4)AII的低4位移到高4位,低4位清0。

10.设(BX)=6D16H,(AX)=1100H,写出下列三条指令执行后,AX和BX寄存器中的内容。

MOV CL,06H ROL AX,CL SHR BX,CL

11.设初值(AX)=0119H,执行下列程序段后(Ax)=?

MoV CH,AH ADD AL,AH DAA

XCHG AL,CH ADC AL,34H DAA

MoV AH,AL MoV AL,CH

12.指出下列程序段的功能。

(1)MOV CX,10

CLD

LEA SI,First LEA DI,Second REP MOVSB (2)CLD

LEA DI,[0404H] MoV CX,0080H XOR AX,AXREPSTOSW

13.设(BX)=6F30H,(BP)=0200H,(SI)=0046H,(SS)=2F00H,(2F246H)=4154H,试求执行xcHGBx,[BP+SI]后,(Bx)=?,(2F246H)=?

14.设(BX)=0400H,(DI)=003CH,执行LEABx,【BX+DI+0F62H]后,(Bx)=? 15.设(DS)=C000H,(C0010H)--0180H,(C0012H)=2000H,执行LDsSI,[10H]

后,(sI)=?,(DS)=?

16.已知(DS)=091DH,(SS)=IFA.AH,(AX)=1234H,(BX)=0024H,(CX)=5678H,(BP)=0024H,(SI)=0012H,(DI)=0032H,(09226H)=00F6H,(09228H)=lE40H,(1EAF6H)=091DH,试求单独执行下列指令后的结果。

(1)MOV CL,20H[BX][SI] ;(CL)=? (2)MOV [BP][DI],CX ;(1E4F6H)=? (3)LEA BX,20H[BX][SI] ;(BX)=?

MOV AX,2[BX] ;(AX)=? (4)LDS SI,[BX][DI]

MoV [SI],BX ;((SI))=? (5)XCHG CX,32H[BX]

XCHG 20[BX][SI],AX ;(AX)=? (09226H)=?

17.若cPU中各寄存器及洲参数如图4.30所示,试求独立执行如下指令后,cPu及RAM相应寄存器及存储单元的内容为多少。

(1)MOV DX,[BX+2] ;(DX)=? (BX)=? (2)PUSH CX ;(SP)=? ((SP))=? (3)MOV CX,BX ;(CX)=?(BX)=? (4)TEST AX,01 ;(AX)=?(CF)=? (5)MOV AL,[SI] ;(AL)=? (6)ADC AL,[DI] ;(AL)=?(CF)=? DAA ;(AL)=?

(7)INC SI ;(SI)=? (8)DEC DI ;(DI)=? (9)MOV [DI],AL ;((DI))=? (10)XCHG AX,DX ;(AX)=? (DX)=? (11)XOR AH,BL ;(AH)=? (BL)=? (12)JMP DX ;(IP)=?

18.设(DS)=2000H,(BX)=1256H,(SI)=528FH,偏移量=20A1H,(232F7H)=3280H,(264E5H)=2450H,试求执行下述指令后的结果。

(1)JMP BX ;(IP)=? (2)JMP TABLE[BX] ;(IP)=? (3)JMP [BX][SI] ;(IP)=?

19.8086/8088用什么途径来更新CS和m的值?

20.设(IP)=3D8FH,(CS)=4050H,(SP)=0F17CH,当执行CALL2000:0094H后,试指出(IP)、(cs)、(sP)、((sP))、((sP)+1)、((sP)+2)和((sP)+3)的内容。

第5章 本章小结

本章小结本章主要介绍了宏汇编程序提供的伪指令、宏指令以及8086汇编语言程序的设计方法,并阐述了汇编语言上机的步骤和方法,同时还介绍了如何发挥80x86新增加或增强的指令在程序设计中的优势。

汇编程序在对源程序进行汇编的过程中,需要有一些命令告诉汇编程序如何对汇编语言源程序进行汇编,编程者也要借助一些命令说明并初始化数据区、堆栈区和代码区,以便更好地组织代码。这正是伪指令的作用。在本章中所介绍的伪指令都是最为常用的,读者应加以掌握。

掌握汇编语言程序的设计,主要是靠设计者对所要解决问题的深入理解,对

计算机指令的熟练掌握,以及在实践中获得的经验、技巧与逻辑思维能力。

在本章中,分别介绍了顺序程序、分支程序、循环程序和子程序等的设计方法,并列举了一些例子,从中给出解决问题的思路。读者应对每个例子的思路详加推敲,才能获得一些方法或技巧。

习题

1.画图说明下列语句所分配的存储空间及初始化的数据值。

(1)BYTE_VAR DB ‘BYTE’,12,一12H,3DUP(0,7,2DUP(1,2),7) (2)WORD_VAR DW 5DUP(0,1,2),7,一5,’BY’,’TE’,256H

2.假设程序中的数据定义如下:

PARTNO DW ? PNAME DB 16DUP(?) COUNT DD ?

PLENTH EQU $一PARTNO

PLENTH的值为多少?它表示什么意义?

3.有符号定义语句如下: BUFF DB 1,2,3,‘123’ EBUFF DB 0

L EQU EBUFF-BUFF

则L的值是多少?

4.假设程序中的数据定义如下:

LNAME DB 30 DUP(?) ADDRESS DB 30DUP(?) CITY DB 15DUP(?) CODE_LIST DB 1,7,8,3,2

(1)用一条MOV指令将LNAME的偏移地址放入BX。 (2)用一条指令将CODELIST的头两个字节的内容放入sI。

(3)写一条伪指令定义符使CODE_LENGHT的值等于CODE_LIST域的实际长

度。

5.对于下面的数据定义,试说明三条MOV指令的执行结果。

TABLEA DW 10DUP(?) TABLEB DB 10DUP(?) TABLEC DB ‘1234’

MOV AX,LENGTH TABLEA ;(AX)= MOV BL,LENGTH TABLEB ;(BL)= MOV CL,LENGTH TABLEC ;(CL)=

6.对于下面的数据定义,各条MOV指令单独执行后,有关寄存器的内容是什么?

FLDB DB ?

TABLEA DW 20 DUP(?) TABLEBDB ‘ABCD’

(1)MOV AX,TYPE FLDB ;(AX)= (2) MOV AX,TYPE TABLEA ;(AX)= (3) MOV CX,LENGTH TABLEA ;(CX)= (4) MOV DX,SIZE TABLEA ;(DX)= (5) MOV CX,LENGTH TABLEB ;(CX)=

7.试说明下述指令中哪些需要加上盯R伪指令定义符:

BVAL DB 10H,20H· WVAL DW 1000H (1)MOV AL,BVAL (2)MOV DL,[BX] (3)SUB [BX],2 (4)MOV CL,WVAL

8.编写一宏定义BXCHG,将一字节的高4位与低4位交换。 9.已知宏定义如下:

XCHG0 MACRO A,B

MOV AX,A

XCHG AL,B ENDM

OPP MACRO P1,P2,P3,P4

XCHG0 P1,P4 XCHG0 P1,P3 ENDM

展开宏调用:OPPBX,BL,CH,CL。

10.将AX寄存器中的16位数分成4组,每组4位,然后把这四组数分别放在AL、BL、CL和DL中。

11.试编写一程序,要求比较两个字符串STRINGl和STRING2所含字符是否相同,若相同则显示“MATCH”,若不相同则显示“NOMATCH”。

12.试编写一程序,要求能从键盘接收一个个位数N,然后响铃N次(响铃的ASCU码为07H)。

13.编写程序,将一个包含有20个数据的数组M分成两个数组:正数数组P和负数数组N,并分别把这两个数组中数据的个数显示出来。

14.试编制一个汇编语言程序,求出首地址为DATA的100DH字数组中的最小偶数,并把它存放在AX中。

15.试编写一汇编语言程序,要求从键盘接收一个4位的十六进制数,并在终端上显示与它等值的二进制数。

16.数据段中已定义了一个有n个字数据的数组M,试编写一程序求出M中绝对值最大的数,把它放在数据段的M+2n单元中,并将该数的偏移地址存放在M+2(叶1)单元中。

17.在首地址为DATA的字数组中,存放了100H个16位补码数,试编写一程序,求出它们的平均值,放在Ax寄存器中;并求出数组中有多少个数小于此平均值,将结果放在BX寄存器中。

18.已知数组A包含15个互不相等的整数,数组B包含20个互不相等的整数。试编制一程序,把既在A中又在B中出现的整数存放于数组c中。

19.从键盘输入一系列字符(以回车符结束),并按字母、数字及其他字符分

类计数,最后显示出这三类的计数结果。

20.编写程序,将字节变量BVAR中的压缩型BCD数转换为二进制数,并存入原变量中。

21.编写程序,求字变量w1和W2中的非压缩BCD数之差(w1一W2、W1>w2),将差存到字节变量B3中。

22.编写求两个4位非压缩BCD数之和,将和送显示器显示的程序。 23.编写程序,将字节变量BVAR中的无符号二进制数(0~FFH)转换为BCD数,在屏幕上显示结果。

24.设有字无符号数x、Y,试编制求z=lx—Yl的程序。

25.从键盘输入一字符串(字符数>1),然后在下一行以相反的次序显示出来(采用9号和10号系统功能调用)。

26.已知BUFl中有N1个按从小到大的顺序排列互不相等的字符号数,BUF2中有N2个从小到大的顺序排列互不相等的字符号数。试编写程序将BUFl和BuF2中的数合并到BUF3中,使在BUF3中存放的数互不相等且按从小到大的顺序排列。

27.编制计算N个(N<50)偶数之和(2“+6+?)的子程序和接收键入N及将结果送显示的主程序。要求用以下3种方法编写:(1)主程序和子程序在同一代码段;(2)主程序和子程序在同一模块但不在同一代码段;(3)主程序和子程序各自独立成模块。

28.假设已编制好5个歌曲程序,它们的段地址和偏移地址存放在数据段的跳跃表SINGLIST中。试编制一程序,根据从键盘输入的歌曲编号1~5,转去执行5个歌曲程序中的某一个。

第6章 本章小结

本章主要介绍了用做内存的半导体存储器的分类、工作原理、常用芯片以及它们与CPU的连接与容量扩展等。

半导体存储器主要分为随机读写存储器RAM和只读存储器ROM两大类。RAM又可分为静态RAM(SRAM)和动态RAM(DRAM)。RAM的内容在断电后会丢失,动态RAM的内容需要定时刷新。对于ROM,断电后信息不会丢失,常见的有掩膜式

ROM(MROM)、可编程ROM(PROM)、可擦除可编程ROM(EPROM)和电擦除可编程ROM(E2pROM)。本章对上述各种类型半导体存储器的基本存储电路和典型芯片都作了介绍。

半导体存储器的技术指标主要有存储容量、存取时间、存储周期、功耗、可靠性、集成度和性价比等。

半导体存储器芯片一般由存储体和外围电路两大部分组成。外围电路主要包括地址译码电路和读/写控制电路。芯片内部的地址译码主要有两种方式,即单译码方式和双译码方式。单译码方式适用于小容量的存储器芯片;双译码方式适用于较大容量的存储器芯片。

微机系统的存储器是由多个存储芯片共同构成的。对存储芯片的扩展主要有位扩展、字扩展和字位同时扩展三种方法。位扩展法用于存储芯片的字数满足要求而位数不够的情况;字扩展法用于存储芯片的位数满足要求而字数不够的情况;字数和位数都需要扩展时,就要采用字位同时扩展法。扩展后的存储器通过三总线接入系统,存储器与数据、控制总线的连接较简单,与地址总线连接时要注意一般把地址总线分为高位地址线和低位地址线两部分。低位地址线用于片内地址译码;高位地址线用于片间地址译码,产生片选信号。

在本章的最后介绍了几种新型存储器,供读者参考。

习题

1.半导体存储器从功能上分为哪两大类?每类又包括哪些类型的存储器?各有何特点?

2.用下列RAM芯片构成32KB存储器模块,各需多少芯片?16位地址总线中有多少位参与片内寻址?多少位用做片间寻址?

(1)1Kx4位(2)2Kxl位(3)2Kx8位(4)16Kx8位

3.某一RAM芯片,其容量为1024x8位,地址线和数据线分别为多少根? 4.已知某RAM芯片的引脚中有1l根地址线,8位数据线,该存储器芯片的容量为多少字节?若该芯片所占存储空间的起始地址为2000H,则其结束地址为多少?

5.在有16根地址总线的微机系统中,根据下面三种情况设计出存储器片选

的译码电路及其与存储器芯片的连接电路。

(1)采用1Kxl位存储器芯片,形成4KB的存储器系统。 (2)采用8Kx4位存储器芯片,形成32KB的存储器系统。 (3)采用8Kx8位存储器芯片,形成64KB的存储器系统。

6.某8位微机的地址总线为16位,设计12KB的存储器系统,其中ROM占用从0000H开始的8KB,RAM占用从2000H开始的4KB,存储器芯片分别选用Intel2716和2114,画出存储器系统连线图。

7.现有Intel6264(8K×8)静态RAM存储器芯片若干,要求设计一个64K×8的存储器系统,其地址总线为16位(舢~A15),地址范围为0000~FFFFH。

8.某一微机系统的CPU字长为8位,地址信号线为16根。上电复位后,程序计数器PC指向0000H地址的存储单元。要求使用2716EPROM芯片(2KxS)组成4KB的ROM存放系统监控程序,并预留4KB的用户ROM空间;使用2114SRAM芯片(1Kx4)组成8KB系统及用户RAM。试设计该机的存储器系统。

9.由8088CPU组成一个小型计算机系统,有32KBROM,其地址范围为00000~07FFFH,有8KBRAM,其地址范围为08000~09FFFH,如果ROM选用芯片2764(8KxS),RAM选用2114(1K×4),试画出存储器系统连线图。

10.在8088系统中设计一个256K×8位的存储器系统,其中数据区为128K×8位,选用芯片628128(128K×8位),置于CPU寻址空间的最低端,程序区为128K×8位,选用27256(32K×8位),置于寻址空间的最高端,写出地址分配关系,画出所设计的原理电路图。

第7章 本章小结

I/O接口是介于主机和外设之间的一种缓冲电路。主机与I/O设备之间交换的信息可分为数据信息、状态信息和控制信息三类。在接口中,这三种信息是在不同的寄存器中分别存放的。一般称这些寄存器为I/O端口,每个端口有一个端口地址。在微型计算机系统中常用两种I/O端12编址方式:一种是I/O端口与内存单元统一编址,即由I/O端口地址和存储单元地址共同构成一个统一的地址空间;一种是I/O端口与内存单元独立编址,即内存地址空间和I/O地址空间相对独立。80x86CPU组成的微机系统采用独立编址方式。在8086(8088)

系统中,有20根地址线对内存寻址,内存的地址范围是00000H~FFFFFH;用低16位地址线对I/O端口寻址,I/O端12的地址范围是0000H~H7FFH,I/O端口地址译码的一般原则是把用于I/O端口寻址的地址线分为高位地址线和低位地址线两部分,将低位地址线直接连到I/O接口芯片的相应地址线,用于选中片内的端口;将高位地址线与CPU的控制信号组合,经地址译码电路产生I/O接口芯片的片选信号。

在微型计算机系统中,CPU与外设之间的数据传送方式主要有程序传送方式(无条件传送方式和查询传送方式)、中断传送方式和直接存储器存取(DMA)传送方式,本章重点介绍了中断方式。

在CPU执行程序的过程中,出现了某种紧急或异常的事件,CPU需暂停正在执行的程序,转去处理该事件,并在处理完毕后返回断点处继续执行被暂停的程序,这一过程称为中断。引发中断的事件称为中断源。当有多个中断源同时发出中断请求时,CPU要按中断优先级顺序予以响应和处理,通常用软件查询、硬件排队电路和专用中断控制芯片三种方法来确定中断源的优先级别。高级别的中断请求打断正在进行的低级别中断服务的过程称为中断嵌套。

8086/8088的中断源分为两大类,即硬件中断(外部中断)和软件中断(内部中断)。软件中断主要有除法错中断、溢出中断、单步中断、断点中断和由中断指令INTn引起的中断;硬件中断有非屏蔽中断和可屏蔽中断两种。优先级顺序由高到低依次为:软件中断(除单步中断外)、非屏蔽中断、可屏蔽中断和单步中断。

中断的过程主要包括中断请求、中断响应、保护断点、中断处理和中断返回。CPU响应中断后,根据中断类型号在中断向量表中找到相应的中断服务程序的入12地址,转入中断处理。对于8086/8088系统的所有软件中断及非屏蔽中断,其中断类型号由CPU内部自动提供,可屏蔽中断的中断类型号由外设在第二个中断响应周期提供。本章还介绍了中断服务程序的基本结构以及将中断服务程序入口地址置入中断向量表的方法。

8259A是可编程中断控制器芯片,用于管理和控制80x86的外部中断请求。单片8259A可管理8级中断,采用级联方式最多可以管理64级中断。本章对8259A的结构、各种工作方式以及编程方法都作了介绍。

习题

1.简述输入/输出接12的组成及作用。

2.CPU与外设交换数据的传送方式有哪几种?各有何特点?

3.当接口电路与系统总线相连时,为什么要遵循“输入要经三态,输出要锁存”的原则?

4.说明接口电路中控制寄存器与状态寄存器的功能。 5.什么叫中断?什么叫中断源?

6.CPU响应可屏蔽中断INTR的条件是什么? 7.什么叫屏蔽中断和允许中断?怎样实现?

8.请说明怎样为一个外设编写中断服务程序,并写出程序框图。 9.一般来说中断的处理过程有哪几步?中断处理程序包含哪几部分? 10.简述可编程中断控制器8259A的主要功能。

11.何谓初始化命令字?8259A有哪几个初始化命令字?各命令字的主要功能是什么?

12.何谓操作命令字?8259A有哪几个操作命令字?各命令字的主要功能是什么?

13.初始化时设置为非自动结束方式,那么在中断服务程序结束时必须设置什么操作命令?如果不设置这种命令会发生什么现象?

14.中断向量表的功能是什么?简述CPU利用中断向量表转入中断服务程序的过程。

15.若8086从8259A中断控制器中读取的中断类型号为76H,其中断向量在中断向量表中的地址指针是多少?

16.设某打印机接口卡有下列端口:数据口,地址为0F5H;状态口,地址为0F6H,状态寄存器D7=l为“忙”;控制口,地址为0F7H,控制寄存器Do=l为接通打印机,控制寄存器的Do=0为断开打印机。请编写下列功能的程序段:(1)发送数据;(2)检查打印状态;(3)接通打印机。

第8章

本章小结

接口电路是联系主机与各种I/O设备的桥梁。接口技术是微型计算机应用中的重要技术。本章从应用角度介绍了与80x86系列微处理器配套使用的通用可编程接口芯片,包括可编程定时/计数器8253/8254,并行接口芯片8255A,串行接口芯片8251A,数/模转换芯片DAC0832和DACl210以及模/数转换芯片ADC0809和AD574。

随着微型计算机技术的发展,与其配套的各种接口芯片大量出现,我们不可能也没有必要介绍更多的接口芯片。通过本章的学习,读者不仅要掌握所介绍的各种常用可编程接口芯片的工作原理与使用方法,更重要的是要能够触类旁通,以便日后遇到其他芯片时能够很快掌握其使用方法。

8253/8254是Intel公司生产的可编程通用硬件定时/计数器芯片。它采用双列直插式24引脚封装,芯片内有三个相互独立的16位定时/计数器,每个定时/计数器具有六种不同的工作方式。当对已知的脉冲进行计数时芯片用做定时,当对外部事件进行计数时用做计数。8253/8254芯片上有两根地址线A0和Al,用于对片内三个定时/计数器的计数寄存器和一个共用的控制寄存器进行访问。8253在工作之前,用户首先必须对某一计数器(计数器0~-2)进行初始化编程。当给8253中的多个计数器进行初始化编程时,其顺序可以任意,但对每个计数器进行初始化时必须先写入控制字以确定其工作方式,然后写入计数初值。由于8253的控制寄存器共同占用一个地址号,因此要靠控制字的最高两位来确定将控制信息送入哪个计数器的控制寄存器。

8255A是Intel公司为其80系列微处理器生产的通用可编程并行输入/输出接口芯片,采用双列直插式40引脚封装,具有A、B、C三个并行端口。芯片上有A0和A1两根地址线,用于对A、B、C三个独立的并行数据端口以及一个公共的控制端口进行访问。8255具有三种工作方式:方式O(基本输入/输出),方式1(选通输入/输出)和方式2(选通双向输入/输出)。三个并行端口中,端口A可工作于方式0、方式1和方式2,端口B只能工作于方式0和方式1,而端口C仅工作于方式0。当端口A和端口B作为选通输入或输出的数据端口(端口A工作于方式1或2,端口B工作于方式1)时,端口C的指定位与端口A和端口B配合使用,用做控制信号或状态信号。8255A在使用前要先写入一个工作方式控

制字,以指定A、B、C三个端口各自的工作方式。8255A的C口具有位控功能,即端口C的8位中的任一位,都可通过CPU向8255A的控制寄存器中写入一个按位置位/复位控制字来置1或清0,而C口中其他位的状态不变。需要说明的是,C口的按位置位/复位控制字必须跟在方式选择控制字之后写入控制字寄存器,即使仅使用该功能,也应先选送一个方式控制字。

8251A是Intel公司生产的通用串行同步/异步接口芯片,采用双列直插式28引脚封装。该芯片既可以用于异步通信,也可以用于同步通信。芯片内部具有可读可写的数据寄存器、只可写的控制寄存器和只可读的状态寄存器。数据寄存器用于存放CPU要发送的数据或8251A接收到的数据。控制寄存器用于存放方式控制字和命令控制字,方式控制字用来确定8251A的通信方式(同步或异步)、校验方式(奇校验、偶校验或不校验)、数据位数(5、6、7或8位)及波特率参数等,方式控制字只需要写入一次;命令控制字使8251A进入规定的工作状态以准备发送或接收数据,它应该在写入方式控制字后写入,用于控制8251A的工作,可以多次写入。方式控制字和命令控制字本身无特征标志,也没有独立的端口地址,8251A是根据写入先后次序来区分这两者的:先写入者为方式控制字,后写入者为命令控制字,所以对8251A初始化编程时必须按一定的先后顺序写入方式控制字和命令控制字。状态寄存器存放8251A的状态信息,供CPU查询。与所有的可编程芯片一样,8251A在使用前也要进行初始化编程。初始化在8251A处于复位状态时开始。其过程为:首先写入方式控制字,以决定通信方式、数据位数、校验方式等。若是同步方式则紧接着送入一个或两个同步字符,若是异步方式则这一步可省略,最后送入命令控制字,就可以发送或接收数据了。初始化过程的信息全部写入控制端口,特征是C/D=1,即地址线Ao=l(因为C/D接至A0)。8251的状态信息也是通过控制端读入CPU的。

A/D转换器把传感器输出的模拟量转换成计算机能够处理的数字量。D/A转换器则把数字量转换成模拟量,以实现对被控物理量的控制。集成D/A、A/D芯片类型很多,本章介绍了美国国家半导体公司生产的8位D/A芯片DAC0832和12位的D/A芯片DACl210,以及8位A/D转换芯片ADC0809和12位的A/D转换芯片AD574。

习题

1.试述8253的基本功能及其工作原理。

2.试总结对比8253的六种工作方式的主要不同点。 3.试总结门控信号GATE在8253的六种工作方式中的作用。

4.设8253的计数器0、计数器1、计数器2以及控制寄存器的端口地址为40H~43H。如果将计数器0设置成方式3,计数器1设置为方式2,计数器0的输出作为计数器1的时钟输入;CLKo连接总线时钟,频率为4.77MHz,计数器1输出OUTl约为40Hz。编写实现上述要求的初始化程序。

5.设8253的计数器0、计数器1、计数器2和控制口的地址为460H~463H。设已有信号源频率为1MHz,现要求用该芯片定时1秒,设计出硬件连线图,并编写初始化程序。

6.简述8255A的基本组成及各部分的功能。

7.假设8255A的端口地址为60H~63H,试编写下列情况下的初始化程序: (1)将A口、B口设置成方式0,A口和C口为输入口,B口为输出口。 (2)将A口设置成方式1输入,PC6、PC7输出;B12设置为方式1输入。 8.8255A在复位后,各端口处于什么状态?为什么这样设计?

9.如果需要8255A的PC7输出连续方波,如何用C口按位置位复位控制字编程实现?

10.试设计用8255A实现用8个LED显示8个开关当前状态(开关闭合时LED亮,开关打开时LED灭)的接口电路,并编写IBM PC汇编语言程序实现该功能。11.设有24个LED,要求其轮流不断地显示。请用8255A设计一接口电路,并编写控制程序。

12.如何理解同步通信和异步通信的概念和基本特点。

13.简述常用的串行通信I/O接口标准RS一232C的含义及功能。 14.异步通信时一帧字符的格式是怎样定义的?

15.异步通信的一帧字符有8个数据位,无奇偶校验位,一个停止位。如果波特率为9600b/s,则每秒能传送多少个字符?

16.简述8251A内部各功能模块的作用。

17.说明8251A异步方式与同步方式初始化流程的区别。

18.已知8251A的收、发时钟(RxC、TxC)频率为38.4kHz;帧格式为:数据位7位,停止位1位,偶校验;波特率为600b/s。试编写初始化程序。

19.试编写通过8251A输出字符“W”到CRT显示终端的程序。具体要求为:8251A工作于异步方式;帧格式为:7位数据位,偶校验,一个停止位;波特率因子为64;设8251A控制端口地址为DAH,数据端口地址为D8H,字符“W”的ASCII码为57H。

20.利用DAC0832输出周期性的方波和三角波,画出原理图并编写控制程序。 21.试设计DACl210与16位数据总线的接口电路,要求12位数据一次写入,并编写输出周期性锯齿波的程序。

22.试设计使用ADC0809通过查询方式进行A/D转换的接口电路;若8个模拟通道的地址为280H~287H,试编写对8路模拟信号循环采样一遍的程序,采集数据存入数据区BUFF中。