《微机原理及应用》期末自测题一、基本概念与术语1、8086是()位计算机。8086地址线有()条,可直接寻址的空间最大为()。2、总线周期是指()。基本总线周期有()T状态。Tw状态是指()。3、8086CPU允许的I/O地址线最多可达()条,最大寻址I/O空间为()。4、8086CPU由()两部分组成,其功能为()。其中8086CPU中标志寄存器的作用是(),指令队列的作用是(),20位地址加法器的作用是()。代码段物理地址由CPU的()两个寄存器确定。堆栈段物理地址由CPU的()两个寄存器确定。5、8086中断源有()个。8086中断服务程序入口地址由()组成。中断类型号为20H,其中断向量为()。6、I/O指令IN/OUT,传送数据的寄存器为(),间接寻址时使用寄存器(),其中INAL,DX的含义是()。OUT60H,AL的含义是()。7、一片8259A可以管理()级中断;3片8259A可以管理()级中断。8、硬件中断是(外部引发?随机的?执行总线周期?中断类型码由?提供),软件中断是(内部引发?确定的?不执行总线周期?中断类型确定?)软件中断优先级与硬件中断优先级相比,()的级别高。9、在中断服务程序结束前,为正确返回,必须设置一条指令()。在子程序调用结束前,为正确返回,必须设置一条指令()。10、若中断控制器8259的中断请求寄存器IRR状态为10100000B,说明()。ISR状态为10100000B说明()。11、可编程定时器8253的地址有()个。共有()独立定时通道。工作方式有()个。12、并行接口8255有()个数据端口,有()种工作方式。13、假设8253的端口地址为40H~43H,那么控制端口地址为(),通道0、1、2的端口地址为()。14、假设8255的端口地址为330H~333H,那么控制端口地址为(),端口A、B、C的地址为()15、定时器8253的门控信号GATE作用是(),CLK端的作用是(),OUT端作用是()。16、初始化定时器8253需要先写(),后写()。17、伪指令的作用是(),()产生机器代码。18、输入输出指令中,数据寄存器由()寄存器指出。A、AL/AXB、BXC、CXD、DX19、以下关于可编程计数/定时器8253说法错误的是()。A).有3个独立的16位计数/定时器B).每个计数/定时器都有6中工作方式C).每个定时/计数器都有时钟输入CLK、定时输出OUT和门控信号GATAD).每个定时/计数器都用二进制计数,不能用BCD码计数二、简单应用与简答题1、简述微型计算机的组成。2、总线分为哪几种类型?微型计算机采用总线结构有什么优点?3、8086CPU在内部结构上由哪几部分组成?其功能是什么?4、8086的总线接口部件由那几部分组成?其功能是什么?5、8086的执行单元(部件)由那几部分组成?有什么功能?6、简述8086CPU的流水线思想,与传统计算机有何不同。7、8086和8088是怎样解决地址线和数据线的复用问题的?ALE信号何时处于有效电平?8、计算机对I/O端口编址时通常采用哪两种方法?在8086/8088系统中,用哪种方法对I/O端口进行编址?9、一般的IO接口电路安排有哪三类寄存器?它们各自的作用是什么?10简述CPU与外设进行数据交换的几种常用方式与特点。11、简述条件传送方式的工作过程,主要适用的场合。12、8086CPU响应中断的条件?8086CPU响应中断后自动完成的任务是什么?13、软件中断有哪些特点?硬件中断有那些特点?14、什么是中断向量?它放在哪里?对应于类型号1CH的中断向量在哪里?如1CH中断程序从5110H:2030H开始,则中断向量应怎样存放?15、简述定时器/计数器芯片8253的主要功能。说明OUT、CLOCK与GATE信号的作用。16、8253内部有几个独立通道?8253有几种工作方式?初始化8253的步骤是什么?若8253端口地址为200H-203H,对应的端口是哪个?17、并行接口8255有几个数据端口?若端口地址为300H-303H,对应的端口是哪个?怎样初始化8255?18、假设8255A的端口A工作于方式0,外设需要提供两个联络信号,一个为输出选通,一个为外设就绪信号输入,试选择端口并说明理由。19、中断控制器8259的主要功能?简述8259的工作过程。三、编程应用题1、编程计算((X+Y)*10)+Z)/X,X、Y、Z都是16位无符号数,结果存在RESULT开始的单元。2、将BUF1开始的100字节传送到BUF2开始的单元,然后从中检索字符“#”,并将此单元换成空格字符。3、编写一段程序,比较两个5字节的字符串OLDS和NEWS,若相同,在RESULT置0,否则置0FFH。4、累加数组中的元素,将和存于SUM开始单元,数据段定义如下DATASEGMENTARRAYDW10,10,12,4,5,6,7,8,9,10COUNTDW($-ARRAY)/2SUMDW?,?DATAENDS5、编写程序完成求1+2+3+……N的累加和,直到累加和超过1000为止。统计被累加的自然数的个数送CN单元,累加和送SUM。6、从给定串中寻找最大值,并放到MAX单元,元素放在BUFFER开始的字节单元中。7、把BUF表中的字节元素按值的大小升序排列。数据段定义如下:BUFDB10,32,56,11,90,56,89,21N=$-BUF8、类型号为20H的中断服务程序入口符号地址为INT-5,试写出中断向量的装入程序片断。9、设一个8253的计数器0产生周期为20ms的定时信号,计数器1产生周期为100ms的定时信号。设外部时钟频率为f=2MHZ,端口地址为330H~333H。试对它进行初始化编程。10、已知某8253占用I/O空间地址为40H~43H,设定时器0、定时器1工作于方式3,外部提供一个时钟,频率f=2MHZ。要求定时器1连续产生5ms的定时信号,定时器0连续产生5秒的定时信号。11、用8255A控制三个发光二极管依秩序循环显示。假设开关闭合时,点亮发光二极管,开关断开时息灭二极管。(1)画出原理图,并说明工作原理;(2)选择8255工作方式;(3)编写8255初始化程序与控制程序。12、8255连接一组开关与一组LED显示器,如图所示。开关状态用LED显示,若闭合,则点亮。8255端口地址为310H~313H。(1)选择8255工作方式;编写8255初始化程序与控制程序。四、常用指令与读程序1、8086CPU执行如下指令后的结果,以及标志CF、ZF的值。MOVAL,80HSUBAL,10H;(AL)=?ADDAL,89H;(AL)=?,CF=?,ZF=?2、CPU执行如下指令后的结果。MOVAX,1234HMOVBX,5678HPUSHAXPOPCXAX=?,BX=?,CX=?3、ORG1000HTABLEDW0,1,2,3NEQU$-TABLEZERDW8DUP(0,2DUP(1))写出执行下列指令结果.MOVAX,TABLEMOVBX,OFFSETTABLEMOVCX,NMOVDX,LENGTHZER3、单独执行下列指令的结果MOVAL,10110101BANDAL,00011111BORAL,11000000BXORAL,00001111B4、单独执行下列指令的结果假设(AL)=10101111B,CF=0,CL=4,写出分别执行下列指令后的结果以及标志位CF、ZF的值。SHLAL,CLSHRAL,CLROLAL,CL6、读程序,写出结果。MOVAL,5BHTESTAL,80HJZLPMOVBL,1JMPSTOPLP:MOVBL,0HLT执行上述程序段后AL=?BL=?五、程序设计与完善1、读程序,写出结果。BUFDB8,2,3,4COUNTEQU$-BUF……LEASI,BUFMOVCX,COUNT(CALLADDONE);填空,调用子程序ADDONEHLTADDONEPROCNEARADDBYTEPTR[SI],1INCSILOOPDONRETADDONEENDP(1)执行上述程序段后BUF存储区的内容为:、、、。(2)给程序加上完整段定义。(3)给程序加上注释,说该程序功能。2、读程序并完善。AR1DB1,2,3,4,5,7N=$-AR1AR2DBNDUP(0)......MOVCX,NMOVSI,offsetAR1;取AR1偏移地址送SI寄存器MOVDI,offsetAR2again:MOVAL,[SI]MOV[DI],AL;AL内容送数据到DI所指单元INCDIINCSILOOPagain;循环again1)程序执行前,AR2单元内容为:2)程序执行后,AR2单元内容为:3)给程序加上注释,说明程序功能;4)给程序加上完整段定义。3、(习题5.7,教材P145)现有一输入设备,其数据端口的地址为FFE0H,并于端口FFE2H提供状态,当其D0位为1时表明输入数据备好。采用查询方式进行数据传送的程序段,要求从该设备读取100个字节并输入到从2000H开始的内存中。按要求完善程序,写出完整段定义。;--------------------补充数据段定义--------------------;数据段段开始ORG2000H;定位到2000H单元BUF120DUP(0);定义输入缓存区;数据段段结束;--------------------补充代码段定义----------START:MOVSI,offsetBUF;初始化数据区地址MOVCX,100;---------------查询时输入-----------------LL:MOVDX,0FFE2H;状态口地址送DXINAX,DX;读状态到ALTESTAL,01H;测试外设状态是否满足就绪?JZLL;不满足,继续读状态MOVDX,0FFE0H;就绪,准备输入数据INAX,DX;从输入端口读取数据CALLdelay;延时MOV[SI],AX;存数据INCSI;准备接受下一个数据LOOPLL;数据没有输入完,继续MOVAH,4CHINT21HDELAYPROC……;程序略RETDELAYENDPCODEENDS;代码段定义结束ENDSTART