假设微机系统外扩了如下的一个“单脉冲发生器”,该“单脉冲发生器”电路受一个自复开关K的控制,每按一次K,该电路输出一个正脉冲,输入到系统机从8259的IR1作为外部中断请求。(要求:每按一次K,屏幕上显示一行字符串“Welcome!”。主机键盘按任意键,程序结束,返回DOS,要求写出完整的源程序。)
时间: 2023-08-09 19:07:20 浏览: 233
这是一个比较复杂的微机系统外扩电路,需要用到一些硬件知识和汇编语言编程技巧。下面是一份可能的源代码,供参考:
```
; 单脉冲发生器程序
.model small
.stack 100h
; 定义常量和变量
port equ 378h ; 并口端口地址
k equ 60h ; 键盘中断号
msg db 'Welcome!', 0
.code
main:
mov ax, @data
mov ds, ax ; 初始化数据段寄存器
; 初始化并口端口
mov dx, port
mov al, 0 ; 关闭所有位
out dx, al
; 初始化键盘中断
mov ah, 25h
mov al, 1
int 21h
; 循环检测自复开关K
mov bx, 0
jmp check
loop:
int 20h ; 等待中断
cmp ah, 1
jne check ; 如果不是键盘中断,继续检测K
mov bx, 1 ; 如果是键盘中断,退出循环
check:
in al, port ; 读取并口端口状态
test al, 1 ; 检测K的状态
jz loop ; 如果K没按下,继续等待
; 发送脉冲
out dx, 1
nop
out dx, 0
; 显示欢迎消息
mov ah, 9
lea dx, msg
int 21h
; 检测键盘输入
mov ah, 1
int 21h
jz loop ; 如果没有按键,继续检测K
; 结束程序
mov ah, 4ch
int 21h
end main
```
这个程序的主要思路是循环检测自复开关K的状态,如果K被按下,则发送一个脉冲信号,并显示一行欢迎消息。程序会一直循环检测K,直到用户按下键盘上的任意键,然后退出程序并返回DOS。需要注意的是,这个程序需要通过并口端口控制外部电路,同时也需要使用键盘中断来检测键盘输入。
阅读全文