计算器.asm
来自「proteus仿真实例大全」· 汇编 代码 · 共 2,743 行 · 第 1/3 页
ASM
2,743 行
;;;;;;;;;;;;;;;;;;;;;;;;;;;端口定义;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
CSA EQU p2.4
CSB EQU p2.3
rs EQU P2.2
rw EQU P2.1
E EQU P2.0
;;;;;;;;;;;;;;;;;;;;;;;;;;;单元定义;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
COM EQU 21H
DAT EQU 22H
column EQU 23H
pagef EQU 24h
cpage EQU 25H
ccolumn EQU 26H
codes EQU 27h
column2 EQU 28H
pagef2 equ 29h
cpage2 EQU 2aH
ccolumn2 EQU 2bH
column3 EQU 2eH
pagef3 equ 2fh
cpage3 EQU 30H
ccolumn3 EQU 31H
column4 EQU 32H
pagef4 equ 33h
cpage4 EQU 34H
ccolumn4 EQU 35H
column5 EQU 36H
pagef5 equ 37h
cpage5 EQU 38H
ccolumn5 EQU 39H
ORG 0
LJMP START
START:MOV SP,#60H
LCALL INT ;调用初始化子程序
START1:LCALL CLEAR ;调用清屏子程序
;*********************************固定字符显示
mov column3,#0
mov pagef3,#0
mov codes,#0
lcall writeleft2
mov column3,#0
mov pagef3,#4
mov codes,#2
lcall writeleft2
mov column3,#16
mov pagef3,#4
mov codes,#3
lcall writeleft2
mov column3,#16
mov pagef3,#0
mov codes,#1
lcall writeleft2
mov column,#32
mov pagef,#0
mov codes,#1
lcall writeleft
mov column3,#0
mov pagef3,#2
mov codes,#0
lcall writeleft2
mov column,#40
mov pagef,#2
mov codes,#15
lcall writeleft
mov column,#40
mov pagef,#0
mov codes,#15
lcall writeleft
mov column3,#16
mov pagef3,#2
mov codes,#1
lcall writeleft2
mov column,#32
mov pagef,#2
mov codes,#2
lcall writeleft
MOV R0,#0
MOV R1,#255
QQQ:MOV @R0,#0
INC R0
DJNZ R1,QQQ
;************************************固定字符显示结束,键盘扫描开始
dd:mov r0,#0f7h
mov r1,#0
cc:mov a,r0
mov p1,a
mov a,p1
mov r2,a
setb c
mov r3,#4
bb:rlc a
jnc aa
ee:inc r1
djnz r3,bb
mov a,r0
setb c
rrc a
mov r0,a
jc cc
ljmp dd
KAOO:LJMP KAO
BBB2:LJMP BB2
aa:lcall mm
mov a,p1
xrl a,r2
jnz ee
ff:mov a,p1
xrl a,r2
jz ff
MOV A,51H
CJNE A,#1,BBB2 ;键盘扫描结束,加法运算开始
MOV A,R1
CJNE A,#14,KAOO
MOV 47H,R1
LCALL A31
MOV A,40H
ADD A,60H
MOV B,#10
DIV AB
MOV 40H,B
ADD A,41H
ADD A,71H
MOV B,#10
DIV AB
MOV 41H,B
ADD A,42H
ADD A,72H
MOV B,#10
DIV AB
MOV 42H,B
ADD A,44H
ADD A,74H
MOV B,#10
DIV AB
MOV 44H,B
ADD A,45H
ADD A,75H
MOV B,#10
DIV AB
MOV 45H,B
ADD A,46H
ADD A,76H
MOV B,#10
DIV AB
MOV 46H,B
ADD A,48H
ADD A,78H
MOV B,#10
DIV AB
MOV 48H,B
ADD A,49H
ADD A,79H
MOV B,#10
DIV AB
MOV 49H,B
MOV 0CEH,A
CJNE A,#0,CC0
MOV A,49H
CJNE A,#0,CC1
MOV A,48H
CJNE A,#0,CC2
MOV A,46H
CJNE A,#0,CC3
MOV A,45H
CJNE A,#0,CC4
MOV A,44H
CJNE A,#0,CC5
MOV A,42H
CJNE A,#0,CC6
MOV A,41H
CJNE A,#0,CC7
MOV A,40H
CJNE A,#0,CC8
CC0:LCALL A08
CC1:LCALL A07
CC2:LCALL A06
CC3:LCALL A05
CC4:LCALL A04
CC5:LCALL A03
CC6:LCALL A02
CC7:LCALL A01
CC8:LCALL A00
LJMP DD
KAO:CJNE A,#15,KAO1
LJMP START1
KAO1:MOV A,50H
CJNE A,#0,A1A1
MOV 60H,R1
LCALL A8
INC 50H
ljmp dd
A1A1:CJNE A,#1,A1A2
MOV 71H,60H
MOV 60H,R1
LCALL A8
LCALL A9
INC 50H
LJMP DD
A1A2:CJNE A,#2,A1A3
MOV 72H,71H
MOV 71H,60H
MOV 60H,R1
LCALL A8
LCALL A9
LCALL A10
INC 50H
LJMP DD
A1A3:CJNE A,#3,A1A5
MOV 74H,72H
MOV 72H,71H
MOV 71H,60H
MOV 60H,R1
LCALL A8
LCALL A9
LCALL A10
LCALL A11
INC 50H
LJMP DD
A1A5:CJNE A,#4,A1A6
MOV 75H,74H
MOV 74H,72H
MOV 72H,71H
MOV 71H,60H
MOV 60H,R1
LCALL A8
LCALL A9
LCALL A10
LCALL A11
LCALL A12
INC 50H
LJMP DD
A1A6:CJNE A,#5,A1A7
MOV 76H,75H
MOV 75H,74H
MOV 74H,72H
MOV 72H,71H
MOV 71H,60H
MOV 60H,R1
LCALL A8
LCALL A9
LCALL A10
LCALL A11
LCALL A12
LCALL A13
INC 50H
LJMP DD
A1A7:CJNE A,#6,A1A9
MOV 78H,76H
MOV 76H,75H
MOV 75H,74H
MOV 74H,72H
MOV 72H,71H
MOV 71H,60H
MOV 60H,R1
LCALL A8
LCALL A9
LCALL A10
LCALL A11
LCALL A12
LCALL A13
LCALL A14
INC 50H
LJMP DD
A1A9:CJNE A,#7,A1A10
MOV 79H,78H
MOV 78H,76H
MOV 76H,75H
MOV 75H,74H
MOV 74H,72H
MOV 72H,71H
MOV 71H,60H
MOV 60H,R1
LCALL A8
LCALL A9
LCALL A10
LCALL A11
LCALL A12
LCALL A13
LCALL A14
LCALL A15
INC 50H
A1A10:LJMP DD
BBB3:LJMP BB33
KAOO2:LJMP KAO2
BB2:CJNE A,#2,BBB3 ;加法运算结束,减法运算开始
MOV A,R1
CJNE A,#14,KAOO2
MOV 47H,R1
LCALL A31
MOV A,49H
CJNE A,79H,NEXT0
mov A,48H
CJNE A,78H,NEXT1
mov A,46H
CJNE A,76H,NEXT2
mov A,45H
CJNE A,75H,NEXT3
mov A,44H
CJNE A,74H,NEXT4
mov A,42H
CJNE A,72H,NEXT5
mov A,41H
CJNE A,71H,NEXT6
mov A,40H
CJNE A,60H,NEXT7
OO:LJMP MMM
NEXT0:CLR C
SUBB A,79H
JNC OO
LJMP LAJI
NEXT1:CLR C
SUBB A,78H
JNC OO
LJMP LAJI
NEXT2:CLR C
SUBB A,76H
JNC OO
LJMP LAJI
NEXT3:CLR C
SUBB A,75H
JNC OO
LJMP LAJI
NEXT4:CLR C
SUBB A,74H
JNC OO
LJMP LAJI
NEXT5:CLR C
SUBB A,72H
JNC OO
LJMP LAJI
NEXT6:CLR C
SUBB A,71H
JNC OO
LJMP LAJI
NEXT7:CLR C
SUBB A,60H
JNC OO
LAJI:LCALL A32
DEC 79H
MOV A,60H
ADD A,#10
MOV 60H,A
MOV A,71H
ADD A,#9
MOV 71H,A
MOV A,72H
ADD A,#9
MOV 72H,A
MOV A,74H
ADD A,#9
MOV 74H,A
MOV A,75H
ADD A,#9
MOV 75H,A
MOV A,76H
ADD A,#9
MOV 76H,A
MOV A,78H
ADD A,#9
MOV 78H,A
CLR C
MOV A,60H
SUBB A,40H
MOV B,#10
DIV AB
MOV 40H,B
ADD A,71H
SUBB A,41H
MOV B,#10
DIV AB
MOV 41H,B
ADD A,72H
SUBB A,42H
MOV B,#10
DIV AB
MOV 42H,B
ADD A,74H
SUBB A,44H
MOV B,#10
DIV AB
MOV 44H,B
ADD A,75H
SUBB A,45H
MOV B,#10
DIV AB
MOV 45H,B
ADD A,76H
SUBB A,46H
MOV B,#10
DIV AB
MOV 46H,B
ADD A,78H
SUBB A,48H
MOV B,#10
DIV AB
MOV 48H,B
ADD A,79H
CJNE A,#0,xxx1
MOV A,48H
CJNE A,#0,C00C1
MOV A,46H
CJNE A,#0,C00C2
MOV A,45H
CJNE A,#0,C00C3
MOV A,44H
CJNE A,#0,C00C4
MOV A,42H
CJNE A,#0,C00C5
MOV A,41H
CJNE A,#0,C00C6
MOV A,40H
CJNE A,#0,C00C7
XxX1:SUBB A,49H
MOV B,#10
DIV AB
MOV 49H,B
MOV A,49H
CJNE A,#0,C00C0
LJMP C00C1
C00C0:LCALL A07
C00C1:LCALL A06
C00C2:LCALL A05
C00C3:LCALL A04
C00C4:LCALL A03
C00C5:LCALL A02
C00C6:LCALL A01
C00C7:LCALL A00
LJMP DD
MMM:DEC 49H
MOV A,40H
ADD A,#10
MOV 40H,A
MOV A,41H
ADD A,#9
MOV 41H,A
MOV A,42H
ADD A,#9
MOV 42H,A
MOV A,44H
ADD A,#9
MOV 44H,A
MOV A,45H
ADD A,#9
MOV 45H,A
MOV A,46H
ADD A,#9
MOV 46H,A
MOV A,48H
ADD A,#9
MOV 48H,A
CLR C
MOV A,40H
SUBB A,60H
MOV B,#10
DIV AB
MOV 40H,B
ADD A,41H
SUBB A,71H
MOV B,#10
DIV AB
MOV 41H,B
ADD A,42H
SUBB A,72H
MOV B,#10
DIV AB
MOV 42H,B
ADD A,44H
SUBB A,74H
MOV B,#10
DIV AB
MOV 44H,B
ADD A,45H
SUBB A,75H
MOV B,#10
DIV AB
MOV 45H,B
ADD A,46H
SUBB A,76H
MOV B,#10
DIV AB
MOV 46H,B
ADD A,48H
SUBB A,78H
MOV B,#10
DIV AB
MOV 48H,B
ADD A,49H
CJNE A,#0,xx1
MOV A,48H
CJNE A,#0,C0C1
MOV A,46H
CJNE A,#0,C0C2
MOV A,45H
CJNE A,#0,C0C3
MOV A,44H
CJNE A,#0,C0C4
MOV A,42H
CJNE A,#0,C0C5
MOV A,41H
CJNE A,#0,C0C6
MOV A,40H
CJNE A,#0,C0C7
XX1:SUBB A,79H
MOV B,#10
DIV AB
MOV 49H,B
MOV A,49H
CJNE A,#0,C0C0
LJMP C0C1
C0C0:LCALL A07
C0C1:LCALL A06
C0C2:LCALL A05
C0C3:LCALL A04
C0C4:LCALL A03
C0C5:LCALL A02
C0C6:LCALL A01
C0C7:LCALL A00
LJMP DD
KAO2:CJNE A,#15,KAOO1
LJMP START1
KAOO1:
MOV A,50H
CJNE A,#0,A11A1
MOV 60H,R1
LCALL A8
INC 50H
ljmp dd
A11A1:CJNE A,#1,A11A2
MOV 71H,60H
MOV 60H,R1
LCALL A8
LCALL A9
INC 50H
LJMP DD
A11A2:CJNE A,#2,A11A3
MOV 72H,71H
MOV 71H,60H
MOV 60H,R1
LCALL A8
LCALL A9
LCALL A10
INC 50H
LJMP DD
A11A3:CJNE A,#3,A11A5
MOV 74H,72H
MOV 72H,71H
MOV 71H,60H
MOV 60H,R1
LCALL A8
LCALL A9
LCALL A10
LCALL A11
INC 50H
LJMP DD
A11A5:CJNE A,#4,A11A6
MOV 75H,74H
MOV 74H,72H
MOV 72H,71H
MOV 71H,60H
MOV 60H,R1
LCALL A8
LCALL A9
LCALL A10
LCALL A11
LCALL A12
INC 50H
LJMP DD
A11A6:CJNE A,#5,A11A7
MOV 76H,75H
MOV 75H,74H
MOV 74H,72H
MOV 72H,71H
MOV 71H,60H
MOV 60H,R1
LCALL A8
LCALL A9
LCALL A10
LCALL A11
LCALL A12
LCALL A13
INC 50H
LJMP DD
A11A7:CJNE A,#6,A11A9
MOV 78H,76H
MOV 76H,75H
MOV 75H,74H
MOV 74H,72H
MOV 72H,71H
MOV 71H,60H
MOV 60H,R1
LCALL A8
LCALL A9
LCALL A10
LCALL A11
LCALL A12
LCALL A13
LCALL A14
INC 50H
LJMP DD
A11A9:CJNE A,#7,A11A10
MOV 79H,78H
MOV 78H,76H
MOV 76H,75H
MOV 75H,74H
MOV 74H,72H
MOV 72H,71H
MOV 71H,60H
MOV 60H,R1
LCALL A8
LCALL A9
LCALL A10
LCALL A11
LCALL A12
LCALL A13
LCALL A14
LCALL A15
INC 50H
A11A10:LJMP DD
BBBB2:LJMP YY1
KAOOO:LJMP KAO3
BB33:CJNE A,#3,BBBB2 ;减法运算结束,乘法运算开始
MOV A,R1
CJNE A,#14,KAOOO
MOV 47H,R1
LCALL A31
MOV B,40H
MOV A,60H
MUL AB
MOV B,#10
DIV AB
MOV 3AH,B
MOV 91H,A
MOV A,60H
MOV B,41H
MUL AB
MOV B,#10
ADD A,91H
DIV AB
MOV 3BH,B
MOV 91H,A
MOV A,60H
MOV B,42H
MUL AB
MOV B,#10
ADD A,91H
DIV AB
MOV 3CH,B
MOV 91H,A
MOV A,60H
MOV B,44H
MUL AB
MOV B,#10
ADD A,91H
DIV AB
MOV 3DH,B
MOV 91H,A
MOV A,60H
MOV B,45H
MUL AB
MOV B,#10
ADD A,91H
DIV AB
MOV 3EH,B
MOV 91H,A
MOV A,60H
MOV B,46H
MUL AB
MOV B,#10
ADD A,91H
DIV AB
MOV 3FH,B
MOV 91H,A
MOV A,60H
MOV B,48H
MUL AB
MOV B,#10
ADD A,91H
DIV AB
MOV 52H,B
MOV 91H,A
MOV A,60H
MOV B,49H
MUL AB
MOV B,#10
ADD A,91H
DIV AB
MOV 53H,B
MOV 0E1H,A
;**************************第一次乘法结束,第二次乘法运算开始
MOV A,71H
MOV B,40H
MUL AB
MOV B,#10
DIV AB
MOV 58H,B
MOV 91H,A
MOV A,71H
MOV B,41H
MUL AB
MOV B,#10
ADD A,91H
DIV AB
MOV 59H,B
MOV 91H,A
MOV A,71H
MOV B,42H
MUL AB
MOV B,#10
ADD A,91H
DIV AB
MOV 5AH,B
MOV 91H,A
MOV A,71H
MOV B,44H
MUL AB
MOV B,#10
ADD A,91H
DIV AB
MOV 5BH,B
MOV 91H,A
MOV A,71H
MOV B,45H
MUL AB
MOV B,#10
ADD A,91H
DIV AB
MOV 5CH,B
MOV 91H,A
MOV A,71H
MOV B,46H
MUL AB
MOV B,#10
ADD A,91H
DIV AB
MOV 5DH,B
MOV 91H,A
MOV A,71H
MOV B,48H
MUL AB
MOV B,#10
ADD A,91H
DIV AB
MOV 5EH,B
MOV 91H,A
MOV A,71H
MOV B,49H
MUL AB
MOV B,#10
ADD A,91H
DIV AB
MOV 5FH,B
MOV 0E2H,A
;*********************************第二次乘法结束,第三次乘法运算开始
MOV A,72H
MOV B,40H
MUL AB
MOV B,#10
DIV AB
MOV 54H,B
MOV 91H,A
MOV A,72H
MOV B,41H
MUL AB
MOV B,#10
ADD A,91H
DIV AB
MOV 61H,B
MOV 91H,A
MOV A,72H
MOV B,42H
MUL AB
MOV B,#10
ADD A,91H
DIV AB
MOV 62H,B
MOV 91H,A
MOV A,72H
MOV B,44H
MUL AB
MOV B,#10
ADD A,91H
DIV AB
MOV 63H,B
MOV 91H,A
MOV A,72H
MOV B,45H
MUL AB
MOV B,#10
ADD A,91H
DIV AB
MOV 64H,B
MOV 91H,A
MOV A,72H
MOV B,46H
MUL AB
MOV B,#10
ADD A,91H
DIV AB
MOV 65H,B
MOV 91H,A
MOV A,72H
MOV B,48H
MUL AB
MOV B,#10
ADD A,91H
DIV AB
MOV 66H,B
MOV 91H,A
MOV A,72H
MOV B,49H
MUL AB
MOV B,#10
ADD A,91H
DIV AB
MOV 67H,B
MOV 0E3H,A
;*********************************第三次乘法结束,第四次乘法运算开始
MOV A,74H
MOV B,40H
MUL AB
MOV B,#10
DIV AB
MOV 55H,B
MOV 91H,A
MOV A,74H
MOV B,41H
MUL AB
MOV B,#10
ADD A,91H
DIV AB
MOV 56H,B
MOV 91H,A
MOV A,74H
MOV B,42H
MUL AB
MOV B,#10
ADD A,91H
DIV AB
MOV 57H,B
MOV 91H,A
MOV A,74H
MOV B,44H
MUL AB
MOV B,#10
ADD A,91H
DIV AB
MOV 68H,B
MOV 91H,A
MOV A,74H
MOV B,45H
MUL AB
MOV B,#10
ADD A,91H
DIV AB
MOV 6AH,B
MOV 91H,A
MOV A,74H
MOV B,46H
MUL AB
MOV B,#10
ADD A,91H
DIV AB
MOV 6BH,B
MOV 91H,A
MOV A,74H
MOV B,48H
MUL AB
MOV B,#10
ADD A,91H
DIV AB
MOV 6CH,B
MOV 91H,A
MOV A,74H
MOV B,49H
MUL AB
MOV B,#10
ADD A,91H
DIV AB
MOV 6DH,B
MOV 0E4H,A
;****************************第四次乘法结束,第五次乘法运算开始
MOV A,75H
MOV B,40H
MUL AB
MOV B,#10
DIV AB
MOV 6EH,B
MOV 91H,A
MOV A,75H
MOV B,41H
MUL AB
MOV B,#10
ADD A,91H
DIV AB
MOV 7AH,B
MOV 91H,A
MOV A,75H
MOV B,42H
MUL AB
MOV B,#10
ADD A,91H
DIV AB
MOV 7BH,B
MOV 91H,A
MOV A,75H
MOV B,44H
MUL AB
MOV B,#10
ADD A,91H
DIV AB
MOV 7CH,B
MOV 91H,A
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?