📜  如何获取键盘输入以及如果没有输入被按下程序不会停止 8086 (1)

📅  最后修改于: 2023-12-03 15:38:53.814000             🧑  作者: Mango

如何获取键盘输入以及如果没有输入被按下程序不会停止 8086

在8086汇编语言中,我们可以通过中断来获取键盘输入,以及通过循环检测输入是否被按下来实现程序不停止的需求。

中断获取键盘输入

键盘输入可以通过中断INT 16H来获取。其中,AH寄存器的值表示需要执行的操作,AL寄存器的值表示输入字符的ASCII码。

我们可以通过以下代码来实现:

; 获取键盘输入
mov ah, 01h  ; 设置操作为读取单个字符
int 16h     ; 执行中断

这段代码执行后,用户在键盘上敲击的字符会被存储在AL寄存器中。

循环检测键盘输入

为了实现程序不停止的需求,我们需要循环检测输入是否被按下。只有当输入被按下时,程序才会停止。

我们可以通过以下代码来实现:

; 循环检测键盘输入
inputLoop:
    mov ah, 01h  ; 检测键盘输入
    int 16h     ; 执行中断
    jz inputLoop  ; 如果未输入,则继续检测

这段代码会一直循环检测输入是否被按下,直到有输入为止。

完整代码
; 如何获取键盘输入以及如果没有输入被按下程序不会停止

org 100h

section .data

section .text

    ; 获取键盘输入
    mov ah, 01h  ; 设置操作为读取单个字符
    int 16h     ; 执行中断

    ; 循环检测键盘输入
inputLoop:
    mov ah, 01h  ; 检测键盘输入
    int 16h     ; 执行中断
    jz inputLoop  ; 如果未输入,则继续检测

    ; 按下了输入,程序停止
end:
    ret

section .data

在这段代码中,我们首先通过中断获取键盘输入,然后在循环中不断检测用户是否按下了输入,一旦按下就跳转到程序结束的标签处。

注意:在8086汇编语言中,程序必须以ret作为结束语句。因此,在程序结束处我们需要使用ret指令。