键盘输入1,屏幕输出字符“A”;输入2,屏幕输出“B”;输入其他字符,屏幕输出“ERROR!”,程序可循环运行,回车键退出,用8086汇编语言编写程序
时间: 2024-09-23 20:09:00 浏览: 30
在8086汇编语言中编写这样的程序,我们需要利用中断结构、键盘输入处理以及控制台输出功能。以下是简化的示例代码,这里假设我们使用INT 16H中断向量来读取键盘输入,并使用OUT指令来输出字符到屏幕:
```assembly
[ORG 100h] ; 开始地址
; 定义中断服务程序 (ISR) 用于接收键盘输入
KEYBOARD_ISR PROC
MOV AH, 01h ; BIOS键盘中断向量
INT 16h ; 发送中断请求
CMP AL, '1' ; 检查是否输入1
JE INPUT_A
CMP AL, '2' ; 或者检查是否输入2
JE INPUT_B
JMP ERROR ; 否则输出ERROR
INPUT_A:
MOV DL, 'A' ; 将'A'转换为ASCII码并输出
MOV AH, 02h ; 输出字符到屏幕的中断向量
INT 21h
JMP LOOP ; 返回主循环
INPUT_B:
MOV DL, 'B' ; 类似地,将'B'输出到屏幕
INT 21h
JMP LOOP
ERROR:
MOV DL, 'E' ; 输出'ERROR'
OUT 7Ch, DL ; 控制台输出错误字符
LOOP:
MOV AH, 9h ; 主循环等待键盘输入
INT 16h
CMP AL, 0Dh ; 如果按下回车键
JNE KEYBOARD_ISR ; 继续接收新的输入
JMP EXIT ; 退出程序
EXIT:
MOV AH, 4Ch ; 结束程序
INT 21h
KEYBOARD_ISR ENDP
; 主程序入口点
MAIN PROC
MOV AX, @DATA ; 初始化数据段指针
MOV DS, AX
; 调用键盘中断服务程序
JMP KEYBOARD_ISR
MAIN ENDP
; 数据段定义
.DATA
...
; 这里省略了数据段的具体内容,因为实际项目中需要存储键盘映射等信息
END MAIN
```
注意:这只是一个基础的框架,实际编写过程中可能需要更多的细节,比如错误处理和更复杂的键盘输入映射。此外,这个例子假定你已经熟悉8086汇编语言的基本结构和BIOS中断服务。