📄 bcd6.asm
字号:
#include <sfr51.inc>
;*-----------------------------------------------------------
;*
;* bin6bcd - routine compute from binary value to bcd
;*
;* Entry: reg_e:d - binary value (24 bit)
;*
;* Exit: reg_e:d - 8 bcd digits (0000:0000-1677:7215)
;*
;*-----------------------------------------------------------
H1 EQU 08H
H2 EQU 09H
H3 EQU 0AH
D1 EQU 0BH
D2 EQU 0CH
D3 EQU 0DH
D4 EQU 0EH
TMP1 EQU 0FH
TMP2 EQU 10H
TMP3 EQU 11H
TMP4 EQU 12H
POINTER EQU 13H
HOLD EQU 14H
MOV H1,#0F2H ;020A1B HEX
MOV H2,#0ABH ;INPUT
MOV H3,#0FFH
;----------------------------------------------
MOV D1,#00H
MOV D2,#00H
MOV D3,#00H
MOV D4,#00H ;OUTPUT
;----------------------------------------------
MOV TMP1,#00H ;TEMPORARI
MOV TMP2,#00H
MOV TMP3,#00H
MOV TMP4,#00H
;-------------------------------------------------------------------------------------
BIN6BCD:
MOV SP,#20H
MOV A,H3
MOV R0,#8
CJNE R0,#01H,DOWN
CLR C
RRC A
MOV HOLD,A
JNC DOWN
MOV A,R0
RL A
RL A
MOV POINTER,A
ACALL ADDITION
DOWN:
MOV A,HOLD
DJNZ R0,BIN6BCD
MULAI: MOV A,H2
MOV R0,#8
CLR C
RRC A
MOV HOLD,A
JNC DOWNH2
MOV A,R0
ADD A,#08H
RL A
RL A
MOV POINTER,A
ACALL ADDITION
DOWNH2:
MOV A,HOLD
DJNZ R0,MULAI
TERUS: MOV A,H1
MOV R0,#8
CLR C
RRC A
MOV HOLD,A
JNC DOWNH3
MOV A,R0
ADD A,#10H
RL A
RL A
MOV POINTER,A
ACALL ADDITION
DOWNH3:
MOV A,HOLD
DJNZ R0,TERUS
BBBB: SJMP BBBB
;-------------------------------------------------------------------------------------
ADDITION:
MOV DPTR,#BINBCDTAB
DEC POINTER
MOV A,POINTER
MOVC A,@A+DPTR
MOV TMP1,A
MOV A,POINTER
DEC A
MOVC A,@A+DPTR
MOV TMP2,A
MOV A,POINTER
DEC A
DEC A
MOVC A,@A+DPTR
MOV TMP3,A
MOV A,POINTER
DEC A
DEC A
DEC A
MOVC A,@A+DPTR
MOV TMP4,A
;-------------- DO ADDITION TMP1 -------------------
CLR C
MOV A,TMP1
ADD A,D4
DA A
MOV D4,A
MOV A,TMP2
ADDC A,D3
DA A
MOV D3,A
MOV A,TMP3
ADDC A,D2
DA A
MOV D2,A
MOV A,TMP4
ADDC A,D1
DA A
MOV D1,A
CLR C
RET
;-------------------------------------------------------------------------------------
HETE: SJMP HETE
BINBCDTAB:
DB 00H,00H,00H,01H ; bit 0
DB 00H,00H,00H,02H ; bit 1
DB 00H,00H,00H,04H ; bit 2
DB 00H,00H,00H,08H ; bit 3
DB 00H,00H,00H,16H ; bit 4
DB 00H,00H,00H,32H ; bit 5
DB 00H,00H,00H,64H ; bit 6
DB 00H,00H,01H,28H ; bit 7
DB 00H,00H,02H,56H ; bit 8
DB 00H,00H,05H,12H ; bit 9
DB 00H,00H,10H,24H ; bit 10
DB 00H,00H,20H,48H ; bit 11
DB 00H,00H,40H,96H ; bit 12
DB 00H,00H,81H,92H ; bit 13
DB 00H,01H,63H,84H ; bit 14
DB 00H,03H,27H,68H ; bit 15
DB 00H,06H,55H,36H ; bit 16
DB 00H,13H,10H,72H ; bit 17
DB 00H,26H,21H,44H ; bit 18
DB 00H,52H,42H,88H ; bit 19
DB 01H,04H,85H,76H ; bit 20
DB 02H,09H,71H,52H ; bit 21
DB 04H,19H,43H,04H ; bit 22
DB 08H,38H,86H,08H ; bit 23
END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -