实验六 8259A硬件中断实验
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验六8259A硬件中断实验
一.实验要求
编写中断程序,在请求8259A中断1时,能够响应8259A的硬件中断,并在数码管上显示“Irq0…”字样,中断结束时,显示“E..IRQ”。
二.实验目的
1. 了解8259A中断控制器的工作原理。
2. 了解PC机中断的原理和过程。
3. 学会中断处理程序的编写。
三.实验电路及连线
20模块中的+PLUSE接第8模块中的INT_0,第8模块中的INT接模块中的88INTR,第8模块中的INTA接实验机内核模块中的88/INTA 。CS8259接200H,CS8279已固定接至238H。
四.实验说明
1、运行该实验程序的方法是:先通过加载选项将8259A的初始化程序与中断处理程序送到RAM中。
2、本实验指导书只提供硬件中断0实验,中断方式为边沿触发、单片、全嵌套中断方式,且中断号从中断8开始。使用者可以根据自己的需要设定为其他中断方式,且中断号可以设定从任一中断号开始。
3、实验方法:以硬中断0为例,先加载8259A主中断程序(注意加载地址为8100:0),然后再加载中断程序IRQ0程序(加载地址为8200:0)。然后进入TALK WITH 88ET选项下,键入SW 0:0020↙0000,8200↙,再执行G8100:0↙Y即可。这样设计的目的是为了让学生们更能理解中断的执行原理与过程。
五.实验程序框图
六.实验程序如下:
(2)8259A主程序:
;ORG 8100:0
INT00 EQU 200h
INT01 EQU 201h
Z8279 EQU 239H
D8279 EQU 238H
LEDMODE EQU 00H
SCANFRQ EQU 38H
data segment
data ends
stack segment
sta dw 50 dup(?)
top equ length sta
stack ends
CODE SEGMENT
ASSUME CS:CODE,DS:data,SS:stack
START:
CLI ;关中断
MOV AL,13H ;ICW1:边沿触发,单片,要ICW4
MOV DX,INT00
OUT DX,AL
NOP
NOP
MOV AL,8 ;中断号从8开始
MOV DX,INT01
OUT DX,AL
NOP
NOP
MOV AL,3 ;全嵌套方式,86/88系统9
MOV DX,INT01
OUT DX,AL
NOP
NOP
MOV DX,INT01
MOV AL,00H ;八个中断全部开放
OUT DX,AL
NOP
NOP
MOV DX,INT00
MOV AL,20H ;非特殊EOI结束中断
OUT DX,AL
NOP
NOP
MOV DX,Z8279 ;8279左边输入,八位显示,外部译码MOV AL,LEDMODE
OUT DX,AL
MOV AL,SCANFRQ ;设置扫描频率
OUT DX,AL
MOV AL,0D0H
OUT DX,AL
MOV CX,0FFH
L2: LOOP L2
MOV AL,90H ;写显示缓冲区RAM命令字
OUT DX,AL
MOV DX,D8279
MOV AL,67H ;显示中断前字样"IRQ"
OUT DX,AL
MOV AL,50H
OUT DX,AL
MOV AL,0FH
OUT DX,AL
STI ;开中断
x2: hlt ;等待硬件中断
mov cx,5
x1: push cx
mov cx,0
loop $
pop cx
loop x1
mov dx,z8279
mov ax,0d0h
out dx,al
mov cx,0ffh
l5: loop l5
mov al,90h
out dx,al
mov dx,d8279
mov al,67h ;中断返回,显示"E...IRQ0"字样
out dx,al
mov al,50h
out dx,al
mov al,0fh
out dx,al
mov al,80h
out dx,al
out dx,al
mov al,79h
out dx,al
jmp short x2
code ends
end start
(2)IRQ0.ASM 中断子程序
;ORG 8200:0
Z8279 EQU 239H
D8279 EQU 238H
data segment
data ends
stack segment
stack ends
CODE SEGMENT
ASSUME CS:CODE,DS:data,SS:stack START:
STI
MOV DX,Z8279
MOV AL,0D0H
OUT DX,AL
MOV CX,0FFH
l1: loop l1
MOV AL,90H
OUT DX,AL
MOV DX,D8279
mov al,80h
out dx,al
out dx,al
out dx,al
MOV AL,3FH
OUT DX,AL
MOV AL,67H
OUT DX,AL
MOV AL,50H
OUT DX,AL
MOV AL,0FH
OUT DX,AL
IRET
CODE ENDS
END START