七段数码管键盘输入显示0-9汇编代码
时间: 2023-06-26 11:07:45 浏览: 128
数码管显示0-9代码
5星 · 资源好评率100%
以下是一份8086汇编代码,用于从七段数码管键盘上读取输入并将其显示在数码管上。这里假设使用的是共阴极的七段数码管。
```
.MODEL SMALL
.STACK 100H
.DATA
KEYBOARD_BUFFER DB ?
DISPLAY_BUFFER DB 0, 0, 0, 0, 0, 0, 0, 0
.CODE
MOV AX, @DATA
MOV DS, AX
; 接收键盘输入
WAIT_FOR_INPUT:
MOV AH, 01H ; BIOS键盘输入函数
INT 21H
JZ WAIT_FOR_INPUT ; 如果没有按键,则继续等待
MOV KEYBOARD_BUFFER, AL ; 将按键ASCII码存入键盘缓冲区
; 转换键盘输入
MOV AL, KEYBOARD_BUFFER
SUB AL, 30H ; 将ASCII码转换为数字值
CMP AL, 9 ; 检查是否在0-9范围内
JA WAIT_FOR_INPUT ; 如果不是,则重新等待输入
; 显示数字值
MOV BL, AL ; 保存数字值
MOV AH, 00H ; BIOS显示函数
MOV AL, BL ; 数字值
MOV CX, 01H ; 数字数量
MOV DX, 0000H ; 显示位置(0,0)
INT 10H ; 显示数字
; 将数字值转换为七段数码管码
MOV AL, BL
MOV BL, 0 ; 清零七段数码管码
CMP AL, 0
JE SKIP_DIGIT ; 如果数字值为0,则跳过转换
; 转换数字值为七段数码管码
CMP AL, 1
JE DIGIT_1
CMP AL, 2
JE DIGIT_2
CMP AL, 3
JE DIGIT_3
CMP AL, 4
JE DIGIT_4
CMP AL, 5
JE DIGIT_5
CMP AL, 6
JE DIGIT_6
CMP AL, 7
JE DIGIT_7
CMP AL, 8
JE DIGIT_8
CMP AL, 9
JE DIGIT_9
DIGIT_1:
MOV BL, 0111111B
JMP SKIP_DIGIT
DIGIT_2:
MOV BL, 0011000B
JMP SKIP_DIGIT
DIGIT_3:
MOV BL, 0110110B
JMP SKIP_DIGIT
DIGIT_4:
MOV BL, 0111100B
JMP SKIP_DIGIT
DIGIT_5:
MOV BL, 0100101B
JMP SKIP_DIGIT
DIGIT_6:
MOV BL, 0101111B
JMP SKIP_DIGIT
DIGIT_7:
MOV BL, 0110000B
JMP SKIP_DIGIT
DIGIT_8:
MOV BL, 0111111B
JMP SKIP_DIGIT
DIGIT_9:
MOV BL, 0111101B
SKIP_DIGIT:
MOV DISPLAY_BUFFER, BL ; 将七段数码管码存入显示缓冲区
; 显示七段数码管码
MOV AH, 00H ; BIOS显示函数
MOV CX, 8 ; 数字数量
LEA DX, DISPLAY_BUFFER ; 显示位置
INT 10H ; 显示数字
JMP WAIT_FOR_INPUT ; 循环等待输入
.EXIT
MOV AH, 4CH
INT 21H
END
```
此代码使用BIOS键盘输入和显示函数,因此只能在DOS环境下运行。如果在现代操作系统上运行,则需要使用适当的模拟器或虚拟机。
阅读全文