📄 041236075.asm
字号:
ORG 0000H
MOV DPTR,#TABAL
MOV P0,#0C0H ;刚开始显示0
MOV P2,#00000011B
MOV R6,#1
MOV R7,#5 ;为0加,为1减,为2乘
KAI: MOV 50H,#00H
MOV 51H,#00H ;50H,51H储存一个数,50H为个位
MOV 52H,#00H
MOV 53H,#00H
MOV 54H,#00H ;54H到57H储存结果数
MOV 55H,#00H
MOV 56H,#00H
MOV 57H,#00H
MOV R0,#50H
MAIN:LCALL KS1 ;键盘扫描
JNZ LK1
LCALL DISPLAY1
AJMP MAIN
LK1: LCALL DISPLAY1
LCALL DISPLAY1
ACALL KS1
JNZ LK2
LCALL DISPLAY1
AJMP MAIN
LK2:MOV R2,#0FEH ;有键按下后,判断为哪个键
MOV R4,#00H
LK4:MOV P1,R2
JB P3.0,NEXT2
MOV A,#00H
AJMP LKP
NEXT2:JB P3.1,NEXT3
MOV A,#04H
AJMP LKP
NEXT3:JB P3.2,NEXT4
MOV A,#08H
AJMP LKP
NEXT4:JB P3.3,LINE
MOV A,#0CH
LKP:ADD A,R4 ;计算键码
MOV DPTR,#DUIHUAN
MOVC A,@A+DPTR
CJNE A,#0BH,M5 ;乘法
MOV R7,#2
AJMP JIA
M5:CJNE A,#0CH,M4 ;减法
MOV R7,#1
AJMP JIA
M4:CJNE A,#0DH,M3
AJMP CLEAR
M3:CJNE A,#0FH,M1 ;加法
MOV R7,#0
AJMP JIA
M1:CJNE A,#0EH,M2 ;等于
AJMP DENGYU
M2:MOV @R0,A
CJNE R6,#0,LL
MOV 51H,#0
MOV R6,#1
LL:LCALL DISPLAY1
INC R0
CJNE R0,#52H,UU
MOV R0,#50H
MOV A,50H
MOV 50H,51H
MOV 51H,A
UU:MOV R2,#0FEH
MOV R4,#0
LK3: ACALL DISPLAY1
ACALL KS1
JNZ LK3 ;等待键放开
MOV R2,#0FEH
MOV R4,#0
AJMP MAIN
LINE:INC R4 ;下一列
MOV A,R2
JNB ACC.3,KND
RL A
MOV R2,A
AJMP LK4
KND:AJMP MAIN
;----------判断是否有键按下子程序------------------------------
KS1:MOV P1,#00H
MOV A,P3
CPL A
ANL A,#0FH
RET ;有键按下,A非0
;----------显示子程序----------------------------
DISPLAY1:MOV DPTR,#TABAL
MOV A,50H
MOVC A,@A+DPTR
MOV P0,A
SETB P2.0
LCALL DELAY
CLR P2.0
INC R1
MOV A,51H
MOVC A,@A+DPTR
MOV P0,A
SETB P2.1
LCALL DELAY
CLR P2.1
RET
DISPLAY3:MOV DPTR,#TABAL
MOV A,57H
CJNE A,#0,P11
AJMP P22
P11:MOVC A,@A+DPTR
MOV P0,A
SETB P2.3
LCALL DELAY
CLR P2.3
P22:MOV A,56H
MOV R5,57H
CJNE R5,#0,P33
CJNE A,#0,P33
AJMP P4
P33:MOVC A,@A+DPTR
MOV P0,A
SETB P2.2
LCALL DELAY
CLR P2.2
P4:MOV A,55H
MOV R5,57H
CJNE R5,#0,P5
MOV R5,56H
CJNE R5,#0,P5
CJNE A,#0,P5
AJMP P6
P5:MOVC A,@A+DPTR
MOV P0,A
SETB P2.1
LCALL DELAY
CLR P2.1
P6:MOV A,54H
MOVC A,@A+DPTR
MOV P0,A
SETB P2.0
LCALL DELAY
CLR P2.0
RET
;-------------加,减,乘------------------------
JIA:MOV 52H,50H
MOV 53H,51H
MOV R6,#0
MOV R0,#50H
LKM4: ACALL DISPLAY1
ACALL KS1
JNZ LKM4
JMP MAIN
;-----------DENGYU----等于----------------------------
DENGYU:
CJNE R7,#0,KK1 ;判断进行加或减或乘
AJMP JIAJIA
KK1:CJNE R7,#1,KK2
AJMP JIANJIAN
KK2:CJNE R7,#2,KK3
AJMP CHENGFA
KK3:AJMP KAI
JIAJIA:MOV A,50H ;加法子程序
ADD A,52H
CJNE A,#10,L2
CLR A
INC 51H
AJMP L1
L2:JC L1
SUBB A,#10
INC 51H
L1:MOV 54H,A
MOV A,51H
ADD A,53H
CJNE A,#10,L3
CLR A
INC 56H
AJMP L4
L3:JC L4
SUBB A,#10
INC 56H
L4:MOV 55H,A
AJMP L5 ;-----JIAWAN--
JIANJIAN:MOV A,53H ; 减法子程序
CJNE A,51H,N2 ;先判断哪个数比较大,大的存在53,52H
MOV A,52H
CJNE A,50H,N2
MOV 54H,#0
MOV 55H,#0
AJMP L5
N2: JC DIAN
XJIAN: MOV A,52H ;=====53,52储存大数,51,50储存小数= 相减==
CJNE A,50H,N3
MOV 54H,#0
MOV A,53H
SUBB A,51H
MOV 55H,A
AJMP L5
N3:JNC N8
MOV A,52H
ADD A,#10
SUBB A,50H
MOV 54H,A
DEC 53H
MOV A,53H
SUBB A,51H
MOV 55H,A
AJMP L5
N8:MOV A,52H
SUBB A,50H
MOV 54H,A
MOV A,53H
SUBB A,51H
MOV 55H,A
AJMP L5
DIAN:MOV 56H,#10 ;56H显示负号
MOV A,50H ;50H,51H 和52H,53H 对换
MOV 50H,52H
MOV 52H,A
MOV A,51H
MOV 51H,53H
MOV 53H,A
AJMP XJIAN ;------JIANWAN-----
CHENGFA:MOV A,50H ;乘法子程序
MOV B,52H
MUL AB
MOV B,#10
DIV AB
SWAP A
ADD A,B
MOV R4,A
ANL A,#0F0H
SWAP A
MOV 55H,A
MOV A,R4
ANL A,#0FH
MOV 54H,A ;11WAN
MOV A,50H
MOV B,53H
MUL AB
MOV B,#10
DIV AB
SWAP A
ADD A,B
MOV R4,A
ANL A,#0F0H
SWAP A
MOV 56H,A
MOV A,R4
ANL A,#0FH
ADD A,55H
MOV 55H,A ;21WAN
MOV A,52H
MOV B,51H
MUL AB
MOV B,#10
DIV AB
SWAP A
ADD A,B
MOV R4,A
ANL A,#0F0H
SWAP A
ADD A,56H
MOV 56H,A
MOV A,R4
ANL A,#0FH
ADD A,55H
MOV 55H,A ;12WAN
MOV A,53H
MOV B,51H
MUL AB
MOV B,#10
DIV AB
SWAP A
ADD A,B
MOV R4,A
ANL A,#0F0H
SWAP A
ADD A,57H
MOV 57H,A
MOV A,R4
ANL A,#0FH
ADD A,56H
MOV 56H,A ;22WAN
MOV A,55H
MOV B,#10
DIV AB
SWAP A
ADD A,B
MOV R4,A
ANL A,#0F0H
SWAP A
ADD A,56H
MOV 56H,A
MOV A,R4
ANL A,#0FH
MOV 55H,A
MOV A,56H
MOV B,#10
DIV AB
SWAP A
ADD A,B
MOV R4,A
ANL A,#0F0H
SWAP A
ADD A,57H
MOV 57H,A
MOV A,R4
ANL A,#0FH
MOV 56H,A
AJMP L5 ;---CHENGFA--WAN
L5:LCALL DISPLAY3
LCALL KS1
JNZ L5
MOV R7,#5
L6:LCALL DISPLAY3
LCALL KS1
JZ L6
AJMP KAI
;-------------------CLEAR----------------------
CLEAR:AJMP KAI
;----------------DELAY------------------------------
DELAY:MOV R3,#01H
LOOP2:MOV R2,#128
LOOP1:DJNZ R2,LOOP1
DJNZ R3,LOOP2
RET
;--------------------列表---------------------------------------------------
TABAL:DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H,0BFH
DUIHUAN:DB 07H,08H,09H,0AH,04H,05H,06H,0BH,01H,02H,03H,0CH,0DH,00H,0EH,0FH
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -