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
