Zahlenspiele

Wie realisiert man die Ausgabe von Integer- Zahlen in 6502 Assembler? Eigentlich ganz einfach. Die Lösung:

Man stelle sich die Frage, wie oft kann ich von, sagen wir 1934, 1000 abziehen. Einmal, ganz klar. Man wiederholt das ganze für die 100-er die 10-er und die Einer und erhält so die Ziffern der Zahl. Ich habe das ganze für Integer kleiner gleich 255 realisiert. Zur Erklährung sollten die Kommentare im Source reichen.

Für 16 Bit Integer habe ich noch keine eigene Lösung. Einen fertigen Source dafür findet man bei: http://www.atarimagazines.com/analog/issue62/boot_camp.php   (ausführliche Beschreibung und weitere Tricks inklusive).

Anmerkung: Das nachstehende Programm enthält die Ziffern zur Ausgabe auf dem Bildschirm im Atari Bildschirmcode. Möchte man auf dem Atari Aschii- Zeichen direkt in in Bildschirmspeicher zur Ausgabe schreiben,so erhält man das richtige Ergebnis, indem man vom internen des Atari 32 abzieht!

* INTASC.SRC
*
* WANDELT DEN IN "ZAHL" ENTHALTENEN
* INTEGER IN BILDSCHRIMZEICHEN UM UND
* GIBT DIESE AUF DEM BILDSCHIRM AUS
*
* ZAHL KLEINER ODER GLEICH 255!
*
* B.FRITZ 6.4.2012
*************************************
BILD    EQU 88   ADRESSE BILDSPEICHER
BILDH   EQU 89
        ORG $A800
*
* ANZAHL DER STELLEN UNSERER ZAHL
* UND ZEIGER AUF UNSERE TABELLE DER
* VIELFACHEN VON 10
       LDY #0
*
* ANZAHL DER SUBTRAKTIONEN BIS DAS
* ERGEBNIS >0 WAR
*
        LDX #0
*
* LOS GEHTS
*
        LDA ZAHL  ZAHL VORHER RETTEN
        STA ZAHLB
L1      SEC
        LDX #0
L2      LDA ZAHLB        
        SBC POW,Y
        STA ZAHLB
* CARRY SETZEN!
* ANZAHL VERSUCHE=0
        BCC NULL  ERGEBNIS<0
        INX       ERGEBNIS>0 D.H.
        BCS L2    WEITER

NULL    LDA ZIFF,X      EREBNIS<0
        STA (BILD),Y    ZIFFER AUSG.

        LDA ZAHLB       ZAHL>0 MACHEN
        ADC POW,Y
        STA ZAHLB

        INY       NAECHST NIEDR.
        CPY #3    10ER, ALLE STELLEN
        BNE L1    DURCH?
        BRK       JA!
*
* EINIGE DATEN
*

* UNSERE ZIFFERN- ZEICHEN
ZIFF    ASC %0123456789%

ZIFF    ASC %0123456789%
* 10ER
POW     DFB 100,10,1
* DIESE ZAHL SOLL AUSGEGEBEN WERDEN
ZAHL    DFB 134

* ZWISCHENSPEICHER ZUM RECHNEN
ZAHLB   DFB 0

Advertisements

Kommentar verfassen

Trage deine Daten unten ein oder klicke ein Icon um dich einzuloggen:

WordPress.com-Logo

Du kommentierst mit Deinem WordPress.com-Konto. Abmelden / Ändern )

Twitter-Bild

Du kommentierst mit Deinem Twitter-Konto. Abmelden / Ändern )

Facebook-Foto

Du kommentierst mit Deinem Facebook-Konto. Abmelden / Ändern )

Google+ Foto

Du kommentierst mit Deinem Google+-Konto. Abmelden / Ändern )

Verbinde mit %s

%d Bloggern gefällt das: