2014武汉理工大学微机原理试卷
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
……
……试卷装订线………………装订线内不要答题,不要填写考生信息………………试卷装订线…………
得分
七、综合设计(共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时,控制信号IO
4.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 0200H
ARY DW -1, 2,-3,4
CNT DW $ - ARY
VAR DW ARY, $+4
问下列程序段执行后,AX、BX、CX、DX、SI的值为多少(用十六进制表示)?
MOV AX, ARY
MOV BX, OFFSET VAR
MOV CX, CNT
MOV DX, VAR+2
LEA SI, ARY
解:程序执行后,结果如下表所示:
四、程序分析与应用(共15分)
1.请给下面程序段加注释,写出该程序段实现的计算表达式,以及程序执行后(AL)的值。(9分)
MOV BX, 1011001011000000B
MOV CX,10 ;置循环次数10
XOR AL,AL ;求和计数器AL清零
MOV DL,1 ;(DL)=1
AGAIN:SHL BX,1 ;BX内容左移一位
JNC NEXT ;测试移出位(在CF中),为零,转NEXT
ADD AL,DL ;CF=1,则对DL中数据进行累加
NEXT:INC DL ;DL内容加1
LOOP 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,2
XOR BX,BX
CLC
NEXT:MOV AX,ADDR1[BX]
ADC AX, ①
MOV ADDR2[BX],AX
ADD ② ,2
③ NEXT
解:ADDR1的第2个双字数据相对于ADDR1的偏移地址为4,程序填空如下:
① ADDR1[BX+4] ;与第2个双字数据对应低位或高位相加
② BX ;调整BX指向双字高位
③LOOP ;双字未加完,转NEXT处
五、程序设计(15分)
编写一个完整的汇编程序,把64个字节的数组中的正数、负数、零挑选出来,分别将正数、负数存入正数、负数数组,并计算其中正数、负数和零数据的个数,存入内存变量中。
解:实现此功能的基本思想是:依次取出数组元素与零进行比较,根据比较结果选择不同分支进行正负数分拣。程序如下:
DA TA SEGMENT
BLOCK 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分)