第1页共5页同济大学课程考核试卷(A卷)2007—2008学年第一学期(答案)课号:102211课名:微机原理及接口(A)考试考查:考试此卷选为:期中考试()、期终考试(■)、重考()试卷一、简答题(50分)1.若两个8位二进制数X=-32,Y=32,则有[X]补=?,[X+Y]补=?。(6分)解:X=-32,因(32)10=(00100000)2,故有[X]补=(11100000)2Y=32,故有[Y]补=(00100000)2[X+Y]补=[X]补+[Y]补=(11100000)2+(00100000)2=(00000000)2=(0)102.写出三种不同的使AL=0的指令。(6分)解:答案不唯一。参考答案如下:MOVAL,0XORAL,ALSUBAL,ALSHLAL,83.Intherealmodeof8086,showthestartingandendingaddressofeachsegmentlocatedbythefollowingsegmentregistervalue.(8分)1)2300H2)0AB00H解:1)StartingAddress:23000H,EndingAddress:32FFFH2)StartingAddress:0AB000H,EndingAddress:0BAFFFH4.已知AL=0C6H,BL=0D0H,执行以下CMPAL,BL指令后,试分析标志位S,C,O,Z的取值情况(8分)。解:因为CMP指令执行的是减法操作,其结果只影响标志位。易知0C6H-D0H=F6H。可以看出1)计算结果为负数,有S=1。2)高位相减有借位,故C=1。3)负数减去负数后,不可能有溢出。因此O=0。4)计算结果不为0,有Z=0。第2页共5页5.ExplainwhathappenswiththestackwhenthePUSHCXinstructionexecutes.AssumethatSP=0203H,SS=2000HandCX=2345Hbeforetheinstructionbeenexecuted.(8分)解:1)执行PUSH指令前SS=2000HSP=0203HCX=2345H内存[SP-1]=[20202H]=未知数内存[SP-2]=[20201H]=未知数2)执行PUSH指令后SS=2000HSP=0201HCX=2345H内存[SP-1]=[20202H]=23H内存[SP-2]=[20201H]=45H6.Howmanyaddressinputsanddatainputsdoesthe64K×1bitDRAMdevicecontain?(6分)解:因为64K=216,因此,AddressInputs的数目为16而数据宽度为1bit,故DataInputs的数目为17.Contrastamemory-mappedI/OsystemwithanisolatedI/Osystem.(8分)解:1)内存映射I/O系统a)地址空间与存储器重叠;b)不使用专门的In/Out指令;c)采用相同的I/O访问和内存访问寻址方式,但对I/O访问很慢。2)独立I/O系统a)地址空间不与存储器重叠;b)需要专门的In/Out指令,且只能通过AL,AX,EAX寄存器进行数据交换;c)内存访问寻址方式采用20位地址寻址,而I/O寻址最多16位地址。二、分析与设计题(50分)8.异步串行通信的数据格式为:1个起始位、7个数据位、1个奇校验位、1个停止位。试画出英文字母“A”的串行传输波形。(8分)解:1)英文字母“A”的ASCII码为41H,采用7位表示为1000001B。2)在异步传输中,数据的传输是从低位开始传输的。因此传输式的序列为1000001B。第3页共5页3)采用1位奇校验位,则表明数据位和校验位中1的个数为奇数,而传输的数据序列为1000001B,有2个“1”,因此校验位为“1”4)异步传输中起始位总是为“0”,停止位总是为“1”。这样,异步传输的数据序列为0100000111,波形图如下。起始位D0D1D2D3D4D5D6校验位停止位01000001119.针对一个微型计算机的存储器系统,CPU的地址线为16位,数据线为8位,采用静态RAM构成内存。(10分)1)CPU的最大地址寻址范围为多少?(4分)2)在1000H-1FFFH地址范围内构造内存,需要2K×8的存储芯片多少片?(6分)解:1)CPU的地址线为16位,因此最大可寻址地址为216-1=65535=0FFFFH,即最大地址寻址范围为0000H-0FFFFH。2)1000H-1FFFH的地址范围有1FFFH-1000H+1=1000H=4K,又数据线宽度为8位,因此需要2K×8的存储芯片个数为。个数=48228KK(片)10.一个Intel8254芯片和8位CPU相连接,端口地址为20H-23H,现有10KHz的时钟信号用作8254的时钟输入,要求8254的OUT1输出在启动0.1秒以后由低电平变为高电平。(12分)1)给出Intel8254的工作模式及其计数初值。(4分)2)编写Intel8254的初始化程序。(8分)解:该题答案不唯一。参考答案如下。1)根据题目要求,采用8254方式0和方式1均可。两种方式均可以在经过一定的计数值后使得Out从低变高。计数初值为10KHz×0.1s=1000(次)=3E8H2)初始化程序如下:MOVAL,01110000BOUT23H,AL;1#计数器,二进制计数,方式0,高低8位均写MOVAL,0E8HOUT21H,AL;写入低8位MOVAL,03HOUT21H,AL;写入高8位第4页共5页11.已知一个与总线接口的8255A接口电路如下图所示,其中k0-k7与8255A端口B相连,LED发光二极管D0-D7及相应的驱动电路与端口A相连,且已知8255A的端口地址为83F0H~83F3H。要求如下。(20分)1)利用门电路和74LS138译码器设计图中所示的译码片选电路,产生满足给定条件的CS信号。(6分)2)将8255A的A1、A0、D0-D7、RD、WR与总线的信号线进行正确连接。(6分)3)若要将开关k0-k7的状态在对应的LED二极管D0-D7上随时反映出来,即:若ki(i=0,…,7)开关闭合,则相应的LED灯Di(i=0,…,7)点亮。编写一个8086汇编语言程序段,实现对8255A的初始化及要求的控制功能。(8分)ISA总线译码片选电路AENA2A3A15IORMEMRIOWMEMWALEA1A0D0-D7D8-D15CSA1A0RDWRD0-D7PB0PB1PB7PA0PA1PA78255Ar0r7r1R0R7R1D0D7D1+5V+5Vk0k7k1CG1G2AG2BY774LS138ABY6Y5Y4Y3Y2Y1Y0解:该题答案不唯一。参考答案如下。1)可以先把所要求的地址83F0H写成二进制形式1000_0011_1111_0000B,然后选择不同的地址线连入译码器电路,查看CS端能得到正确的译码即可。2)在连线时看这样几个关键连线:ISA总线的A1,A0分别连接到8255A的A1和A0做片内译码用,IOR信号连接到8255A的RD引脚,IOW信号连第5页共5页接到8255A的WR引脚,D0…D7数据总线连接到8255A的D0…D7端,地址线连接到译码电路输入,译码器电路有一个输出连接到CS。3)程序:只要求程序段,不要求完整的程序MOVDX,83F3H;控制口地址MOVAL,10000010B;依据8255A控制字对8255A初始化OUTDX,ALCALLDELAY;调用外部的延迟子程序TEST:MOVDX,83F1H;B口地址INAL,DX;读B口状态XORAL,11111111B;将B口状态取反MOVDX,83F0H;A口地址OUTDX,AL;将取反后的B口状态送到A口,控制LED灯亮CALLDELAY;调用外部的延迟子程序…..JMPTEST;循环执行