📄 t8259-1.asm
字号:
;T8259-1.asm
;8259中断查询方式应用实验
;****************根据查看端口资源修改下列符号值*******************
IOY0 EQU 9C00H ;片选IOY0对应的端口始地址
;*****************************************************************
MY8259_ICW1 EQU IOY0+00H ;实验系统中8259的ICW1端口地址
MY8259_ICW2 EQU IOY0+04H ;实验系统中8259的ICW2端口地址
MY8259_ICW3 EQU IOY0+04H ;实验系统中8259的ICW3端口地址
MY8259_ICW4 EQU IOY0+04H ;实验系统中8259的ICW4端口地址
MY8259_OCW1 EQU IOY0+04H ;实验系统中8259的OCW1端口地址
MY8259_OCW2 EQU IOY0+00H ;实验系统中8259的OCW2端口地址
MY8259_OCW3 EQU IOY0+00H ;实验系统中8259的OCW3端口地址
STACK1 SEGMENT STACK
DW 256 DUP(?)
STACK1 ENDS
CODE SEGMENT
ASSUME CS:CODE
START: MOV DX,MY8259_ICW1 ;初始化实验系统中8259的ICW1
MOV AL,13H ;边沿触发、单片8259、需要ICW4
OUT DX,AL
MOV DX,MY8259_ICW2 ;初始化实验系统中8259的ICW2
MOV AL,08H
OUT DX,AL
MOV DX,MY8259_ICW4 ;初始化实验系统中8259的ICW4
MOV AL,01H ;非自动结束EOI
OUT DX,AL
MOV DX,MY8259_OCW1 ;初始化实验系统中8259的OCW1
MOV AL,0FCH ;打开IR0和IR1的屏蔽位
OUT DX,AL
QUERY: MOV AH,1 ;判断是否有按键按下
INT 16H
JNZ QUIT ;有按键则退出
MOV DX,MY8259_OCW3 ;向8259的OCW3发送查询命令
MOV AL,0CH
OUT DX,AL
IN AL,DX ;读出查询字
TEST AL,80H ;判断中断是否已响应
JZ QUERY ;没有响应则继续查询
AND AL,03H
CMP AL,00H
JE IR0ISR ;若为IR0请求,跳到IR0处理程序
JNE IR1ISR ;若为IR1请求,跳到IR1处理程序
JMP QUERY
IR0ISR:MOV AL,30H ;IR0处理,显示字符0
MOV AH,0EH
INT 10H
MOV AL,20H
INT 10H
JMP EOI
IR1ISR:MOV AL,31H ;IR1处理,显示字符1
MOV AH,0EH
INT 10H
MOV AL,20H
INT 10H
EOI: MOV DX,MY8259_OCW2 ;向实验系统中8259发送中断结束命令
MOV AL,20H
OUT DX,AL
JMP QUERY
QUIT: MOV AX,4C00H ;结束程序退出
INT 21H
CODE ENDS
END START
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -