📄 tbcdmul.asm
字号:
EXTRN CODE (DISPLAY8, GETBCDKEY);装入显示模块,键盘输入模块
buffer data 30h ;8字节显示缓冲区
TB DATA 40H
F1 bit 0d1h ;PSW.1
ORG 0000H
LJMP STAR
ORG 0100
STAR: MOV SP,#60H
CLR F1 ;先清除显示,数据再接收键盘输入
MOV R0, #BUFFER ;键盘输入数据存放内存单元首地址存R0
MOV A, #04H ;按键次数存放累加器A中
LCALL GetBCDKey
SETB F1
MOV A,#04H
LCALL GetBCDKey
LCALL SHIZER
LCALL MULB
LCALL ERZSHI
XIANSHI: MOV R0,#buffer
MOV A,R7
ANL A,#0FH
MOV @R0,A
INC R0
MOV A,R7
ANL A,#0F0H
SWAP A
MOV @R0,A
INC R0
MOV A,R6
ANL A,#0FH
MOV @R0,A
INC R0
MOV A,R6
ANL A,#0F0H
SWAP A
MOV @R0,A
INC R0
MOV A,R5
ANL A,#0FH
MOV @R0,A
INC R0
MOV A,R5
ANL A,#0F0H
SWAP A
MOV @R0,A
INC R0
MOV A,R4
ANL A,#0FH
MOV @R0,A
INC R0
MOV A,R4
ANL A,#0F0H
SWAP A
MOV @R0,A
mov R0, #30h ;字节显示缓存区首地址送R0
Acall Display8
SJMP $
SHIZER:
MOV R0,#buffer
MOV R1,#TB
MOV R2,#04H
LOOP0: MOV A,@R0
ANL A,#0F0H
SWAP A
MOV @R1,A
INC R1
MOV A,@R0
ANL A,#0FH
MOV @R1,A
INC R1
INC R0
DJNZ R2,LOOP0 ;压缩BCD码转化为非压缩BCD码
FBCDCB: MOV R2,#2
MOV R0,#TB
BCDCB: MOV R3,#0
MOV R4,#0
MOV R5,#03H
MOV A,@R0
MOV R4,A
LOOP1: MOV A,R4
MOV B,#10
MUL AB
MOV R4,A ;暂存R4*10低8位
MOV A,B
XCH A,R3 ;暂存R3*10高8位
MOV B,#10
MUL AB ;(R3)*10为一字节数
ADD A,R3 ;(R3)*10+(R4)*10
MOV R3,A ;暂存
INC R0
MOV A,R4
ADD A,@R0
MOV R4,A
MOV A,R3
ADDC A,#0
MOV R3,A
DJNZ R5,LOOP1
DEC R2
CJNE R2,#1,BACK
MOV A,R3
MOV R6,A
MOV A,R4
MOV R7,A
INC R0
LCALL BCDCB
BACK: RET ;十进制转二进制,乘数在R3R4中,被乘数在R6R7中
MULB: MOV A,r7 ; 乘法程序
MOV B,r4
MUL AB
MOV 30H,A
MOV R5,B
MOV A,r6
MOV B,r4
MUL AB
ADD A,R5
MOV R5,A
MOV A,B
ADDC A,#0
MOV R0,A
MOV A,r7
MOV B,r3
MUL AB
ADD A,R5
MOV 31H,A
MOV R1,#0 ;用R1记录CY
MOV A,R0
ADDC A,B
MOV R0,A
JNC LAST
INC R1
LAST: MOV A,r6
MOV B,r3
MUL AB
ADD A,R0
MOV 32H,A
MOV A,B
ADDC A,R1
MOV R0,A
MOV A,32H
MOV R1,A
MOV A,31H
MOV R2,A
MOV A,30H
MOV R3,A ;乘法结果16进制数在R0R1R2R3中
RET
ERZSHI:
CLR A ;16进制转换10进制程序
MOV R6,A
MOV R5,A
MOV R4,A
MOV R7,A
MOV 30H,#32
BINBCL: CLR C
MOV A,R3
RLC A
MOV R3,A
MOV A,R2
RLC A
MOV R2,A
MOV A,R1
RLC A
MOV R1,A
MOV A,R0
RLC A
MOV R0,A
MOV A,R7
ADDC A,R7
DA A
MOV R7,A
MOV A,R6
ADDC A,R6
DA A
MOV R6,A
MOV A,R5
ADDC A,R5
DA A
MOV R5,A
MOV A,R4
ADDC A,R4
DA A
MOV R4,A
DJNZ 30H,BINBCL
RET
END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -