📄 fs_bcd.asm
字号:
;===============================================
; 24bits HexCode to BCDCode Transfer
;-------------------------------------------
;Input:
; Paramaters: EAL|AX(EAL|AH|AL)
;Output:
; Paramaters: EBX|BX(EBH|EBL|BH|BL)
;MAX Translation Range:
; (0xFFFFFF)16 -->(16777215)10
;;Performance:
; Cycle = 1438
; PM=39*2(bytes) DM= 8(bytes)(Without W register)
; 1.EAL,2.AX,3.EBX,4.BX,5.buffer
;-----------------------------------------------
;Edit:Gavannis Time:2005/2/18 Version:0.1
;=====================================================================================
24Hex2BCD:
MOVLW 24
MOVWF buffer
GOTO BCDINI
BCDINI:
CLRF EBH
CLRF EBL
CLRF BH
CLRF BL
CLRF STATUS
BCD_Lp:
rlf AL,1
rlf AH,1
rlf EAL,1
rlf4b BL
decfsz buffer,1
goto AdjDec
return
AdjDec:
MOVLW BL
MOVWF FSR0
call AdjBcd
MOVLW BH
MOVWF FSR0
call AdjBcd
MOVLW EBL
MOVWF FSR0
call AdjBcd
MOVLW EBH
MOVWF FSR0
call AdjBcd
goto BCD_Lp
AdjBcd:
movlw 03h
addwf IND0,0
btfsc WORK,3
movwf IND0
movlw 30h
addwf IND0,0
btfsc WORK,7
movwf IND0
return
;===============================================
; 8bits HexCode to BCDCode Transfer
;-------------------------------------------
;Input:
; Paramaters: AL
;Output:
; Paramaters: BX(BH|BL)
;MAX Translation Range:
; (0xFF)16 -->(255)10
;;Performance:
; Cycle = 241
; PM=26*2(bytes) DM= 4(bytes)(Without W register)
; 1.AL,2.BX,,3.buffer
;-----------------------------------------------
;Edit:Gavannis Time:2005/2/18 Version:0.1
;=====================================================================================
8Hex2BCD:
MOVLW 8
MOVWF buffer
CLRF BH
CLRF BL
CLRF STATUS
BCD_Lp8:
rlf AL,1
rlf2b BL
decfsz buffer,1
goto AdjDec8
return
AdjDec8:
MOVLW BL
MOVWF FSR0
call AdjBcd8
MOVLW BH
MOVWF FSR0
call AdjBcd8
goto BCD_Lp8
AdjBcd8:
movlw 03h
addwf IND0,0
btfsc WORK,3
movwf IND0
movlw 30h
addwf IND0,0
btfsc WORK,7
movwf IND0
return
;===============================================
; 8oct BCDCode to HexCode Transfer
;-------------------------------------------
;Input:
; Paramaters: EBX|BX(EBH,EBL,BH,BL)
;Output:
; Paramaters: EAX(EAL,AH,AL)
;MAX Translation Range:
; (16777215)10 -->(FFFFFF)16
;;Performance:
; Cycle = 1277
; PM=36*2(bytes) DM= 8(bytes)(Without W register)
; 1.EAL,2.AX,3.EBX,4.BX,5.buffer
;=====================================================================================
8Bcd2Hex:
CLRF EAH
CLRF EAL
CLRF AH
CLRF AL
movlw 24
movwf buffer
Hex_lp24:
BCF STATUS,C
rrf4b BL
rrf EAL,1
rrf AH,1
rrf AL,1
decfsz buffer,1
goto AdjOct24
return
AdjOct24:
MOVLW BL
MOVWF FSR0
call AdjHex24 ;BL
MOVLW BH
MOVWF FSR0
call AdjHex24 ;BH
MOVLW EBL
MOVWF FSR0
call AdjHex24 ;EBL
MOVLW EBH
MOVWF FSR0
call AdjHex24 ;EBH
goto Hex_lp24
AdjHex24:
movlw 3
btfsc IND0,3
subwf IND0,1
movlw 030h
btfsc IND0,7
subwf IND0,1
return
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -