⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 t8259-1.asm

📁 A1.asm 显示程序实验 STACK1 SEGMENT STACK DW 256 DUP(?) STACK1 ENDS DATA SEGMENT USE16 MES1 DB
💻 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 + -