当前位置:文档之家› 8259实验程序

8259实验程序


DB 90H,0A3H,0A1H,86H,8FH
WBUF1:MOV BX,0
ADD BX,2
;将显示8259-1的数据写入内存。
MOV WORD PTR DS:[BX+077AH],1701H MOV WORD PTR DS:[BX+077AH],0509H ADD BX,2
MOV WORD PTR DS:[BX+077AH],0802H
INTREEUP7: CLI
;发生中断7时,调用的中断处理程序。关中断。
MOV AL,20H MOV DX,INTPORT1 OUT DX,AL ;写操作命令字OCW2,使得工作在一般EOI方式。 MOV DS:[077AH],1C1CH
MOV DS:[077CH],101BH
MOV DS:[077Eh],1010H INTRE3:CALL DISP JMP INTRE3 ;显示EER。 ;进入循环。
CODE SEGMENT ASSUME CS:CODE INTPORT1 EQU 0060H INTPORT2 EQU 0061H INTQ3 EQU INTREEUP3 INTQ7 EQU INTREEUP7 ORG 11A0H START: CLD ;清除DF, CALL WBUF1;将显示8259-1的数据写入内存。 CALL WRINTVER;装入中断矢量表。 MOV AL,13H MOV DX,INTPORT1 OUT DX,AL;将初始化命令字ICW1写入0060H地址,使
;得8259工作在边沿触发,单片8259,需要ICW4(8086模式)。
MOV MOV OUT MOV OUT
AL,08H DX,INTPORT2 DX,AL;写初始化命令字ICW2到0061H。中断矢量从08H开始。 AL,09H DX,AL;写初始化命令字ICW4到0061H地址。工作在一般嵌套方式,
INTREEUP3: CLI MOV AL,DS:[0701H] ;读取计数值。 CALL CONVERS;调用子程序,将中断计数值存放到077AH单元。 MOV BX,077BH MOV AL,10H MOV CX,05H INTRE0: MOV BYTE PTR DS:[BX],AL INC BX LOOP INTRE0;将077BH~077FH单元,写为10H。 MOV AL,20H MOV DX,INTPORT1 OUT DX,AL;写操作命令字OCW2,使得工作在一般EOI方式。
DEC DX
SHR AH,01H JNZ DISP0
MOV DX,0FF22H
MOV AL,0FFH
OUT DX,AL
RET DATA1:DB C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H
DB 80H,90H,88H,83H,0C6H,0A1H,86H,8EH
DB 0FFH,0CH,89H,0DEH,0C7H,8CH,0F3H,0BFH
DISP: MOV DX,077FH;显示子程序。将077AH~077FH中数据显示。 MOV AH,20H DISP0: MOV CX,00FFH MOV BX,DX MOV BL,DS:[BX] MOV BH,0H PUSH DX MOV DX,0FF22H MOV AL,CS:[BX+127BH] OUT DX,AL MOV DX,0FF21H MOV AL,AH OUT DX,AL DISP1: LOOP DISP1 POP DX
ADD BYTE PTR DS:[0701H],01H CMP BYTE PTR DS:[0701H],06H
JNA
INTRE2
;小于Байду номын сангаас于转移。
MOV DS:[077AH],191AH MOV DS:[077CH],1819H MOV DS:[077Eh],1010H INTRE1: CALL DISP ;在屏幕上显示GOOD。
; 缓冲方式,非自动EOI方式,8086模式。
MOV AL,0F7H OUT DX,AL;写操作命令字OCW1。除IR3外,其他中断全部屏蔽。 MOV BYTE PTR DS:[0701H],01H ;TIME=1 STI WATING: CALL DISP JMP WATING;跳转到WATING,如此循环,等待中断的发生。
JMP INTRE1 ;进入死循环。
CONVERS: AND AL,0FH
MOV BX,077AH
MOV DS:[BX],AL
INC RET INTRE2: MOV AL,20H MOV DX,INTPORT1 BX
OUT DX,AL;写操作命令字OCW2,使得工作在一般EOI方式。
STI IRET ;开中断,为下一次中断作准备。 ;中断返回。
RET CODE ENDS END START
WRINTVER:MOV AX,0H ;装入中断矢量表到内存子程序。 MOV ES,AX MOV DI,002CH LEA AX,INTQ3 STOSW MOV AX,0000h STOSW MOV DI,003CH LEA AX,INTQ7 STOSW MOV AX,0000h STOSW RET
相关主题