playground:playground
This is an old revision of the document!
;I have slight modified the Macie's routine that is for 3 digits decimal number. ;this routine converts 5 digits decimal number (range 0-65535) to equivalent hex number.
!to "dec2hex.prg",cbm
- =$0810
lda #0 sta lores ;result byteLo
sta hires ;result byteHi
lda numA ;load units and tens byte
and #$0f ;store sta lores ;units nibble lda numA ;tens nibble lsr lsr
lsr
lsr sta addr1+1 ;put tens nibble after ldx in adder subroutine lda #$0a ;put 10 after adc opcode in adder subroutine
sta addr2+1
lda #$0 ;2 byte addition sta addr3+1 jsr addr1 lda numB ;load handreds and miles byte pha and #$0f sta addr1+1 ;put hundreds nibble after ldx... lda #$64 ;put 100 ($64) after adc opcode...
sta addr2+1
lda #$0 sta addr3+1 jsr addr1 pla lsr lsr lsr lsr sta addr1+1 ;put thousands nibble after ldx... lda #$e8 ;add 1000, first add lobyte $e8 sta addr2+1 lda #$03 ;...after add hibyte $03 sta addr3+1 jsr addr1 lda numC ;load tens of thousands and #$0f sta addr1+1 ;add 10000 ($2710) lda #$10 sta addr2+1 lda #$27 sta addr3+1 jsr addr1 rts
;adder subroutine
addr1 ldx #00 ;numbers of additions clc loop lda lores addr2 adc #00 ;$a, $64; $e8, $10 sta lores lda hires addr3 adc #00 ;$0, $03, $27 sta hires dex bne loop rts ;for 65535 numA !byte 00 ;numA=35 numB !byte 00 ;numB=55 numC !byte 00 ;numC=06 lores !byte 00 hires !byte 00
playground/playground.1454884498.txt.gz · Last modified: 2016-02-07 23:34 by matt