User Tools

Site Tools


base:decimal_to_hexadecimal_conversion

This is an old revision of the document!


Decimal to hexadecimal conversion

By Mace

This routine converts two bytes decimal to two bytes hexadecimal. 'hiInput' contains hundreds, 'loInput' contains tens and ones, so $0365 equals #365 decimal. It will be converted to 'hiResult' and 'loResult' (in this case $016d, the hexadecimal of 365).

	.pc = $0810

		lda #$00	; Init result bytes
		sta loResult
		sta hiResult
		lda loInput	; Fetch ones and tens
		tax		; Save to X
		and #$0f	; Strip the ones
		tay		; Save to Y
		txa		; Get original ones and tens
		lsr
		lsr
		lsr
		lsr		; Divide by 16 to get tens only
		tax		; Save to X
		tya		; Put the ones in A
		cpx #$00	; No tens? Then skip
		beq PROCEED
		clc
TENS:		adc #$0a	; Add as many tens as value of X
		dex
		bne TENS
PROCEED:	ldx hiInput	; Fetch the hundreds
		beq END		; No hundreds? Then go to end
HUND:		clc
		adc #$64	; Add as many hundreds as value of X
		bcc !+
		inc hiResult	; Increase high byte every passed $FF
!:		dex
		bne HUND
END:		sta loResult	; Store low byte
		rts

hiInput:	.byte $00
loInput:	.byte $01
hiResult:	.byte $00
loResult:	.byte $00
base/decimal_to_hexadecimal_conversion.1429237882.txt.gz · Last modified: 2016-02-14 21:59 (external edit)