📄 计算器一位相加.asm
字号:
ORG 00H
LJMP MAIN
ORG 30H
MAIN:MOV p0,#0 ;给数码管初显示
S: MOV R0,#20H ;保存数据用
START:
MOV P3,#0FEH ;判断第一行是否有键按下
MOV R2,#4 ;R2控制行
MOV A,#0
L2: JNB P3.7 ,L1
INC A
JNB P3.6, L1
INC A
JNB P3.5, L1
INC A
JNB P3.4, L1
DJNZ R2,L3 ; 是否倒带最后一行
LJMP START ;到最后一行,重新转到第一行判断是否有键按下
L3: INC A ; 判断下一行是否有键按下
MOV R7,A
MOV A,P3
RL A
MOV P3,A
MOV A,R7
LJMP L2
L1: CJNE A,#10,GO
JIA : MOV 21H,#1 ; 符号位用1表示加
INC R0
LJMP START
GO: JNC FUHAO ; A > 10 跳到 FUHAO
MOV @R0,A
INC R0
MOV DPTR,#TAB
MOVC A,@A+DPTR
MOV P0,A
LJMP START
TAB :DB 06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH,3FH
FUHAO:CJNE A,#11,EQUAL ; A=11,标志为减法运算
JIAN:MOV 21H,#0 ; 符号位用 0 表示减
INC R0
LJMP START
EQUAL:MOV A,21H ; 按下等于号后执行加减法
CJNE A,#0,JIA1
JIAN1:CLR C ; 减法运算
MOV A,20H
SUBB A,22H
MOV DPTR,#TAB
MOVC A,@A+DPTR
MOV P0,A
LJMP S
JIA1:MOV A,20H ; 加法运算
ADD A,22H
ADD A,#1
MOV DPTR,#TAB
MOVC A,@A+DPTR
MOV P0,A
LJMP S
DEL :MOV R7,#02H
KKK:MOV R6,#0FFH
DJNZ R6,$
DJNZ R7,KKK
RET
END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -