Programowanie: Zapis na ekran w różnych systemach liczbowych
From Atariki
(Różnice między wersjami)
Wersja z dnia 22:00, 23 cze 2008 Xxl (Dyskusja | wkład) ← Previous diff |
Aktualna wersja Xxl (Dyskusja | wkład) (→Zapis na ekran bajtu w systemie dziesiętnym - optymalizacja) |
||
Linia 1: | Linia 1: | ||
- | Zapis na ekran w systemie heksadecymalnym: | + | ==Zapis na ekran w systemie heksadecymalnym== |
Pod adresem wskazywanym przez 'ekr' znajduje się początek pamięci ekranu gdzie będzie zapisana liczba heksadecymalna. Dzięki rejestrowi Y można drukować na ekranie liczby w pętli. | Pod adresem wskazywanym przez 'ekr' znajduje się początek pamięci ekranu gdzie będzie zapisana liczba heksadecymalna. Dzięki rejestrowi Y można drukować na ekranie liczby w pętli. | ||
Linia 9: | Linia 9: | ||
lsr @ | lsr @ | ||
lsr @ | lsr @ | ||
- | jsr nibbel | + | jsr nibble |
pla | pla | ||
and #$0f | and #$0f | ||
- | nibbel tax | + | nibble cmp #$0a |
- | lda tab_hex,x | + | sed |
+ | adc #$10 | ||
+ | cld | ||
sta (ekr),y | sta (ekr),y | ||
iny | iny | ||
rts | rts | ||
+ | </pre> | ||
- | tab_hex dta d'0123456789ABCDEF' | + | ==Zapis na ekran liczby BCD== |
+ | |||
+ | <pre> | ||
+ | putbcd pha | ||
+ | lsr @ | ||
+ | lsr @ | ||
+ | lsr @ | ||
+ | lsr @ | ||
+ | jsr _bcd | ||
+ | pla | ||
+ | and #$0f | ||
+ | _bcd ora #$10 | ||
+ | sta (ekr),y | ||
+ | iny | ||
+ | rts | ||
</pre> | </pre> | ||
- | Zapis na ekran w systemie binarnym: | + | ==Zapis na ekran w systemie binarnym== |
<pre> | <pre> | ||
- | putbin ldx #$08 | + | putbin sec |
- | sta temp | + | rol @ |
- | _bit asl temp | + | _bit tax |
lda #$08 | lda #$08 | ||
rol @ | rol @ | ||
sta (ekr),y | sta (ekr),y | ||
iny | iny | ||
- | dex | + | txa |
+ | asl @ | ||
bne _bit | bne _bit | ||
+ | rts | ||
+ | </pre> | ||
+ | |||
+ | ==Zapis na ekran bajtu w systemie dziesiętnym== | ||
+ | |||
+ | <pre> | ||
+ | putdec ldx #$0f | ||
+ | stx temp0 | ||
+ | ldx #$1a | ||
+ | sec | ||
+ | _n1 inc temp0 | ||
+ | sbc #100 | ||
+ | bcs _n1 | ||
+ | _n2 dex | ||
+ | adc #10 | ||
+ | bmi _n2 | ||
+ | adc #$0f | ||
+ | sta temp1 | ||
+ | lda temp0 | ||
+ | jsr _bcd | ||
+ | txa | ||
+ | jsr _bcd | ||
+ | lda temp1 | ||
+ | _bcd sta (ekr),y | ||
+ | iny | ||
rts | rts | ||
</pre> | </pre> | ||
[[Kategoria:Niezbędnik kodera]] | [[Kategoria:Niezbędnik kodera]] |
Aktualna wersja
Spis treści |
[Edytuj]
Zapis na ekran w systemie heksadecymalnym
Pod adresem wskazywanym przez 'ekr' znajduje się początek pamięci ekranu gdzie będzie zapisana liczba heksadecymalna. Dzięki rejestrowi Y można drukować na ekranie liczby w pętli.
puthex pha lsr @ lsr @ lsr @ lsr @ jsr nibble pla and #$0f nibble cmp #$0a sed adc #$10 cld sta (ekr),y iny rts
[Edytuj]
Zapis na ekran liczby BCD
putbcd pha lsr @ lsr @ lsr @ lsr @ jsr _bcd pla and #$0f _bcd ora #$10 sta (ekr),y iny rts
[Edytuj]
Zapis na ekran w systemie binarnym
putbin sec rol @ _bit tax lda #$08 rol @ sta (ekr),y iny txa asl @ bne _bit rts
[Edytuj]
Zapis na ekran bajtu w systemie dziesiętnym
putdec ldx #$0f stx temp0 ldx #$1a sec _n1 inc temp0 sbc #100 bcs _n1 _n2 dex adc #10 bmi _n2 adc #$0f sta temp1 lda temp0 jsr _bcd txa jsr _bcd lda temp1 _bcd sta (ekr),y iny rts