【发布时间】:2018-01-16 10:03:31
【问题描述】:
我是汇编语言的新手,我想用 8086 汇编创建一个程序。 (emu8086)所以程序应该连续发出哔哔声,直到按下键E。现在第一种方法是每次使用简单的跳转来检查输入,这是我想出的代码:
macro beep
mov dl,7h
mov ah,2
int 21h
endm
.model small
.stack 64
.code :
lp:
beep
mov ah,1
int 21h
cmp al,'e'
je end
jmp lp
end:
mov ah,4ch
int 21h
现在我想要实现的是蜂鸣声必须是连续的,我不希望用户在每个循环中都进行输入。类似于 C 中的多线程,蜂鸣声是在另一个线程中完成的。
这在 8086 中是否可能?
【问题讨论】:
-
您可以尝试BIOS
16hservices 而不是DOS21h以获得更多选项来检查键盘(但如果您想要类似动作游戏的重复配置,它仍然会通过重复配置键入键盘来缓冲读取DOS 中的键盘,您必须安装自己的键盘处理程序中断代码,该代码将直接处理来自键盘的中断请求)。我不确定哔声会持续多长时间,即使您连续调用它,DOS 服务也不完全是音乐 API。 -
“这是否可能”:“哔哔”以给定的频率不断打开/关闭蜂鸣器。例如在10k 赫兹,你有 100ms 的时间来找出,如果按键被按下,这应该足够了。所以是的 - 这应该是可能的。