📅  最后修改于: 2023-12-03 15:38:53.814000             🧑  作者: Mango
在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
指令。