北京大学的试验考题主要集中在8255A和8253两块芯片上,尤其以8255A最为重要,这一点同笔试一样。考试过程中,老师会首先给出1 ~ 2段程序供考生参考、调试,并且会指导考生联接线路。所以就要求考生对上述两块芯片要足够熟悉,下面将详细介绍:
1.8255A并行接口试验
要求:
(1)熟悉8255A的结构
(2)熟悉8255A的工作方式
(3)熟悉8255A的方式指令字(考试可能会给出)
(4)掌握8255A的初始化方法
(5)编程实现数据传输
试验考题举例:
用K0 ~ K7八个开关控制L0 ~ L7八个LED,每个开关与LED一一对应。
用8255A实现:
(1) PC口接8个开关,K0 ~ K7
(2) PA口接8个LED,L0 ~ L7
(3) PC口用于输入(控制),PA口用于输出
(4) 采用方式0
(5) 口地址:
PA 288H
PB 289H
PC 28AH
控制口 28BH
参考程序:
CODE SEGMENT
ASSUME CS:CODE
START: MOV AL,89H
MOV DX,28BH
OUT DX,AL
MOV DX,28AH
IN AL,DX
MOV DX,288H
OUT DX,AL
MOV AH,4CH
INT 21H
CODE ENDS
END START
说明:关于8255A试验的考题大致和上面相同,可能老师会在部分细节上有所调整,比如,将PC口改为输出口,PA口改为输入口,等等。但程序基本框架不会有太大改变,换句话说,如果能将上面程序充分理解掌握,并能举一反三,那么考试是不成问题的。8253的试验同样如此,不再赘述。
2. 8253定时器/计数器试验
要求:
(1)熟悉8253的结构
(2)熟悉8253的工作方式
(3)熟悉8253的方式指令字(考试可能会给出)
(4)掌握8253的初始化方法
(5)编程实现计数器
试验考题举例:
(1)计数器设置为方式0,初始值为0FH,用手动脉冲输入CLK。
(2)编程使计数值在屏幕上显示,16个脉冲之后,OUTo输出为高电位。
(3)口地址:
计数器0 280H
计数器1 281H
计数器2 282H
控制口 283H
参考程序:
CODE SEGMENT
ASSUME CS:CODE
BEGIN: MOV AL,10H
MOV DX,283H
OUT DX,AL
MOV DX,280H
MOV AL,0FH
OUT DX,AL
ADDR: IN AL,DX
CALL DISP
CMP AL,00H
JNE ADDR
MOV AH,4CH
INT 21H
DISP PROC NEAR
PUSH DX
AND AL,0FH
MOV DL,AL
CMP DL,9
JLE NUM
ADD DL,7
NUM: ADD DL,30H
MOV AH,02H
INT 21H
MOV AH,0DH
INT 21H
MOV AH,0AH
INT 21H
POP DX
RET
DISP ENDS
CODE ENDS
END BEGIN
1、A 口输入,C口输出
CODE SEGMENT
ASSUME CS:CODE
START:
MOV DX,28BH
MOV AL,90H
OUT DX,AL
INPUT: MOV DX,288H
IN AL,DX
MOV DX,28AH
OUT DX,AL
MOV AH,1
INT 16H
JZ INPUT
MOV AH,4CH
INT 21H
CODE ENDS
END START
方式0,A口输入,C口输出,先将A口输入的求反,
CODE SEGMENT
ASSUME CS:CODE
START:
MOV DX,28BH
MOV AL,90H
OUT DX,AL
INPUT: MOV DX,288H
IN AL,DX
NOT AL ;
MOV DX,28AH
OUT DX,AL
MOV AH,1
INT 16H
JZ INPUT
MOV AH,4CH
INT 21H
CODE ENDS
END START
--------------------
CODE SEGMENT
ASSUME CS:CODE
START:
MOV DX,28BH
MOV AL,8BH