使用汇编语言,设计一个笑脸中断INT 60H,在应用程序中执行中断指令INT 60H时触发该中断。把中断子程序驻留在内存中,写出设计思路以及程序源码
时间: 2024-05-03 13:18:44 浏览: 56
设计思路:
1. 编写中断处理程序,其中包括显示笑脸和清除中断标志两个步骤;
2. 将中断处理程序加载到内存的中断向量表中;
3. 在应用程序中执行中断指令 INT 60H ,即可触发该中断。
程序源码:
```
.MODEL SMALL
.STACK 100H
.DATA
smile DB 0O0H, 0O0H, 0O12H, 0O0H, 0O0H
DB 0O0H, 0O60H, 0O4CH, 0O64H, 0O0H
DB 0O0H, 0O0H, 0O0H, 0O0H, 0O0H
DB 0O0H, 0O0H, 0O0H, 0O0H, 0O0H
DB 0O0H, 0O0H, 0O0H, 0O0H, 0O0H
.CODE
MAIN PROC
MOV AX, @DATA
MOV DS, AX
MOV AH, 25H ; 将中断处理程序加载到内存的中断向量表中
MOV AL, 60H
MOV DX, OFFSET INT60H
INT 21H
MOV AH, 4CH ; 程序结束
INT 21H
MAIN ENDP
INT60H PROC
PUSH AX
PUSH BX
PUSH CX
PUSH DX
MOV AH, 0 ; 显示笑脸
MOV AL, 13H
MOV BH, 0
MOV BL, 1EH
MOV CX, 5
MOV DX, OFFSET smile
INT 10H
MOV AH, 0 ; 清除中断标志
MOV AL, 20H
OUT 20H, AL
POP DX
POP CX
POP BX
POP AX
IRET
INT60H ENDP
END MAIN
```
注意:该程序在 DOS 环境下才能运行。其中,smile 数组存储了笑脸的像素点信息,INT60H 是中断处理程序的标签。在主程序中,将中断处理程序加载到了中断向量表的 INT 60H 处。在应用程序中执行中断指令 INT 60H 时,就会触发这个中断处理程序,从而显示笑脸并清除中断标志。