Programowanie: Zapis na ekran w różnych systemach liczbowych
From Atariki
(Różnice między wersjami)
Wersja z dnia 18:52, 24 cze 2008 0xF (Dyskusja | wkład) (krótsze i szybsze putbin) ← 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 cmp #$0a | + | nibble cmp #$0a |
sed | sed | ||
adc #$10 | adc #$10 | ||
Linia 21: | Linia 21: | ||
</pre> | </pre> | ||
- | + | ==Zapis na ekran liczby BCD== | |
- | Zapis na ekran liczby BCD: | + | |
<pre> | <pre> | ||
Linia 40: | Linia 39: | ||
- | Zapis na ekran w systemie binarnym: | + | ==Zapis na ekran w systemie binarnym== |
<pre> | <pre> | ||
Linia 56: | Linia 55: | ||
</pre> | </pre> | ||
- | + | ==Zapis na ekran bajtu w systemie dziesiętnym== | |
- | Zapis na ekran bajtu w systemie dziesiętnym: | + | |
<pre> | <pre> | ||
- | putdec sta temp0 | + | putdec ldx #$0f |
- | lda #0 | + | stx temp0 |
+ | ldx #$1a | ||
+ | sec | ||
+ | _n1 inc temp0 | ||
+ | sbc #100 | ||
+ | bcs _n1 | ||
+ | _n2 dex | ||
+ | adc #10 | ||
+ | bmi _n2 | ||
+ | adc #$0f | ||
sta temp1 | sta temp1 | ||
- | sta temp2 | + | lda temp0 |
- | ldx #$08 | + | |
- | sed | + | |
- | _nxt asl temp0 | + | |
- | lda temp1 | + | |
- | adc temp1 | + | |
- | sta temp1 | + | |
- | lda temp2 | + | |
- | adc temp2 | + | |
- | sta temp2 | + | |
- | dex | + | |
- | bne _nxt | + | |
- | cld | + | |
- | lda temp2 | + | |
jsr _bcd | jsr _bcd | ||
- | lda temp1 | + | txa |
- | lsr @ | + | |
- | lsr @ | + | |
- | lsr @ | + | |
- | lsr @ | + | |
jsr _bcd | jsr _bcd | ||
lda temp1 | lda temp1 | ||
- | and #$0f | + | _bcd sta (ekr),y |
- | _bcd ora #$10 | + | |
- | sta (ekr),y | + | |
iny | iny | ||
rts | rts |
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