您好,欢迎访问三七文档
当前位置:首页 > 建筑/环境 > 工程监理 > 微机原理试题2及答案
12006年微机原理与应用研究生复试题答案考号:姓名:成绩:一、填空(每空1分,共8分)1.标志寄存器中的6个状态位分别是SF、ZF、CF、AF、OF、PF。2.8086/8088CPU内存最大寻址范围为1M字节。3.设某存储芯片内有1024个单元,若用单译码方式,地址译码器将有1024条输出线;若使用双译码器方式,用两个相同的译码器,共需要64条译码输出线。4.某芯片采用的是地址复用技术,共有七条地址引脚。若它的首地址是0000H,则其末地址为3FFFH。5.MOS型半导体随机存储器可分为SRAM和DRAM两种,后者在使用过程中每2mS内要刷新一次。6.软中断指令INT20H的中断服务程序的入口地址在地址为:80H—83H四个内存单元中。二、(10分)改正下列有错误的指令1.IN200H,AL5.DIVAX,59.MOVBYTEPTR[BX],2562.MOVES,6000H6.SALAL,210.PPDB56,78,……3.LOOPADD7.MOVDX,2000HMOVAX,PP4.LEADI,[AX]8.PUSHCH11.CMP[DX],80H解:1.MOVDX,200H;INAL,DX;(或者:OUTDX,AL)(或者:IN20H,AL)2.MOVAX,6000H;MOVES,AX3.LOOPADD14.LEADI,[SI]5.MOVBL,5;DIVBL6.MOVCL,2SALAL,CL7.正确8.PUSHCX9.MOVWORDPTR[BX],25610.PPDB56,78,……MOVAL,PP11.MOVBX,DXCMP[BX],80H2三.简答题(1)(5分)试说明8086/8088工作在最小方式下和最大方式下系统基本配置的差别。在最大组态下,8086/8088的外围电路由哪些器件组成?它们的作用是什么?解:8086/8088工作在最大方式下时,需要使用8288总线控制器,但是工作在最小方式下时不需要使用。8086/8088工作在最大方式下时,外围电路包括8284时钟发生器、8286数据发送/接收器、8282地址锁存器以及8288总线控制器。8284将晶体振荡器的振荡频率分频,向8086/8088以及计算机系统提供符合定时要求的时钟信号、准备好信号和系统复位信号。8286数据发送/接收器增加数据总线的驱动能力。8282地址锁存器用来锁存CPU地址信号,特别是地址-数据线、地址-状态线上出现的地址信号。8288根据CPU要执行的指令提供的状态信号建立控制时序,输出读写控制命令。(2)(7分)什么是DMA?DMA操作可以分几个主要步骤?解:(1)DMA方式:即直接内存访问方式,完全由硬件执行I/O交换的工作方式。在这种方式下,DMA控制器从CPU完全接管对总线的控制,数据交换不经过CPU,而直接在内存与设备之间进行。(2)DMA操作可以分3个主要步骤:即传送前预处理、正式传送、传送后处理阶段。①预处理阶段:由CPU执行几条输入输出指令,测试设备状态。向DMA控制器的设备地址寄存器中送入设备号,并启动设备。向内存地址计数器中送入起始地址。向字计数器中送入交换的数据字个数。②正式传送阶段:外设准备好发送数据(输入)或接收数据(输出)时,发出DMA请求,由DMA控制器向CPU发出总线使用权的请求(HOLD)。CPU在本机器周期执行完毕后响应该请求并使CPU的总线驱动器处于高阻状态,然后与系统总线相脱离,DMA控制器接管数据总线和地址总线的控制,并向内存提供地址。在内存和外围设备之间进行数据交换。每交换一个字则地址计数器和字计数器加1,当记数值到0时,DMA操作结束并向CPU提出中断报告。③DMA后处理工作:一旦DMA的中断请求得到响应,CPU将停止主程序的执行,转去执行中断服务程序进行DMA操作的后处理。包括校验送入内存的数据是否正确;决定使用DMA方式传送数据还是结束传送;测试传送过程中是否发生错误。四、(10分)某微机系统的CPU为8088,且工作于最小方式,原有系统RAM存储器模块的容量为128K字节,其首地址为40000H,现用2128RAM芯片(容量2K×8位)扩展一个容量为16K字节的存储器模块,地址和原有RAM模块的地址相连接,试完成该扩展RAM模块的设计。(注:可选用3:8译码器、与门、或门、非门等)。解:原模块:128K=20000H;原模块地址范围:40000H~5FFFFH新模块:16K=4000H;新模块地址范围:60000H~63FFFH2128RAM芯片(容量2K×8位)扩展一个容量为16K字节的存储器模块,需要8片。20位地址中,6位模块选择,3位送3:8译码器用于片选,11位片内选择。扩展RAM模块连接图如下所示。3五.(10分)8253-5通道1工作于方式3,输入时钟频率为1MHz,OUT引脚输出周期为20ms的方波。已知通道0的口地址为4F0H,试编写初始化程序段。8253-5的控制字格式为:解:N=1000*20=20000MOVDX,4F3HMOVAL,01110110BOUTDX,ALMOVAX,20000MOVDX,4F1HOUTDX,ALMOVAL,AHOUTDX,AL六.(10分)(一)试述中断的一般过程。(二)写出只有一块8259A的8088系统中8259A的初始化程序,8259A的偶地址为2150H,要求:(a)请求电平触发;(b)IR0请求的中断类型是28H;(c)SP/EN输出一个信号,给数据总线收发器;(d)在第二个INTA脉冲结束时,ISR位自动清除;(e)清IMR。已知8259A初始化命令字格式如下:SC1SC2RW1RW0M2M1M0BCD4A0D7D00×××1LTIM×SNGLIC4A0D7D01T7T6T5T4T3A0D7D01S7S6S5S4S3S2S1S0A0D7D0100000ID2ID1ID0A0D7D01000SFNMBUFM/SAEOIμPM解:(一)中断过程是指从中断源提出中断请求,到中断被CPU响应并被处理,最好返回到被中断的程序的全过程。经历的处理步骤包括:(1)中断请求。需要服务的中断源向CPU发出中断请求;(2)中断判优。由中断优先权判决电路识别中断请求的中断源,当同时有多个中断源提出请求时,按一定的优先级顺序选择响应中断;(3)中断响应。当满足CPU响应中断的条件时,CPU获取响应的中断信息,即中断类型码,并自动保护某些现场信息,从而转入中断服务处理程序的过程;(4)中断处理。执行中断服务程序,为发出中断请求的中断源服务;(5)中断返回。恢复现场信息,返回被中断的程序。(二)MOVAL,00011011BMOVDX,2150HOUTDX,ALMOVAL,28HINCDXOUTDX,ALMOVAL,00001111BOUTDX,AL七、(10分)关于8255A(一)简述8255A芯片CS、RD、WR和RESET的功能(二)假设某8255A芯片起始端口地址为800H,请编写程序段完成下列功能:(1)设置端口A组和B组都是方式0,其中端口A输出,端口B输入,C口上半部分输入。(2)查询PC7位,若PC7=0继续查询;若PC7=1,则从A口输入字符送B口输出。并无限循环重复上述过程。已知8255A方式选择控制字格式为:8255方式字格式为:ICW1ICW2主ICW3从ICW3ICW45D7D6D5D4D3D2D1D01A组方式端口AI/OC上I/OB组方式端口BI/OC下I/O解:(一)(1)CS——片选信号与A0,Al一起确定其端口地址;(2)RD——读信号,控制8255A送出数据或状态信息至CPU;(3)WR——写信号,控制CPU输出的数据或命令到8255A;(4)RESET——复位信号,清除控制寄存器和将所有端口设置成输入方式。(二)(1)MOVDX,803HMOVAL,10011000BOUTDX,AL(2)MOVDX,802HPOLL:INAL,DXTESTAL,80HJZPOLLMOVDX,800HINAL,DXMOVDX,801HOUTDX,ALJMPPOLL八(15分)、阅读下列程序,说明程序的功能,画出程序的流程图。(2)显示16进制数的ASCII码形式我们再看一个显示数字的例子。在内存中有几个16位的二进制数,编写程序将它们转换成16进制数的ASCII码,并输出到屏幕上,如对于数字1234H,须将其转换成‘1’、‘2’、‘3’、‘4’四个字符,并分别送显示器显示。编程时,我们把对每个二进制数的处理写成一个子程序SHOW_W,在这个子程序中,先将二进制数每4位分成一段,每段又调用子程序SHOW_1,转换成ASCII码并输出。程序流程图如下图所示。6程序如下:DATASEGMENTNUMDW1234H,5678H,9ABCH,0DEF0H;要显示的数字(字)LTH_WDW($-NUM)/2;数字的个数(每个数占2字节)AFTERDB‘H’,0DH,0AH,‘$’;每个数后面显示“H”然后回车换行DATAENDSSTACKSEGMENTPARASTACK'STACK'DB100DUP(?);堆栈长度STACKENDSCODESEGMENTASSUMECS:CODE,DS:DATA,SS:STACKMAINPROCFARPUSHDSMOVAX,0PUSHAX;保存DOS返回指令的地址MOVAX,DATAMOVDS,AX;初始化DSMOVCX,LTH_WLEASI,NUML:CALLSHOW_W;调用子程序显示一个数字INCSIINCSI;一个数字占用2字节LOOPLRETMAINENDPSHOW_WPROC;子程序,能将[SI]中的16位数字显示出来PUSHCX;保护CX读取高8位前4位SHOW_1后4位SHOW_1读取低8位前4位SHOW_1后4位SHOW_1显示’H’,换行返回(b)SHOW_W9?DL+30HDL+7H显示字符返回(c)SHOW_1NY二进制转16进制ASCII码的程序流程图初始化SICX←个数SHOW_W完成?开始结束YN(a)MAIN7MOVDL,[SI+1];先处理高8位MOVCL,4SHRDL,CL;前4位CALLSHOW_1;显示前4位的16进制数MOVDL,[SI+1]ANDDL,0FH;后4位CALLSHOW_1;显示后4位的16进制数MOVDL,[SI];再处理低8位MOVCL,4SHRDL,CL;前4位CALLSHOW_1;显示前4位的16进制数MOVDL,[SI]ANDDL,0FH;后4位CALLSHOW_1;显示后4位的16进制数LEADX,AFTERMOVAH,09HINT21H;显示数字后面的“H”,并回车、换行POPCX;恢复CXRETSHOW_WENDPSHOW_1PROCCMPDL,9JBENEXTADDDL,7;如果大于9,则需加37H,如‘A’=41H=10+7+30HNEXT:ADDDL,30H;如果不大于9,则需加30H,如‘1’=31H=1+30HMOVAH,02HINT21H;显示一位16进制数RETSHOW_1ENDPCODEENDSENDMAIN程序运行结果,屏幕上显示:1234H5678H9ABCHDEF0H读者可以将上面两个程序整合起来,编写一个“输入十进制数,显示其十六进制数”的完整程序。九、(15分)编写完整的源程序存储器变量STRING中存放一字符串,字符串长度放在字变量STR_LEN中,编程查找串中第一个出现关键字符‘A’的位置。如果找到,则把该位置相对于串首的偏移量存放到存储单元RES中,否则将RES的值置为0FFFFH。例如,在串“ABAB”中查找字符“A”,由于串中第8一个“A”出现在串首,所以结果RES=0。请编写完整的源程序实现上述功能。答:程序可利用串操作指令SCAS来查找关键字,并用前缀REPNE来循环查找。需要注意的是,前缀REP的操作过程是,先把CX减1判断是否为0,然后再执行串操作,因此,在初始化的时候,必须将字符串长度加1的值赋给CX。完整程序如下:DATASEGMENTSTRINGDB‘ABCDEFG’;
本文标题:微机原理试题2及答案
链接地址:https://www.777doc.com/doc-2470087 .html