📄 bcd.asm
字号:
;*********固定单元的BCD码转换****************
;*********小数与不带小数的两种***************
;*********插表方式混合显示*******************
;********************************************
ORG 0000H
HDAT EQU 43H ;十六数据的收地址
BDAT EQU 47H ;
EDAT DATA 48H ;
DISD EQU 57H ;
BXCOUNT EQU 08H
AJMP BCDE
;BCD码转换程序段
BCDE: CLR A
CLR F0 ;存储C位,使到移位的数据能恢复
MOV R2,#32
HBCH: CLR C
MOV R6,#4
MOV R0,#HDAT
MOV R1,#BDAT
MOV C,F0
HCH: MOV A,@R0
RLC A
MOV @R0,A
DEC R0
DJNZ R6,HCH
MOV F0,C
MOV R6,#4
BCH: MOV A,@R1
ADDC A,@R1
DA A
MOV @R1,A
DEC R1
DJNZ R6,BCH
DJNZ R2,HBCH
MOV R6,#4
MOV R0,#HDAT
MOV C,F0
HCHE: MOV A,@R0 ;因为带C位循环的移位是33次才能把原来数据恢复
RLC A
MOV @R0,A
DEC R0
DJNZ R6,HCHE
;查表,找出相应的笔型码,并送到对应的显示单元
PAND: MOV R0,#BDAT
MOV R1,#DISD
MOV A,#0
MOV B,EDAT
MOV R6,#0
MOV DPTR,#BXTAB0
PANL: MOV A,@R0
ANL A,#0FH
XCH A,R6
CJNE A,EDAT,NEXTPAN
MOV DPTR,#BXTAB1
NEXTPAN:XCH A,R6
MOVC A,@A+DPTR
MOV @R1,A
INC R6
DEC R1
MOV DPTR,#BXTAB0
MOV A,@R0
SWAP A
ANL A,#0FH
XCH A,R6
CJNE A,EDAT,NEXTPAN0
MOV DPTR,#BXTAB1
NEXTPAN0:XCH A,R6
MOVC A,@A+DPTR
MOV @R1,A
INC R6
DEC R1
MOV DPTR,#BXTAB0
DEC R0
CJNE R6,#BXCOUNT,PANL
OUTHBCH:
SJMP $
BXTAB0: DB 0,1,2,3,4,5,6,7,8,9
BXTAB1: DB 10H,11H,12H,13H,14H,15H,16H,17H,18H,19H
END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -