8086 - 嘟嘟直到输入

时间:2018-01-16 10:03:32

标签: assembly emu8086 beep

我是汇编语言的新手,我想用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年?

2 个答案:

答案 0 :(得分:1)

BIOS功能01h检查密钥是否挂起。

  • 如果没有,你立即重新发出哔哔声。
  • 如果存在密钥,则使用BIOS功能00h获取密钥,如果不是“e”,则继续重新发出蜂鸣声。

这可能是在按下角色'e'之前连续发出蜂鸣声的最简单的解决方案。

lp:
 beep
 mov ah, 01h
 int 16h      ;Gives ZF
 jz  lp       ;No key waiting
 mov ah, 00h
 int 16h      ;Gives AX
 cmp al, 'e'
 jne lp
 mov ax, 4C00h
 int 21h

答案 1 :(得分:0)

如果它模拟标准PC环境,您可以设置定时器“芯片”(硬件中为8255)来控制扬声器。打开它并发出哔哔声,直到你把它关闭,无论你的代码在做什么。