…………试卷装订线………………装订线内不要答题,不要填写考生信息………………试卷装订线…………得分七、综合设计(共20分)下图为某接口电路,编程实现两个发光二极管交替点亮,切换周期100ms。
当开关K闭合时,发光二极管全灭。
具体任务如下:(1) 分别给出8255A和8253各端口的地址。
(5分)(2) 分别给出8255A和8253的初始化程序。
(5分)(3) 设计实现功能程序。
(10分)附:8255A,8253控制字格式武汉理工大学考试试卷(A卷)2013 ~2014 学年一学期微机原理与通信接口课程时间120分钟参考答案及评分标准一、填空(每空1分,共10分)1.设机器码字长为6位,数X= -11111,则X的源码为[X]原=111111 ,补码为:[X]补=100001 。
2.堆栈是内存中遵循先进后出规则的一个专用区域;在8086/8088系统中,设(SP)=0034H,如果用堆栈指令压入7个数据,则(SP)= 0026H 。
M/= 0 ,RD= 0 ,WR= 1 。
3.8086CPU执行IN AL,DX时,控制信号IO4.Pentium有四种工作方式:实地址方式、保护虚地址方式、虚拟8086方式和系统管理方式。
5. 采用中断方式来实现输入输出是因为它既能对外设的I/O请求作出实时响应,又能提高CPU 的利用率。
二、简答题(每题5分,共15分)1. 试述字节与字长的概念与区别。
答:字节是由8个二进制位组成的基本数据单元,是与机器无关的概念。
字长是指计算机内部一次可处理的二进制数码的位数,决定于通用寄存器、ALU的位数和数据总线的宽度等,依赖于具体机器。
2. 为什么用线选法对存储器或I/O接口进行片选控制时,用作片选的地址线每次寻址时只能有一位片选地址有效,而不允许同时有多位有效?答:若允许同时有多位有效,就会同时选中多个存储器或I/O接口芯片。
这时,若是写操作就会将数据总线上的信息写入不同芯片中被片选地址选中的存储单元或I/O端口;若是读操作,不同芯片被选中的存储单元或I/O端口都会向数据总线送出数据,若这些数据不同,就会产生总线冲突。
3. 在80x86微机中,可屏蔽中断与非屏蔽中断的主要区别是什么?主要区别有:(1)可屏蔽中断受CPU内部的中断允许位IF的控制,而非屏蔽中断不受此控制;(2)两者引发中断的方式不同,非屏蔽中断采用正跳变触发,而可屏蔽中断采用高电平申请中断;(3)可屏蔽中断要满足一定的条件,CPU才响应,且要执行两个外部中断响应周期,用以获取中断类型码,而非屏蔽中断不需要。
三、指令分析与理解(每小题5分,共10分)1.指出下列指令的源操作数是什么寻址方式?(1) MOV EAX,EBX ;寄存器寻址(2)MOV AX,[2000H] ;直接寻址(3)MOV AX,[ESI][EDX*2] ;基址加比例变址寻址(4)MOV EAX,[ESI*8] ;比例变址寻址(5)MOV EAX,8080H ;立即数寻址2.已知数据定义如下:ORG 0200HARY DW -1, 2,-3,4CNT DW $ - ARYVAR DW ARY, $+4问下列程序段执行后,AX、BX、CX、DX、SI的值为多少(用十六进制表示)?MOV AX, ARYMOV BX, OFFSET VARMOV CX, CNTMOV DX, VAR+2LEA SI, ARY解:程序执行后,结果如下表所示:四、程序分析与应用(共15分)1.请给下面程序段加注释,写出该程序段实现的计算表达式,以及程序执行后(AL)的值。
(9分)MOV BX, 1011001011000000BMOV CX,10 ;置循环次数10XOR AL,AL ;求和计数器AL清零MOV DL,1 ;(DL)=1AGAIN:SHL BX,1 ;BX内容左移一位JNC NEXT ;测试移出位(在CF中),为零,转NEXTADD AL,DL ;CF=1,则对DL中数据进行累加NEXT:INC DL ;DL内容加1LOOP AGAIN ;已循环10次?未完继续HLT解:对程序中指令加以注释,可知该程序段实现的功能是:将BX中的高10位二进制数按从左至右的顺序与其二进制位对应的序号相乘并累加求和,即用逻辑尺循环结构计算表达式:1+3+4+7+9+10 = 22H该程序段实现的计算表达式为:1+3+4+7+9+10 ,程序执行后,(AL)= 22H 。
2. ADDR1开始的单元中连续存放两个双字数据,将其求和存放在ADDR2开始的单元中。
试在下面的程序段的空白处填上适当的指令或操作数,以实现上述功能。
(每空2分)MOV CX,2XOR BX,BXCLCNEXT:MOV AX,ADDR1[BX]ADC AX, ①MOV ADDR2[BX],AXADD ② ,2③ NEXT解:ADDR1的第2个双字数据相对于ADDR1的偏移地址为4,程序填空如下:① ADDR1[BX+4] ;与第2个双字数据对应低位或高位相加② BX ;调整BX指向双字高位③LOOP ;双字未加完,转NEXT处五、程序设计(15分)编写一个完整的汇编程序,把64个字节的数组中的正数、负数、零挑选出来,分别将正数、负数存入正数、负数数组,并计算其中正数、负数和零数据的个数,存入内存变量中。
解:实现此功能的基本思想是:依次取出数组元素与零进行比较,根据比较结果选择不同分支进行正负数分拣。
程序如下:DA TA SEGMENTBLOCK DB 56,-100,-20,0,…,78 ;定义数组PLUS_DATA DB 64 DUP(?) ;定义正数数组MINUS_DATA DB 64 DUP(?) ;定义负数数组PLUS_CNT DB DUP(?) ;定义正数个数计数器MINUS_CNT DB DUP(?) ;定义负数个数计数器ZERO_CNT DB DUP(?) ;定义零个数计数器DA TA ENDS (3分)CODE SEGMENTASSUME CS:CODE, DS:DATASTART : MOV AX,DATAMOV DS,AXMOV CX,64 ;取数组长度LEA SI, BLOCK ;取数组首地址LEA DI,PLUS_DA TA ;取正数缓冲区首地址LEA BX, MINUS_DA TA ;取负数缓冲区首地址(3分)AGAIN : MOV AL,[SI]CMP AL,00HJGE L1 ;正数或零时转MOV [BX],AL ;是负数INC BXINC MINUS_CNTJMP NEXT (3分)L1: JNZ L2INC ZERO_CNTJMP NEXT (3分)L2: MOV [DI],ALINC DIINC PLUS_CNT (3分)NEXT: INC SILOOP AGAIN (3分)MOV AH,4CHINT 21HCODE ENDSEND START六、存储器电路分析(15分)某8位微机(地址线为A19~A0)需要配置SRAM存储器系统。
若选用4KB×8位的SRAM芯片,地址范围为0BC000H ~0BFFFFH,请完成以下内容:(1)设计的存储器系统的容量是多少?(3分)(2)共需几片存储器才能实现上述容量?(3分)(3)设计译码电路,并画出存储器电路的连接图,给出每片存储器的地址范围。
(9分)解:由已知的存储器地址范围,可计算出该存储器的容量为:存储器的容量= 0BFFFFH – 0BC000H +1 = 4000H(B)= 16(KB)选用4K×8位芯片实现时,共需4组芯片。
下面,先根据给定的存储器空间地址范围,列出各芯片组的地址范围和地址分配,如表所示。
由地址分配可确定译码方案,用3-8译码器对A14、A13、A12地址信号进行译码来产生4个芯片组的片选信号,A19~A15用作3-8译码器的使能信号。
电路设计如图所示,每组芯片内部地址线、片选线、和读/写控制线并连,数据线分别相连;各组间地址线、数据线和读/写控制线对应并连,而片选线分别与译码输出相连。
七、综合设计题(共20分)解:1:8255A的PA,PB,PC及控制口地址分别是F0~F3H,8253的通道0~2及控制口地址分别是F4~F7H。
(5分)2:8255A初始化程序(2分)MOV AL,82H; 设置PA为方式0输出,PB为为方式0输入。
OUT 0F3H,AL.8253初始化程序(3分)2MHZ进行4000分频后,获得500HZ方波输出(200ms周期),得初值为4000 MOV AL,37H; 设置通道0工作方式3(连续方波)。
16位初值,BCD码计数。
OUT 0F7H,ALMOV AL,00HMOV 0F4H,ALMOV AL,40HMOV 0F4H,AL3: STAR:MOV AL,0FFHOUT 0F0H,AL;灭灯STAR1:IN AL,0F1H;读PB0TEST AL, 01HJZ STARTEST AL,02HJZ LMOV AL,02H;PA0亮OUT 0F0H,ALJMP STAR1L: MOV AL,01H;PA1亮OUT 0F0H,ALJMP STAR1(10分)。