[旋風(fēng)][6502匯編][32位HEX轉(zhuǎn)DEC]

;[FC][32位HEX轉(zhuǎn)DEC][20190403]
;FlameCyclone
?.ORG $8000
?
Hex_LL = $10
Hex_LH = $11
Hex_HL = $12
Hex_HH = $13
Dec_Digit = $14
DIGIT_COUNT = 10
;零頁占用: 14字節(jié)
;? 程序段: 0x99字節(jié)
;$0xFFFFFFFF轉(zhuǎn)4294967295耗時5388
;$0x3B9AC9FF轉(zhuǎn)999999999耗時7412
; $0x5F5E0FF轉(zhuǎn)99999999耗時6627
;? $0x98967F轉(zhuǎn)9999999耗時5854
;? ?$0xF423F轉(zhuǎn)999999耗時5013
;? ?$0x1869F轉(zhuǎn)99999耗時4144
;? ? $0x270F轉(zhuǎn)9999耗時3255
;? ? ?$0x3E7轉(zhuǎn)999耗時2298
;? ? ? $0x63轉(zhuǎn)99耗時1356
;? ? ? $0x09轉(zhuǎn)9耗時366
?LDX #$FF
?TXS
?LDA #$FF
?STA Hex_LL
?LDA #$C9
?STA Hex_LH
?LDA #$9A
?STA Hex_HL
?LDA #$3B
?STA Hex_HH
?JSR Hex_To_Dec
?RTS
Hex_To_Dec:?
?LDY #$00
?LDX #DIGIT_COUNT - $02
Convert_Compare:
HH_Compare:
?LDA Hex_HH
?CMP Dec_Data_HH,X
?BCC Convert_Digit_End
?BNE Sub_LL
?LDA Hex_HL
HL_Compare:
?CMP Dec_Data_HL,X
?BCC Convert_Digit_End
?BNE Sub_LL
?LDA Hex_LH
LH_Compare
?CMP Dec_Data_LH,X
?BCC Convert_Digit_End
?BNE Sub_LL
?LDA Hex_LL
LL_Compare:
?CMP Dec_Data_LL,X
?BCC Convert_Digit_End
Sub_LL:
?LDA Hex_LL
?SBC Dec_Data_LL,X
?STA Hex_LL
?BCS Sub_LH
?DEC Hex_LH
Sub_LH:
?LDA Hex_LH
?SEC
?SBC Dec_Data_LH,X
?STA Hex_LH
?BCS Sub_HL
?DEC Hex_HL
Sub_HL:?
?LDA Hex_HL
?SEC
?SBC Dec_Data_HL,X
?STA Hex_HL
?BCS Sub_HH
?DEC Hex_HH
Sub_HH:
?LDA Hex_HH
?SEC
?SBC Dec_Data_HH,X
?STA Hex_HH
Set_Digit:
?INY
?BNE Convert_Compare
Convert_Digit_End:
?STY Dec_Digit + 1,X
?LDY #$00
?DEX
?BPL Convert_Compare
Convert_Finish:
?STA Dec_Digit
?RTS
Dec_Data_LL:
?.DB $0A,$64,$E8,$10,$A0,$40,$80,$00,$00
Dec_Data_LH:
?.DB $00,$00,$03,$27,$86,$42,$96,$E1,$CA
Dec_Data_HL:
?.DB $00,$00,$00,$00,$01,$0F,$98,$F5,$9A
Dec_Data_HH:
?.DB $00,$00,$00,$00,$00,$00,$00,$05,$3B