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的状态
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
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
DIV13 START:
;主程序写正确:6分
LP1:
INC COUNT INC SI LOOP LP1 MOV AH, 4CH INT 21H ENDS END START
LP2:
CODE
武汉大学2009~2010年第一学期