《2018微机期末自测题--答案版.docx》由会员分享,可在线阅读,更多相关《2018微机期末自测题--答案版.docx(19页珍藏版)》请在课桌文档上搜索。
1、微机原理及应用期末自测题一、基本概念与术语1、现代计算机中表达信息采用二进制数进行编码,8086是16位计算机。2、8086地址线有20条,可直接寻址的空间最大为IMB。3、总线周期是指CPU访问一次总线的时间;基本总线周期有4个T状态;TW状态是指等待周期。4、8086CPU允许的I/O地址线最多可达16条,最大寻址I/O空间为64KB58086CP由总线接口单元(BlU)和执行单元(EU)两部分组成,其功能为总线接口单元(BIU)负责控制存储器与MO的读写,执行单元(EU)从指令队列中取出指令并执fio其中8086CPU中标志寄存器的作用是存放6位状态标志位和3位控制标志位,指令队列的作用
2、是,20位地址加法器的作用是将分段地址转换为物理地址O6、代码段物理地址由CPU的CS、S两个寄存器确定。堆栈段物理地址由CPU的_SS、SP两个寄存器确定。7、8086CPU预取指令存放于指令流字节队列;段寄存器CS和指令指针寄存器巫_的内容始终指向顺序存储的下一字节指令。8、8086中断源有256个。中断向量是(中断服务程序入口地址),8086中断服务程序入口地址由CS、IP组成。中断类型号为20H,其中断向量为20H*4=80Ho9、8086CPU中断源包含硬件中断和软件中断,断点中断、溢出中断、单步中断、指令中断除数为0的中断属于软件中断。10、I/O指令IN/OUT,传送数据的寄存器
3、为AX,间接寻址时使用寄存器DX,其中INALzDX的含义是从DX所指的端口读取一字节到AL。OUT60HzAL的含义是一将AL中的一字节输出到60H端口o11、一片8259A可以管理8级中断:3片8259A可以管理3*8-2=22级中断。12、硬件中断是(外部引发,随机的,执行总线周期,中断类型码由中断控制器提供),软件中断是(内部引发,确定的,不执行总线周期,中断类型确定确定)软件中断优先级与硬件中断优先级相比,(软件中断优先级)的级别高。13、在中断服务程序结束前,为正确返回,必须设置一条指令IRET.在子程序调用结束前,为正确返回,必须设置一条指令RET.14、若中断控制器8259的中
4、断请求寄存器IRR状态为10100000B,说明中断信号线IR7和IR5有中断请求信号。SR状态为Io100ooob说明中断源S7和55正在被服务。15、可编程定时器8253的地址有4个。共有3独立定时通道。工作方式有个。16、并行接口8255有个数据端口,有3种工作方式。17、假设8253的端口地址为40H43H,那么控制端口地址为43H,通道0、1、2的端口地址为40H、41H42H。18、假设8255的端口地址为330H333H,控制端口地址为333H,端口A、B、C的地址为330H、331H、332H。19、定时器8253的门控信号GATE作用是控制计数器的启动或停止计数,CLK端的作
5、用是输入定时脉冲或计数脉冲信号,OUT端作用是输出波形。20、初始化定时器8253需要先写控制字(工作方式),后写计数初值。23伪指令的作用是一指出汇编程序如何对源程序进行汇编,如何定义变量,分配存储单元,以及提示程样开始和结束等,不产生机器代码。21、指令性语句(由CPU执行),(有对应的)机器码,汇编时(产生)机器代码;伪指令的作用是(说明性语句),汇编时(不产生)机器代码。22、输入输出指令中,数据寄存器由(八)寄存器指出。A)AL/AXB)BXC)CXD)DX23、以下关于可编程计数/定时器8253说法错误的是(D)。A) .有3个独立的16位计数/定时器B) .每个计数/定时器都有6
6、中工作方式C) .每个定时/计数器都有时钟输入CLK、定时输出OUT和门控信号GATAD) .每个定时/计数器都用二进制计数,不能用BCD码计数24、汇编语言程序中用于指定段和段寄存器之间关系的伪指令是(八)0A)ASSUMEB)EQUC)SEGMENTD)ORG25、下列指令中,能够实现当操作结果为零,转向标号GooN功能的是(D)。A)JBGOONB)JAGOONC)JLGOOND)JZGOON26、在8255三种工作方式中,方式1和方式2需要提供“握手”信号,该信号由(C)端口提供。A)PA端口B)PB端口QPC端口D)PA、PB端口二、简单应用与简答题1、简述微型计算机的组成。微型计算
7、机是由微处理器、存储器、输入/输出接口电路和系统总线构成的裸机系统。微处理器:进行算术和逻辑运算,完成内部与外部控制功能;存储器存储代码与数据信息;输入/输出接口电路实现外设与CPU信息交换。总线将各个部件互联。2、总线分为哪儿种类型?微型计算机采用总线结构有什么优点?(I)分为地址总线,数据总线与控制总线三类,又称三总线。(2)微型计算机的三总线结构是一个独特的结构。采用总线结构,系统中各功能部件之间的相互关系,变成了各功能部件面向总线的单一关系。一个部件只要符合总线标准,就可以连接到采用这种总线标准的系统中,使系统功能得到扩展。3、8086CPU在内部结构上由哪几部分组成?其功能是什么?8
8、086的内部结构一成两部分:总线接口部件BIU,负责控制存储器读写。执行部件EU,EU从指令队列中取出指令并执行。4、8086的总线接口部件由那几部分组成?其作用是什么?8086的总线接口部件主要由下面几部分组成:4个段寄存器CS/DS/ES/SS,一个16位的指令指针寄存器IP,一个20位地址加法器,6字节的指令队列。5、8086的执行单元(部件)由那几部分组成?有什么功能?8086的执行单元部件主要由下面几部分组成:控制器、算数逻辑单元、标志寄存器、通用寄存器组1)控制器,控制指令的读取、指令译码、指令的执行等。(2)算数逻辑单元ALU,根据控制器完成8/16位二进制算数与逻辑运算。(3)
9、标志寄存器,使用9位,标志分两类,其中状态标志6位,存放算数逻辑单元ALU运算结果特征;控制标志3位,在某些指令操作中起控制作用。(4)通用寄存器组,用于暂存数据或指针的寄存器阵列。6、8086内部有哪几个通用寄存器?作用是什么?四个16位数据寄存器AX、BX.CX、DX,二个指针寄存器SP、BP,二个变址寄存器SI、DI0073H这2个单元。26、简述定时器/计数器芯片8253的主要功能。说明OUT、CLOCK与GATE信号的作用。(1)三个独立16位计数器;6种工作方式;二进制计数与BCD码计数;单一5V供电;最高计数速率2.6Mhzo(2)每个计数器通过3个引腿和外部联系,1个为时钟输入
10、端CLK,1个为门控信号输入端GATE,别1个为输出端OUT。27、定时器8253内部有几个独立通道?8253有几种工作方式?8253内部有三个独立16位计数器;6种工作方式。28、定时器8253内部计数器是16位,数据线为8条,如何写入16位计数初值?需要使用两条输出指令来完成,而且规定先送低8位数据,后送高8位数据。29、初始化定时器8253的步骤是什么?若8253端口地址为200H-203H,对应的端口是哪个?(1)对每个通道,先写8253工作方式,后写计数初值。(2)若8253端口地址为200H-203H,通道0或计数器0端口地址为:200H通道1或计数器1端口地址为:201H通道2或
11、计数器2端口地址为:202H控制端口地址为:203H30、并行接口8255有几个数据端口?若端口地址为3OOH-3O3H,对应的端口是哪个?端口C除了可做数据口外,还有什么功能?(1)并行接口8255有3个数据端口:PA,PB,PC.(2)端口地址为300H-303HPA端口地址:300HPB端口地址:301HPC端口地址:302H控制端口地址为:303H(3)根据端口工作方式确定控制字,并将其写入控制端口。31、假设8255A的端口A工作于方式0,外设需要提供两个联络信号,一个为输出选通,一个为外设就绪信号输入,试选择端口并说明理由。(1)端口C可以分为两组,提供控制信号和状态信号;(2)把
12、端口C的高4位规定为输出口,例如用PC7输出选通;把端口C的低4位规定为输入口,例如用PCO输入,作为外设就绪信号输入。32、8255的3个端口24条外设数据线有什么特点?(1)24条数据线分为端口A、端口B、端口C,其中端口C可以分为两组。(2)只有端口A可以工作在方式2(选通双向);(3)端口C在方式1或方式2常常配合端口A和端口B工作,某些特定位提供控制信号和状态信号,剩余位仍然为方式Oo三、编程应用题1、编程计算(X+Y)*10)+Z),X、Y、Z都是16位无符号数,结果存在RESULT开始的单元。MOVDXzOMOVAXzXADDAX,YADCDXzOH;考虑进位,X+YMOVBXz
13、OAHMULBX;乘积在DXzAX中,(X+Y)*10ADDAX,ZADCDXQH;考虑进位z(X+Y)*10+ZMOVBXzXDIVBX;(X+Y)*10+Z)/XMOVRESULTAXMOVRESLT+2zDX2、将BUFl开始的100字节传送到BUF2开始的单元,然后从中检索字符#,并将此单元换成空格字符。DATASEGMENTBUFlDB1,2,3,45,5,6Nl=$-BUFlBUF2DB100DUP(O)DATAENDSCODEASSEGMENT.SUMEDSQATA,CS:CoDESTART:MOVAXzDSMOVCLDDS,AMOVCXzNlLEASI,BUFlMOVDIzOF
14、FSETBUF2MOVCXzNlLPl:MOVALSI)MOVDI,ALINCSIINCDlLOOPLPlLEASI,BF2MOVAL,W;检索#LP2:CMPALSJNZNOFOUNDMOVBYTEPTRSI;NOFOUND:INCSILOOPLP2CODEENDSENDSTART3、编写一段程序,比较两个5字节的字符串OLDS和NEWS,若相同,在RESULT置0,否则置OFFH。DATASEGMENTOLDSDB1,2,3,4,5NEWSDB1,2,3,4,AN=$-NEWSRESULTDBODATAENDSCODESEGMENTASSUMECS:CODE,DSQATASTART:MOV
15、AXfDATAMOVDSzAX;初始化MOVSlzOFFSETOLDSMOVDbOFFSETNEWSMOVCX,NDON:MOVALSICMPAL,DIJNZNOEQU;串不相等转NCSIINCDlLOOPDONMOVAL,OJMPOUTPUTNOEQ:MOVAL,OFFHOUTPUT:MOVRESULT,ALSTOP:JMPSTOP;程序陷阱CODEENDSENDSTART4、累加数组中的元素,将和存于SUM开始单元,再求平均值,平均值存于AVR单元。数据段定义如下DATASEGMENTARRAYDWCOUNTDWSUMDWAVRDWDATAENDS10,10,12,4,5,6,7,8,9,
16、10($-ARRAY)/20,00XORAXzAXAXMOVBX,OFFSETTABLEMOVCX,4LP:ADDAX,BX;求和ADCDX,0INCBXINCBX;指向下一个数LOOPLP;未加完,继续MOVSM,A涛和MOVSUM+2zDX5、统计数组中大于IOo的数据的数量,存于Nl单元,数据段定义如下TABlDB100,200,12,40,50,60,70,80,90,105NEQU$-TABNlDB0MOVCXzNMOVALlOOMOVDL,0LEABXJABlAGAIN:CMPALzBXJGENEXT;大于等于转移INCDLNEXT:INCBXLOOPAGAINMOVNlzDL6、
17、编写程序完成求1+2+3+N的累加和,直到累加和超过IoOo为止。统计被累加的自然数的个数送CN单元,累加和送SUM,DATASEGMENTSUMDW?CNDW?DATAENDSCODESEGMENTASSUME:CS:CODE,DSiDATASTART:MOVAXzDATAMOVDSzAX:初始化MOVAXzO;。送AXMOVBXzO;。送BXLP:INCBXADDAXzBX;求累加和CMPAXz1000:条件控制JBELP;WlOOO转LPMOVSUMzAMOVCNzBX:送结果MOVAHz4CHINT21H:返回DOSCODEENDSENDSTART7、设有两个长度为8个字节的无符号数分
18、别存放在以NUMLNUM2为首地址的连续的内存单元中,将两个数相加,结果存入SUM内存单元中。(例4.6)DATASEGMENTNUMlDQ062389AB78E390AFH:定义8字节加数1NM2DQ7F367D82A9027C8BH;定义8字节加数2SUMDB9DUP(?);定义9字节和DATAENDSCODESEGMENTASSUMECSrCODE,DSrDATASTART:MOVAX,DATAMOVDS,AX;数据段加载1.EASLNUMl;SI指向NUMl区1.EADbNM2;Dl指向NUM2区1.EABX,SUM;BX指向结果单元MOVCX,4;设置加法的循环次数CLC;进位标志清
19、零NEXT:MOVAX,SI;取NUMl的低两字节ADCAXzDI;将当前和与上一次进位相加MOVBX,AX;和存入到SUM中PUSHF;保存CFADDSl,2;修改SlADDDl,2;修改DlADDBX,2;修改BPOPF;恢复CF1.OOPNEXT;如不等于0跳转到NEXTADCBYTEPTR(BX,0;存进位MOVAH,4CHINT21H;系统功能调用,返回CODEENDSENDSTART8、统计数据块中正数与负数的个数,并将正数与负数分别送到两个缓冲区(习题3.15)。数据变量定义如下:BLOCKDB-1,-3,5,6,-2z0,20,10NEQU$-BLOCKPLUS_DDB8DUP
20、(?);正数缓冲区PLUSDB0;正数个数MOVSIzOFFSETBLOCKMOVDI,OFFSETPLUS_DMOVBX,OFFSETMINUS_DMOVC,8;数据个数送CXGOON:LODSBTESTAXz80HJNZJMIUSINCPLUS;正数个数加一STOSB;传正数JMPAGAINJMIUS:INCMINUS;负数个数加-XCHGBX,DlSTOSB;送负数到缓冲区XCHGBX,DlAGAIN:DECCXJNZGOON9、从给定串中寻找最大值,并放到MAX单元,元素放在BUFFER开始的字节单元中。BUFDB0,1,2,3,456,789;COUNTEQU$-BUFMAXDB?M
21、OVCX,COUNTMOVAL,0LEABX,BUFAGAIN:CMPAL,BXJGENEXT;大于等于转移MOVAL,BXNEXT:INCBXLOOPAGAINMINUS_D DBMINUS DBDP(?);负数缓冲区 ;负数个数10、把BUF表中的字节元素按值的大小升序排列。数据段定义如下:BUFDB10,32,56,11,90,56,89,21N=S-BUFCODESEGMENTASSUMECS:CODE,DSiDATASTART:MOVAX,BUFMOVDS,AXMOVDX,N-I;外循环次数SORTl:MOVBL,0MOVCX,DX;内循环次数MOVSI,OFFSETBUFSORT2
22、:MOVAL,SICMPAL,SI1JNANOXCHGXCHGSI+1,ALXCHGLALMOVBL,OFFHNOXCHG:INCSI1.OOPSORT2DECDXCMPBL,0JNESORTlCODEENDSENDSTARTIk类型号为20H的中断服务程序入口符号地址为INT-5,试写出中断向量的装入程序片断。CLIPUSHDSXORAX,AXMOVDS,AXMOV20H*4MOVAX,OFFSETINT-5:取中断服务程序偏移地址MOVWORDPTRBX,AXMOVAX,SEG1NT-5;取中断服务程序段地址MOVWORDpTRBX+2,AXPOPDSSTI12、设一个8253的计数器O产
23、生周期为20ms的定时信号,计数器1产生周期为30OUS的定时信号。设外部时钟频率为f=2MHZ,端口地址为330H333H试对它进行初始化编程。z7o=roy=20xl()-32106=400001=r1Z=3001062106=6008253通道O初始化程序:MOVAL,00110110B;。号定时器,方式3MOVDX333H;控制端口地址OUTDXzALMOVDX,330H;写计数初值到通道0MOVAXz600OUTDX,ALMOVAL,AHOUTDXzAL8253通道1初始化程序:MOVAloiiioiiob;1号定时器,方式3MOVDX,333H;控制端口地址OUTDX,ALMOVD
24、X,331H;写计数初值到通道1MOVAXz40000OUTDXzALMOVAL,AHOUTDXzAL13、已知某8253占用I/O空间地址为340H343H,设定时器0、定时器1工作于方式3,外部提供一个时钟,频率f=2MHZ.要求定时器1连续产生5ms的定时信号,定时器0连续产生5秒的定时信号。1)、一个定时器的最大定时时间:6553&(2*106)=0.032768s=32.768ms因此一个定时器不能完成5s定时!解决办法:将定时器0与定时器1串连使用,定时器1方式3。2) .将定时器1的CLKl接2MHZ时钟,计数初值:%=八XfI=5zs2106=100OO3) .将定时器1的OU
25、Tl端接到定时器O的CLKo端,定时器O的计数初值:fo=-r=2OO/7Z05msX10-3%=Z)X5s=200x5=100()8253初始化程序:;0号定时器,方式3号定时器,方式3MOvAlooiioiiobOUT43H,ALMOVAXz100OOUT40H,ALMOVALzAHOUT40HzALMOVALz01110110BOUT43H,ALMOVAXz100OOOUT41HzALMOVALzAHOUT41HzAL14、用8255A控制三个发光二极管依秩序循环显示。假设开关闭合时,点亮发光二极管,开关断开时熄灭二极管。(1)画出原理图,并说明工作原理;(2)选择8255工作方式;(3
26、)编写8255初始化程序与控制程序。(1)画出原理图8088CPUAOA2(2)选择8255工作方式:A口为输出口,方式0。BrI输入,方式0(3)编写8255初始化程序与控制程序:软件设计:用8255A控制三个发光二极管显示。8255A的端口地址为:A端口:340HB端口:341HC端口:342H控制口:344H1)设A口为输出口,方式0。BLJ输入,方式0,则方式选择控制字为82H。2)A口输出代码:0000011006H,1号发光二极管亮0000010105H,2号发光二极管亮0000001103H,3号发光二极管亮3)软件延时(I),Ims的软件延时参考程序:设系统的CPU的频率为8M
27、HZ,则时钟节拍为:0.125微秒。执行PUSHF、POPF.LOOP指令需29个节拍。延迟1亳秒要循环的次数:参考程序:DATASEGMENTCOTREQU346H;8255A控制口地址PB_AEQU340H;8255A的A口地址LEDDB06H,05H,03H;LED显示值DATAENDPCODESEGMENTASSUMECS:CODE,DSQATAMOVDXxCOTRMOVAL,82H;方式0OUTDX,AL;A口为输出,B口为输入MOVDX,PB_A;A门地址LP:MOVCXz3LEABX,LED;1号灯代码地址DON:MOVALzBXOUTDX,AL;1,2,3循环点亮CALLDEL
28、AY;调延时程序INCBXDECCXJNZDONJMPLPDEALYPROCNEAR;软件延时DEALYENDPCODEENDSEND15、8255连接一组开关与一组LED显示器,如图所示。开关状态控制LED显示,若断开,则全部熄灭。8255端口地址为310H313H,8255工作于方式0。要求:(1)若Ko闭合,发光二极管全部亮;(2)开关KI闭合,全部发光二极管同时闪烁(延时2秒);(3)开关K2闭合,发光二极管依次循环点亮(依次延时1秒);假设已有延时Is的子程序DELAY,编写完整8255初始化程序与控制程序。COTREQU313H;8255A控制口地址PORT_AEQU310H;82
29、55A的A地址PORT CEQU312H以下是部分功能的程序片段提示:;8255初始化Wait: MOV DXzCOTR MOV ALz10010000BOUT DX, AL;LED依次点亮ONEIightONE PROC ;依次点亮 MOV DX, PoRT_C MOV AL 00000001B;8255方式OzPA 口输入,PC 口输出OUT DXz AL CALL DELAY ;点亮Ll发光, ;点亮L2发光, ;点亮L3发光,RETONEIightONE ENDP;端口 C地址;PCO输出高电平;L。发光延时延延延时时时四、读程序写出结果。1、8086CPU执行如下指令后的结果,以及标
30、志CF、ZF的值。MOVAL,80HSUBAL,IOH;(AL)=?ADDALz89H;(AL)=?,CF=PzZF=?2、CPU执行如下指令后的结果。MOVAXz1234HMOVBX,5678HPUSHAXPOPCXAX=?,BX=?,CX=?3、ORG100OHTABLEDB0,1,2,3NEQU$-TABLEZERDW8DUP(1)写出执行下列指令结果.MOVAL,TABLEMOVBX,OFFSETTABLEMOVCX,NMOVDX,LENGTHZERMOVSI,WORDPTRTABLE+1读程序,写出结果。MOVAL,5BHTESTAL,80HJZLPMOVBL,1JMPSTOPLP:
31、MOVBL,0HLT执行上述程序段后AL=?BL=?5、下面程序片段实现中断向量的装入,问(1)中断类型码为多少?(2)写出中断服务程序的入口地址,即段地址:偏移地址。CUPUSHDSXORAX,AXMOVDX,AXMOVDlz80HMOVWORDPTRDI,IlOOHMOVWORDPTRDI+2z6800HPOPDSSTI单独执行下列指令的结果MOVAL,10110101BANDAL,00011111BORal,I100oooobXORAL,00001111B7、单独执行下列指令的结果假设(AL)=IOloIl11B,CF=O,CL=4,写出分别执行下列指令后的结果以及标志位CF、ZF的值。
32、SHLAL,CLSHRAL,CLROLAL,CL五、程序设计与完善1、读程序,写出结果。BUFDB8,2,3,4COUNTEQU$-BUF1.EASI,BFMOVCXzCOUNT(CALLADDQNE);填空,调用子程序ADDe)NEHLTADDONEPROCNEARADDBYTEPTRSIzlINCSILOoPDoNRETADDONEENDP(I)执行上述程序段后BUF存储区的内容为:、(2)给程序加上完整段定义。(3)给程序加上注释,说该程序功能。2、读程序并完善。ARlDB1,2,3,4,5,7N=$-ARlAR2DBNDUP(O)MOVCX,NMOVSLoffsetARI;取ARl偏移地址送SI寄存器MOVDI,offsetAR2again:MOVAL,SIMoV21LAL;AL内容送数据到Dl所指单元INCDlINCSILoe)Paain;循环again1)程序执行前,AR2单元内容为:2)程序执行后,AR2单元内容为