假设微机系统外扩了如下的一个“单脉冲发生器”,该“单脉冲发生器”电路受一个自复开关K的控制,每按一次K,该电路输出一个正脉冲,输入到系统机从8259的IR1作为外部中断请求。 要求:每按一次K,屏幕上显示一行字符串“Welcome!”。主机键盘按任意键,程序结束,返回DOS
时间: 2024-03-09 22:47:51 浏览: 29
这个问题需要编写汇编语言程序来实现,以下是实现该功能的示例代码:
```
.MODEL SMALL
.STACK 100H
.DATA
MSG DB 'Welcome!', '$'
.CODE
MAIN PROC
MOV AX, @DATA
MOV DS, AX
; 初始化8259芯片
MOV AL, 20H
OUT 20H, AL
MOV AL, 0FBH
OUT 21H, AL
MOV AL, 04H
OUT 21H, AL
; 初始化键盘中断
MOV AL, 0Bh
OUT 43H, AL
MOV AX, 1234H
OUT 40H, AL
MOV AL, AH
OUT 40H, AL
; 循环等待K键按下
WAIT:
IN AL, 60H
CMP AL, 0F0H ; 如果是释放按键的消息则忽略
JE WAIT
CMP AL, 0B9H ; 如果是K键按下的消息则进入中断处理程序
JE INT_HANDLER
JMP WAIT
; 中断处理程序
INT_HANDLER:
PUSH AX
PUSH BX
PUSH CX
PUSH DX
; 输出欢迎消息
MOV AX, @DATA
MOV DS, AX
MOV DX, OFFSET MSG
MOV AH, 09H
INT 21H
; 发送中断结束信号给8259芯片
MOV AL, 20H
OUT 20H, AL
POP DX
POP CX
POP BX
POP AX
IRET
MAIN ENDP
END MAIN
```
这个程序会在系统启动后,等待用户按下K键。每次按下K键后,屏幕上会输出一行“Welcome!”的文字。程序会一直等待用户按下键盘上的任意键,直到用户按下键盘上的任意键,程序结束并返回DOS。