欢迎光临散文网 会员登陆 & 注册

[旋风][6502汇编][32位HEX转DEC]

2019-04-04 13:15 作者:FlameCyclone  | 我要投稿

;[FC][32位HEX转DEC][20190403]

;FlameCyclone


 .ORG $8000

 

Hex_LL = $10

Hex_LH = $11

Hex_HL = $12

Hex_HH = $13

Dec_Digit = $14


DIGIT_COUNT = 10


;零页占用: 14字节

;  程序段: 0x99字节

;$0xFFFFFFFF转4294967295耗时5388

;$0x3B9AC9FF转999999999耗时7412

; $0x5F5E0FF转99999999耗时6627

;  $0x98967F转9999999耗时5854

;   $0xF423F转999999耗时5013

;   $0x1869F转99999耗时4144

;    $0x270F转9999耗时3255

;     $0x3E7转999耗时2298

;      $0x63转99耗时1356

;      $0x09转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


[旋风][6502汇编][32位HEX转DEC]的评论 (共 条)

分享到微博请遵守国家法律