📄 lib9821.asm
字号:
;===========================================
; lib3866.ASM version 0.1
; user define procture
; Edit by gavannis.hsu 2005/01/03
;===========================================
;-------------------------------------------
; Global Variable
;-------------------------------------------
; AL, AH, EAL, EAL
; BL, BH, EBL, EBL
; CL, CH, ECL, ECL
; DL, DH, EDL, EDL
; buffer 0~15
; counter0~2
;-------------------------------------------
; Rotated Work Register
;-------------------------------------------
rlfWork4:
rlf work,1
rlf work,1
rlf work,1
rlf work,1
return
rrfWork4:
rrf work,1
rrf work,1
rrf work,1
rrf work,1
return
rlfEAX:
rlf4b AL
return
rlfEBX:
rlf4b BL
return
rrfEAX:
rrf4b EAH
return
rrfEBX:
rrf4b EBH
return
rlfEBX4:
call rlfEBX
call rlfEBX
call rlfEBX
call rlfEBX
return
;-------------------------------------------
; Clear EAX, EBX, ECX, EDX
;-------------------------------------------
ClearEAX:
clrf AL
clrf AH
clrf EAL
clrf EAH
return
ClearEBX:
clrf BL
clrf BH
clrf EBL
clrf EBH
return
ClearECX:
clrf CL
clrf CH
clrf ECL
clrf ECH
return
ClearEDX:
clrf DL
clrf DH
clrf EDL
clrf EDH
return
ClearEDCBAX:
movlf DL,FSR0
clr16:
movlw 16
goto clrcom
ClearEDXECX:
movlf DL,FSR0
goto clr8
ClearEBXEAX:
movlf BL,FSR0
clr8:
movlw 8
clrcom:
movwf counter0
Clear_lp:
clrf IND0
incf FSR0,1
decfsz counter0,1
goto clear_lp
return
clr_Mem:
movlf counter1,FSR0
movlw 07fh
goto clrcom
;-------------------------------------------
; Delay function
;-------------------------------------------
_S_Delay:
movwf delay_bf ;RunTime=(3*counter2+1)*25/2us
_S_DelayA:
decfsz delay_bf,1
goto _S_DelayA1
return
_S_DelayA1:
movlf 0FEh,adcnt
_S_DelayA2:
decfsz adcnt,1
goto _S_DelayA2
goto _S_DelayA
;CopyEDXEBX:
; movff4 DL,BL
; return
;CopyEAXEBX:
; movff4 AL,BL
; return
;CopyEBXEAX:
; movff4 BL,AL
; return
;-------------------------------------------
; HexCode to BCDCode Transfer
; INPUT :EAL,AH,AL
; OUTPUT :EBH,EBL,BH,BL
;-------------------------------------------
; Max Translation
;(FFFFFF)16 in EAX to(16777215)10 in EBX
; Run cycle : 1611
;-------------------------------------------
Hex2BCD:
call ClearEBX
movlf 24,counter1
clrc
BCD_Lp:
rlf AL,1
rlf AH,1
rlf EAL,1
rlf4b BL
decfsz counter1,1
goto AdjDec
return
AdjDec:
movlf BL,FSR0
call AdjBcd
movlf BH,FSR0
call AdjBcd
movlf EBL,FSR0
call AdjBcd
movlf EBH,FSR0
call AdjBcd
goto BCD_Lp
AdjBcd:
movlw 03h
addwf 00h,0
btfsc WORK,3
movwf 00h
movlw 30h
addwf 00h,0
btfsc WORK,7
movwf 00h
return
;-------------------------------------------
; BCDCode to HexCode Transfer
; INPUT :EBH,EBL,BH,BL
; OUTPUT :EAL,AH,AL
;-------------------------------------------
; Max Translation
;(16777215)10 in EBX to (FFFFFF)16 in EAX
; Run cycle : 1450
;-------------------------------------------
Bcd2Hex:
call ClearEAX
movlf 24,counter1
Hex_lp:
clrc
rrf4b EBH
rrf EAL,1
rrf AH,1
rrf AL,1
decfsz counter1,1
goto AdjOct
return
AdjOct:
movlf BL,FSR0
call AdjHex
movlf BH,FSR0
call AdjHex
movlf EBL,FSR0
call AdjHex
movlf EBH,FSR0
call AdjHex
goto Hex_lp
AdjHex:
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 + -