键盘输入1,屏幕输出字符“A”;输入2,屏幕输出“B”;输入其他字符,屏幕输出“ERROR!”,程序可循环运行,回车键退出,用8086汇编语言编写出完整程序
时间: 2024-09-24 22:08:20 浏览: 28
在8086汇编语言中编写一个简单的控制台输入-输出程序可以分为以下几个步骤。这里提供一个基础的示例,它使用BIOS中断`INT 21H`来处理键盘输入和屏幕输出:
```assembly
; BIOS中断服务表
times 510 - $ + 1 db 0
; 程序开始
org $+13h ; 开始于内存地址0x13h
section .data ; 数据段
msgA db 'A', 0dh, 0ah, '$'
msgB db 'B', 0dh, 0ah, '$'
error db 'ERROR!', 0dh, 0ah, '$'
exitPrompt db 'Press Enter to exit...', 0dh, 0ah, '$'
section .bss ; BSS段(未初始化数据)
input resb 1 ; 用于存储输入的一字节
section .text ; 代码段
main proc far ; 主函数
mov ah, 01h ; 打开键盘输入
int 21h ; 等待用户输入
cmp al, '1' ; 检查输入是否为1
je inputA
cmp al, '2'
je inputB
jmp printError ; 输入不是1或2,显示错误信息
inputA:
mov ah, 09h ; 输出字符'A'
lea dx, msgA
int 21h ; 显示消息
jmp waitEnter
inputB:
mov ah, 09h ; 输出字符'B'
lea dx, msgB
int 21h ; 显示消息
jmp waitEnter
printError:
mov ah, 09h ; 输出错误信息
lea dx, error
int 21h ; 显示错误
waitEnter:
mov ah, 01h ; 请求换行
int 21h ; 清空行
mov ah, 09h ; 输出提示符
lea dx, exitPrompt
int 21h ; 提示用户按Enter退出
; 循环等待用户输入,直到按下Enter键
jmp main ; 无限循环(实际上需要添加检测Enter的代码)
main endp
end main ; 程序结束标志
```
注意:这个程序是一个基本框架,为了实现真正的无限循环并检测Enter键,你需要在`main`循环前添加一个检查键盘状态的子程序,并在适当的地方使用`int 16h`或`in al, 60h`等指令来读取键盘的状态。此外,实际的8086环境可能需要更复杂的中断处理,这里仅作示例参考。
阅读全文