Programowanie: Zapis na ekran w różnych systemach liczbowych
From Atariki
(Różnice między wersjami)
| Wersja z dnia 06:59, 24 cze 2008 Xxl (Dyskusja | wkład) (uwaga Sebana) ← 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 #'0 | + | adc #$10 |
| cld | cld | ||
| sta (ekr),y | sta (ekr),y | ||
| Linia 21: | Linia 21: | ||
| </pre> | </pre> | ||
| + | ==Zapis na ekran liczby BCD== | ||
| - | Zapis na ekran w systemie binarnym: | + | <pre> |
| + | putbcd pha | ||
| + | lsr @ | ||
| + | lsr @ | ||
| + | lsr @ | ||
| + | lsr @ | ||
| + | jsr _bcd | ||
| + | pla | ||
| + | and #$0f | ||
| + | _bcd ora #$10 | ||
| + | sta (ekr),y | ||
| + | iny | ||
| + | rts | ||
| + | </pre> | ||
| + | |||
| + | |||
| + | ==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
