Programowanie: Zapis na ekran w różnych systemach liczbowych: Różnice pomiędzy wersjami

Z Atariki
Przejdź do nawigacji Przejdź do wyszukiwania
Xxl (dyskusja | edycje)
 
(Nie pokazano 2 wersji utworzonych przez 2 użytkowników)
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
                 sta temp1
                 ldx #$1a
                sta temp2
                 sec
                 ldx #$08
_n1            inc temp0
                 sed
                 sbc #100
_nxt            asl temp0
                 bcs _n1
                 lda temp1
_n2            dex
                 adc temp1
                adc #10
                 bmi _n2
                 adc #$0f
                 sta temp1
                 sta temp1
                 lda temp2
                 lda temp0
                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 z 8 lut 2011, 16:10

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

Zapis na ekran liczby BCD

putbcd          pha
                lsr @
                lsr @
                lsr @
                lsr @
                jsr _bcd
                pla
                and #$0f
_bcd            ora #$10
                sta (ekr),y
                iny
                rts


Zapis na ekran w systemie binarnym

putbin          sec
                rol @
_bit            tax
                lda #$08
                rol @
                sta (ekr),y
                iny
                txa
                asl @
                bne _bit
                rts

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