作者BerenCamlost
说明:
- 此答案为作者自己做的,然后和4位大佬简单的对过答案后得到的结果
- 本试卷不是我们的试卷……我们的课程是《微机原理与接口技术》,这个试卷的名字是《微机原理与应用》
- 发现问题麻烦进快发送到评论区,谢谢
一、单项选择(每题一分,共13分)
1~5:ADBCB
6~10:CACBB
11~15:DAC
二、填空题
- 146;-110;92
- 总线接口单元;EU
- 16;6;3;
- 07A4H
- 地址总线、数据总线、控制总线
- 寄存器操作数;端口操作数;变量
- 基址寻址;寄存器寻址;存储器(数据段/内存)
- 段属性;偏移属性;类型属性
- 8;2
- 60H;20H
- 06H;43H
- 存放外部设备送来的中断请求信号;设置中断请求的屏蔽信号;相应的外部中断被响应并且执行了
三、阅读程序填空
3.1
SP=02E8H;
SP=02E6H;
BX=BF5FH;
DS:[0100H]=BF5FH; SP=02E8H;
3.2
AX=6B98H, OF=0;
DX=035AH, CF=0;
乘二
3.3
AX=4443H;
BX=0104H
CX=000CH
DH=04H
DL=08H
3.4
L3;
L1;
3.5
9130H
0
ADC
四
MOV CX, 100H;
JNZ L1;
JS L2;
JMP L3;
LOOP NEXT;
五
5.1 连线图,略
5.2
IO口和储存器的选择信号,当M/IO’为高电平时,从存储器中读取数据,为低电平时从IO口中读取数据
5.3 程序设计
此题难点在于,如何控制其翻转100次
CODE SEGMENT
ASSUME CS:CODE
START: MOV AL, 10001000B ;8255A控制字,A口方式0输出,C高位输入
OUT 46H, AL
MOV AL, 00100111B ;8253控制字,通道0,只写高位,方式3,BCD计数
OUT 66H, AL
MOV AL, 20H ;计数初值:2000
OUT 60H, AL
MOV CX, 100 ;CX计数100次
MOV BL, 10101010B ;初始状态判断
L3: IN AL, 44H ;读C口数据
AND AL, 80H ;取第7位数据,其余为0
JZ L1
MOV AL, 10101010B ;如果PC7为高,红灯亮,绿灯灭
OUT 40H, AL
JMP L2
L1: MVO AL, 01010101B ;如果PC7为低,红灯灭,绿灯亮
OUT 40H, AL
JMP L2
L2: CMP AL, BL ;判断红绿灯当前的状态和上一状态
JE L3 ;如果相等,再次读C口数据
MOV BL, AL ;如果不等,BL切换为当前状态,CX减一
LOOP L3
MOV AH, 4CH
INT 21H
CODE ENDS
END START
六
CODE SEGMENT
ASSUME CS:CODE
START:
;8259A初始化
MOV AL, 00010011B ;ICW1
OUT 20H, AL
MOV AL, 01001000B ;ICW2
OUT 21H, AL
MOV AL, 00000001B ;ICW4
OUT 21H, AL
MOV AL, 11011111B ;OCW1,屏蔽除IR2之外的所有中断请求
OUT 21H, AL
;8253初始化
MOV AL, 01100111B ;通道1,读写高8位,方式3,BCD码计数
OUT 43H, AL
MOV AL, 10H ;计数初值1000
OUT 41H, AL
;设置中断向量
MOV BX, 0
MOV DI, 0128H ;中断向量首地址为0000:0128H
MVO AX, SEG TIMER ;取中断服务子程序基址
MOV BX:[DI+2], AX
MOV AX, OFFSET TIMER;取中断服务子程序偏移地址
MOV BX:[DI], AX
MOV AL, 4CH
INT 21H
TIMER PROC FAR
---
IRET
TIMER ENDP
CODE ENDS
END START