三、综合题(共50分)
1. 解:
(1)答:CPU在第二个中断响应周期INTA从数据总线上得到中断矢量号(该矢量号是8259A发出的)。该中断矢量号是:70H。
(2)答:从0:01C0H和0:01C1H中取出的数据是中断服务程序入口地址的偏移量,
即IP地址;从0:01C2H和0:01C3H中取出的数据是中断服务程序入口地址的段地址,即CS地址。
(3)答:8253的端口地址为:3B8H、3BAH、 3BCH、3BEH;8259A的端口地址为:
3B9H、3BBH。
(4)答:计算公式:20ms/0.01ms=2000;或者:100×103Hz/50Hz=2000。 (5)答:8253通道0的方式控制字为:0011×110B(或者:36H,或者:3EH都对)。 初始化程序段: MOV DX,3BEH
MOV AL,36H(或0011×110B) OUT DX,AL MOV DX,3B8H MOV AX,2000 OUT DX,AL MOV AL,AH OUT DX,AL 2. 解:
(1)答:8255A的B口工作于方式0输入;C口低4位工作于方式0输出。 8255A的方式字为:1××××010B,(或者写成82H~FAH中任何一个数都算对)。
(2)答:CPU通过8255A让PC3输出高电平,即可使A/D转换开始(之前应该通过
PC0~PC2选中某一IN i模拟通道)。由电路图可知转换结束时EOC变为高电平向CPU申请中断,CPU得到中断请求就知道A/D转换结束。 (3)答:8255A初始化程序段如下:
MOV DX,303H
MOV AL,82H(或1××××010B) OUT DX,AL 3. 解:
mov dx, 403H (1分) mov al, 10000001b(或者81h) (1分)
out dx, al ;初始化8255A的方式选择控制字,设定工作模式 mov al, 00001101b(或者0DH) (1分) out dx, al ;向STB引脚发送高电平 mov ax, 0100H (0.5分) mov ds, ax
mov si, 1000H (0.5分) mov cx, 100
lp: mov dx, 402H (1分)
in al, dx ;读取PC3的状态
共27页第16页
and al, 08H (1分)
jnz lp ;如果PC3为高电平,表示打印机还未处理完毕,需等待 mov dx, 401H (1分) mov al, [si]
out dx, al ;将要打印的字符内容通过B口输出至打印机 mov dx, 403H (1分) mov al, 00001100b(或者0CH) (1分) out dx, al nop nop
mov al, 00001101b(或者0DH) (1分)
out dx, al ;在PC6上发出一个负脉冲后,然后回到高电平状态 inc si dec cx jnz lp 4. 解:
1. 存储容量=CFFFFH-A8000H+1=28000H (B)=160KB
2. 芯片容量16K×1位:16K=214 所以有14条地址线,1条数据线 3. 所需要的芯片数:(160K×8)/(16K×1)=80
4. 因为每个芯片只有一位数据线,所以需要8片构成一组;
整个系统应分为:80/8=10个芯片组
5. 第一个芯片组的地址空间:A8000H~ABFFFH
A19 A18 A17 A16 A15 A14 A13 …….A0 1 0 1 0 1 0 0 0 1 1
最后一个芯片组的地址空间:CC000H~CFFFFH A19 A18 A17 A16 A15 A14 A13 …….A0
0 0
1 1 0 0 1 1 1 1
也可以这样计算:
第一个芯片组的地址空间:A8000H~ABFFFH A8000H+16K-1=A8000H+4000H-1=ABFFFH 最后一个芯片组的地址空间:CC000H~CFFFFH CFFFF+1-16K=CFFFF+1-4000H=CC000H
;数据段写正确:2分(以下SDATA的定义随意不扣分) DATA
SEGMENT
DB 60 DUP(?) ;60个无符号字节数据 DB 0 ENDS SEGMENT
ASSUME CS:CODE, DS:DATA
共27页第17页
SDATA COUNT DATA CODE
;子程序写正确:5分
;子程序:入口AL;出口:ZF=1表明AL能被13除尽 DIV13
PROC NEAR MOV AH, 0 MOV BL, 13 DIV BL OR AH, 0 RET ENDP
MOV AX, DATA MOV DS, AX
MOV SI, OFFSET SDATA MOV CX, 60 MOV AL, [SI] CALL DIV13 JNZ LP2 INC COUNT INC SI LOOP LP1 MOV AH, 4CH
INT 21H ENDS END START
CODE
DIV13 START:
;主程序写正确:6分
LP1:
LP2:
共27页第18页
武汉大学2009~2010年第一学期 微机原理与接口技术考试试卷(B)
专业 学号 姓名 成绩
1. PC总线和A/D转换接口电路如图2,图中信号均是PC(8位)总线信号,请回答下面问题:(本题10分)
(1) 图中中断控制器8259A和并行接口8255A各有几个端口地址?
各芯片内地址有无重叠?(2分)
答: 8259A和8255A各有4个端口地址;8259A内部有地址重叠,重叠两次; 而8255A没有地址重叠。
(2)图中并行接口8255A的C口低4位应工作在什么方式?(1分) 答:C口低4位工作于方式0的输出方式。
(3)若向8259A的中断向量寄存器写入8AH,其IR2的中断向量是多少? 写出
IR2的中断服务程序入口地址在中断向量表的存放位置。(3分)
答:IR2的向量号为:8AH。偏移量地址:228H~229H;段地址为:22AH~22BH。 (4) 如何控制A/D转换开始?若8255A的口地址是40h~43h, 编写一段完成
A/D转换开始的程序。(2分)
答:CPU先在数据线D2~D0上发送一个IN0~IN7中某个通道的地址,选择一个
共27页第19页
模拟通道,再让8255A的C口的PC2、PC3输出高电平即可使A/D开始转换。
程序如下:
MOV AL,1XXX0X0B ; X表示0和1都可以。 OUT 43H,AL ; 写入方式字
MOV AL,0CH ;(00001100B) 使PC2、PC3为高电平 OUT 42H,AL ; 把0CH写入C口。可使A/D转换开始
(5 )CPU如何知道A/D转换结束?CPU何时以及如何读取转换好的数据?(2分)
答:从图中可知A/D转换结束信号为EOC,该信号接到8259A的IR2,所以CPU
发现中断请求后就可知道A/D转换结束。CPU在中断响应后,转入IR2的中断服务程序既可读取A/D转换好的数据。
注: 1。 ADC 0809的有关信号
ADDA~ADDC: 模拟通道地址信号; ALE: 地址锁存信号; START: A/D转换启动信号,高电平有效;
EOC: A/D转换结束信号,高电平有效。转换过程中为低电平。
OE: 数字量输出允许信号,高电平有效; D0~D7: 8路数字输出信号; IN0~IN7: 8路模拟输入信号 PC总线D0~D7D0~D78259AD0~D7IOWIORA0A1INTAINTRA2~A9AEN 地址译码器WRRDA0INTAINTCSIR28255AD0~D7WRRDA0A1PC2PC3D0~D2ADDA~ADDCALESTARTOEIN0IN1ADC0809CSEOCIN7图2 PC总线与A/D转换接口电路
2.根据以下的连接示意图:
共27页第20页