📄 keyin.asm
字号:
;采用键盘缓冲区的输入算法
BUF EQU 40H ;缓冲区的首址(在片内RAM中)。
MAX EQU 8 ;缓冲区字节数。
BUFP DATA 30H ;指针变量存放单元。
KEY DATA 31H ;输入键码存放单元。
IN BIT 02H ;输入状态标志。
ORG 0000H
LJMP TEST
ORG 100H
TEST: LCALL INITBUF ;输入缓冲区的初始化
MOV KEY,#1 ;键码为1
LCALL INPUT ;输入到缓冲区
MOV KEY,#5 ;键码为5
LCALL INPUT ;输入到缓冲区
MOV KEY,#0AH;键码为0A(结束)
LCALL INPUT ;输入到缓冲区
STOP: LJMP STOP
INITBUF:MOV BUFP,#0 ;将指针变量指向缓冲区的起始位置。
SETB IN ;激活输入功能,进入输入状态。
RET ;完成输入缓冲区的初始化。
;输入模块
INPUT: MOV A,BUFP ;取指针变量。
CJNE A,#MAX,IN1;缓冲区已满?
SJMP IN2 ;缓冲区已满,退出输入状态。
IN1: MOV A,KEY ;取键码。
CJNE A,#0AH,IN3;是回车键吗?
IN2: CLR IN ;退出输入状态。
RET
IN3: JNC IN2 ;不是数字键,退出输入状态。
MOV A,#BUF ;取缓冲区的首址。
ADD A,BUFP ;加上相对偏移量。
MOV R0,A ;得到实际地址。
MOV @R0,KEY ;将数字键码存入。
INC BUFP ;调整指针变量。
RET ;结束本次输入。
END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -