📄 ad转换1.asm
字号:
.MODEL SMALL
.DATA
KEEP21 DB ?
STR DB 4 DUP(?)
.STACK
.CODE
START: MOV AX,@DATA ;设置数据段
MOV DS,AX
CLI ;送系统中断
MOV AH,35H
MOV AL,0FH ;送 IRQ7类型码0FH
INT 21H ;保存系统原中断向量
PUSH BX
PUSH ES
PUSH DS
MOV AX,SEG INTPROC ;送新中断向量
MOV DS,AX
MOV DX,OFFSET INTPROC
MOV AH,25H ;DOS功能调用
MOV AL,0FH ;送IRQ7类型码0FH
INT 21H
POP DS
IN AX,21H
MOV KEEP21,AL
AND AL,07FH ;开IRQ7中断源
OUT 21H,AL
MOV CX,300
MOV SI,0
LOOP :
MOV DX,211H
OUT DX,AL
MOV BL,10
DELAY: NOP ;延时
LOOP DELAY
STI
MOV AH,01H ;键盘输入
INT 16H
JZ LOOP
MOV AL,KEEP21
OUT 21H,AL
POP DS
POP DX
MOV AH,25H
MOV AL,0FH
INT 21H
MOV AH,4CH ;返回DOS
INT 21H
INTPROC PROC FAR ;用户中断服务程序
PUSH AX ;保存会发生变化的寄存器
PUSH BX
PUSH DS
MOV AX,@DATA
MOV DS,AX
MOV DX,210H
IN AL,DX
MOV [SI],AL
INC SI
MOV AL,20H
OUT 20H,AL
POP DS ;恢复寄存器
POP BX
POP AX
IRET ;中断返回
INTPROC ENDP
END START
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -