.
实验 3-2 (1)实验内容
自设计实验。自行设计能实现 A 口工作在方式一输入,B 口工作在方式一输出的电路并完成程序的编制和在实验箱上的验证,要求,利用控制信号控制数据的输入。
(2)主要步骤
设计程序,设计接线图,运行程序,并按接线图接线,实现可控制的并行数据传输功能。 接线图:
程序源代码:
IO8255_MODE EQU 28BH
IO8255_A EQU 288H IO8255_B EQU 289H IO8255_C EQU 28AH
;定义8255的地址 CODE SEGMENT
ASSUME CS: CODE
START: MOV DX, IO8255_MODE ;8255初始化 MOV AL, 0B4H ;1011 0100 (A:1方式,输入;B:1方式,输出) OUT DX, AL INOUT:
.
.
TEST1: MOV DX,IO8255_C ;读C端口,测试PC5数据 IN AL,DX
TEST AL,20H ;0010 0000
JZ TEST1 ;没准备好继续准备 MOV DX,IO8255_A ;读入数据 IN AL,DX
;TEST2 MOV DX,IO8255_C ;读C端口,测试PC1数据 ; IN AL,DX
; TEST AL,02H ;0000 0010
; JZ TEST2 ;没准备好继续准备
MOV DX,IO8255_B ;输出数据 OUT DX,AL
MOV DL,0FFH ;判断是否有按键 MOV AH, 06H INT 21H
JZ INOUT ;若无,则继续 MOV AH,4CH ;否则返回 INT 21H CODE ENDS
END START
四:实验结果与分析
实验一
实验1-1结果:
(1) 所给程序实验运行结果为通过连接主片8259A的按键实现中断,每次中
断在屏幕上显示字符串,10次后结束。 实验结果如图:
.
.
(2) 自设计程序实验运行结果为通过连接从片8259A的按键实现中断,每次
中断在屏幕上显示字符串,10次后结束。 实验结果如图:
分析:详细的程序分析过程见实验步骤的红色注释部分。
在本次实验中,分别进行了主片8259的中断实验和从片8259的中
断实验,在对主片中断进行设计时,先进行8259初始化(写ICW1,2,3,4
.
.
中的部分或全部,通过写OCW1打开IMR中的对应位屏蔽),再利用系统调用写中断向量表,设置中断程序入口地址,之后编写主程序和中断程序,在中断程序的最后利用OCW2非自动结束中断,并退出中断,在中断程序中通过系统调用显示字符串,最后利用LOOP功能循环10次后结束程序。在对从片中断的设计过程中,大致过程与主片中断类似,不过需要加入对从片的初始化设置和对从片的非自动中断设置(既写OCW2)。 实验1-2结果:
(1) 实验2中所给程序实验结果为按动连接在IRQ3上的按键,连续在屏幕上
显示10个3;按动连接在IRQ10上的按键,连续在屏幕上显示10个10。 (2) 在按动3后打印的过程中按动10将会产生中断嵌套,先打印10个10后
继续打印3,而在按动10后打印的过程中按动3不会产生中断嵌套。 实验结果如图:
分析:详细的程序分析过程见实验步骤的红色注释部分。
在本次实验中,利用2片8259实现中断嵌套。程序省去了对8259
主片和从片的初始化过程,直接进行了中断向量表的设置,分别设置IR3和IR10的中断程序入口地址。之后在主程序中开放中断,等待中断的到
.