📄 5.2.asm
字号:
;----------------
;编译模式="DOS"
;----------------
.model small
.stack 200h
.data
KEEP21 DB ?
KEEPA1 DB ?
COUNT DB 10
MSG1 DB 'THIS IS A 8259A INTERRUPT!',13,10,'$'
.CODE
START:
MOV AX,@DATA
MOV DS,AX
CLI
MOV AH,35H
MOV AL,0BH
INT 21H
PUSH ES
PUSH BX
PUSH DS
MOV AX,SEG INTPROC
MOV DS,AX
MOV DX,OFFSET INTPROC
MOV AH,25H
MOV AL,71H
INT 21H
POP DS
IN AL,0A1H
MOV KEEPA1,AL
MOV AL,0FDH
OUT 0A1H,AL
IN AL,21H
MOV KEEP21,AL
AND AL,0F9H
OUT 21H,AL
MOV BX,10
STI
WAIT1:CALL INTPROC
DEC BX
CMP BX,0
JNZ WAIT1
MOV AL,KEEP21
OUT 21H,AL
POP DX
POP DS
MOV AH,25H
MOV AL,0BH
INT 21H
MOV AH,4CH
INT 21H
RET
INTPROC PROC NEAR
STI
PUSH DS
PUSH AX
PUSH BX
MOV AX,@DATA
MOV DS,AX
MOV AH,07H
INT 10H
MOV AH,02H
MOV BH,1
MOV DH,05
MOV DL,10
INT 10H
MOV AH,02H
MOV BH,2
MOV DH,20
MOV DL,65
INT 10H
MOV DX,OFFSET MSG1
MOV AH,9
INT 21H
CLI
MOV AL,20H
OUT 20H,AL
OUT 0A0H,AL
POP BX
POP AX
POP DS
STI
IRET
INTPROC ENDP
END START
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -