第1页共4页同济大学课程考核试卷(B卷)2007—2008学年第一学期(答案)课号:102211课名:微机原理及接口(A)考试考查:考试此卷选为:期中考试()、期终考试()、重考()试卷一、填空题(12分)1.二进制数11110001的十六进制表示为0F1H,若该编码是8位的二进制补码表示,其十进制真值为-152.若24根地址总线可以寻址的内存空间是16M。若DS=0340H,BX=0250H,则在8086实模式下,MOVAL,[BX]访问的内存物理地址为03650H。3.8086/8088最多能处理256种中断类型。4.计算机能够自动地一条接一条连续执行指令,是因为在CPU中有一个指令(或IP,PC)寄存器,用于存放待执行指令所在存储单元的地址。二、简答题(40分)1.8086CPU复位后AX,CS,IP的值是什么?复位后CPU的启动地址又是什么?(10分)答:复位后AX和IP的值都是0000H,而CS中的值为0FFFFH。故复位后CPU的启动地址为0FFFF0H。2.举例说明80X86堆栈的入栈和出栈过程。(10分)答:入栈和出栈都是针对字/双字进行处理的。举例的答案不唯一。1)PUSHAX。先把AH中内容送到SP-1,再把AL中内容送到SP-2,然后SP更新为SP-2。2)POPAX。先把SP中内容送到AL,再把SP+1中内容送到AH,然后SP更新为SP+2。3.中断服务程序结束时,用RET指令代替IRET指令能否返回主程序,这样做会有什么后果?(10分)答:在中断服务程序中,用RET来代替IRET可以返回主程序。因为返回前在堆栈中还保留CS和IP的值。但是这样做会有问题。因为中断前保留在堆栈中的标志寄存器FLAGS的值没有弹出,这样返回主程序后,可能会引发标志位错误而导致程序流程控制错误。4.已知异步串行通信的帧信息为0110010101,其中包括:1个起始位、7个数第2页共4页据位、1个校验位、1个停止位,此时传送的是什么字符?采用的是偶校验还是奇校验,校验位是“1”还是“0”?(10分)答:从帧序列中可以得到数据序列为1100101,而在穿行通信中是低位先传输的。故正确的数据序列为1010011,即53H。易知该数据为大写字母“S”的ASCII编码。校验位为“0”,因7个数据位和校验位中“1”的数目为偶数个,故为偶校验。三、分析与设计题(48分)1.某以8088为CPU的微型计算机内存RAM区为00000H~3FFFFH,若采用6264(8K×8)、21256(32K×4)各需要多少芯片?其各自的片内和片间地址线分别是多少(采用全地址译码方式)?(10分)答:RAM区域00000H~3FFFFH的大小为3FFFFH-00000H+1=40000H=256K。又8088的数据宽度为8位,故内存区域大小为256K×8bit。1)若采用6264(8K×8)来构成该RAM区域,则需要25683288KK(片)因为6264的地址线为8K=213,故片内地址线为13根线,片间地址线为20-13=7根线。2)若采用21256(32K×4)来构成该RAM区域,则需要256816324KK(片)因为21256的地址线为32K=215,故片内地址线为15根线,片间地址线为20-15=5根线。2.一个Intel8254芯片和8位CPU相连接,时钟0、1、2的寄存器以及控制寄存器端口地址分别为20H、21H、22H和23H,现有10KHz的时钟信号连入8254的CLK0端,且GATE0接高电平。8254的初始化代码如下。MOVAL,30HOUT23H,ALMOVAL,0E8HOUT20H,ALMOVAL,03HOUT20H,AL请回答如下问题:(14分)1)给出Intel8254的工作模式及其计数初值。(6分)2)画出8254的OUT0的输出波形。(8分)答:1)从初始化根据题目要求,控制字为30H,表示采用0#计数器,依次写低8位和高8位计数值,采用工作方式0和二进制计数。因此,计数值为03E8H=1000。2)因为计数值为03E8H=1000。因此对于10KHz的输入,在输出OUT0在启第3页共4页动计数后变低,经过时间10000.110sKHz后变高。8254的OUT0的输出波形如下。OUT000.020.040.060.080.1写入计数值时刻时间(秒)3.已知一CPU,其地址总线为A0到A15,数据总线为D0-D7,通过74LS138和门电路进行地址译码,与8255A的接口电路如下图所示。其中k0-k7与8255A端口B相连,LED发光二极管D0-D7及相应的驱动电路与端口A相连。要求如下。(24分)1)分析A口寄存器、B口寄存器和控制寄存器的端口地址。(9分)2)若要将开关k0-k7的状态在对应的LED二极管D0-D7上随时反映出来,即:若ki(i=0,…,7)开关闭合,则相应的LED灯Di(i=0,…,7)点亮。编写一个8086汇编语言程序段,实现对8255A的初始化及要求的控制功能。(15分)第4页共4页A2D0-D7CSA1A0RDWRD0-D7PB0PB1PB7PA0PA1PA78255Ar0r7r1R0R7R1D0D7D1+5V+5Vk0k7k1CG1G2AG2BY774LS138ABY6Y5Y4Y3Y2Y1Y0A4A9A3A6A7A12A5A8A10A11A13A15A1A0IORIOW答:1)由于8255A的片选端CS是由74LS138的Y5引脚输出,因此要使能8255A,相关的地质引脚编码如下表。地址A15A14A13A12A11A10A9A8A7A6A5A4A3A2取值0X010010110011表中X表示无关项。因此,8255A的A口寄存器的端口地址有两个,分别为12CCH和52CCH。8255A的B口寄存器的端口地址有两个,分别为12CDH和52CDH。8255A的控制寄存器的端口地址有两个,分别为12CFH和52CFH。2)因为8255A有两组地址,任选一组。满足题意的控制字为10000010B。MOVDX,12CFH;控制口地址MOVAL,10000010B;依据8255A控制字对8255A初始化OUTDX,ALCALLDELAY;调用外部的延迟子程序TEST:MOVDX,12CDH;B口地址INAL,DX;读B口状态XORAL,11111111B;将B口状态取反MOVDX,12CCH;A口地址OUTDX,AL;将取反后的B口状态送到A口,控制LED灯亮CALLDELAY;调用外部的延迟子程序…..JMPTEST;循环执行