📄 中断控制8259的应用.txt
字号:
CODE SEGMENT
ASSUME CS:CODE
INTPORT1 EQU 0060H
INTPORT2 EQU 0061H
INTQ3 EQU INTREEUP3
INTQ7 EQU INTREEUP7
ORG 11A0H
START: CLD
CALL WBUF1
CALL WRINTVER ;WRITE INTRRUPT
MOV AL,13H
MOV DX,INTPORT1
OUT DX,AL
MOV AL,08H
MOV DX,INTPORT2
OUT DX,AL
MOV AL,09H
OUT DX,AL
MOV AL,0F7H
OUT DX,AL
MOV BYTE PTR DS:[0701H],01H ;TIME=1
STI
WATING: CALL DISP ;DISP 8259-1
JMP WATING
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
INTREEUP3:CLI
MOV AL,DS:[0701H]
CALL CONVERS
MOV BX,077BH
MOV AL,10H
MOV CX,05H
INTRE0: MOV BYTE PTR DS:[BX],AL
INC BX
LOOP INTRE0
MOV AL,20H
MOV DX,INTPORT1
OUT DX,AL
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
JMP INTRE1
CONVERS: AND AL,0FH
MOV BX,077AH
MOV DS:[BX],AL
INC BX
RET
INTRE2: MOV AL,20H
MOV DX,INTPORT1
OUT DX,AL
STI
IRET
INTREEUP7: CLI
MOV AL,20H
MOV DX,INTPORT1
OUT DX,AL
MOV DS:[077AH],1C1CH
MOV DS:[077CH],101BH
mov DS:[077Eh],1010H
INTRE3: CALL DISP
JMP INTRE3
disp: mov dx,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
dec dx
shr ah,01h
jnz disp0
mov dx,0ff22h
mov al,0FFH
OUT DX,AL
ret
data1: db 0c0h,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
db 90h,0a3h,0a1h,86h,8fh
WBUF1: MOV BX,0
MOV WORD PTR DS:[BX+077AH],1701H
ADD BX,2
MOV WORD PTR DS:[BX+077AH],0509H
ADD BX,2
MOV WORD PTR DS:[BX+077AH],0802H
RET
CODE ENDS
END START
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -