Meine Einführung in C64 Maschinensprache / Assembler

Es gibt 719 Antworten in diesem Thema, welches 94.516 mal aufgerufen wurde. Der letzte Beitrag (19. November 2025 um 17:56) ist von 64erGrufti.

  • Es handelt sich also nicht um eine Datenübergabe im Sinne von Welches Zeichen? oder Welche Farbe?als Datum, sondern als so eine Art CASE-Bedingungsauswertung.

    Sowas macht man aber in objektorientierten Sprachen auch öfters mal. Da hat man einen Parameter, idR. als Boolean (Wahrheitswert), mit dem man dann in der Funktion steuert, ob etwas so, oder so gemacht wird. Das ist dann schon ein Parameter. Parameter können ja aus allen Datentypen bestehen, sogar komplette Objekte.

  • Sowas macht man aber in objektorientierten Sprachen auch öfters mal. Da hat man einen Parameter, idR. als Boolean (Wahrheitswert), mit dem man dann in der Funktion steuert, ob etwas so, oder so gemacht wird.

    Ist das nicht ein Zeichen von schlechtem Klassendesign?

  • Sowas macht man aber in objektorientierten Sprachen auch öfters mal. Da hat man einen Parameter, idR. als Boolean (Wahrheitswert), mit dem man dann in der Funktion steuert, ob etwas so, oder so gemacht wird.

    Ist das nicht ein Zeichen von schlechtem Klassendesign?

    Das kommt immer drauf an, was ich da mache. Es kann durchaus sinnvolle Verwendung geben.

  • ... ich denke, Du kannst aufhören: "was Hänschen nicht lernt, lernt Hans nimmer mehr". Denn:

    früher (TM) konnten das offenbar bereits "Kids": Bitte melde dich an, um diesen Link zu sehen.

    Bitte melde dich an, um diesen Anhang zu sehen.

    Späßle: sehr gute Didaktik Deinerseits, lese gern mit!

    Ich denke, wer bereits irgendwas programmieren kann, kommt auch mit Assembler klar - was wohl häufig das Problem sein wird, ist die HEX-DEC-Umrechnung und die weniger sprechende Syntax .
    Das Konzept ist doch meist gleich.
    Insbesondere mit z.B. IDE65xx/ KickAssembler macht es heute entschieden mehr Spaß als mit nativen Tools.

  • Hallo!

    So ist es, der Inhalt des Y Registers wird als Flag benutzt und dann im Unterprogramm abgefragt, um zu unterscheiden, ob das Zeichen dargestellt oder gelöscht werden soll.

    Es ist also kein Parameter in diesem Sinn wie das Zeichen und die Farbe.

    lg, Markus

    Hier der Link zum Github - Repo des Assembler-Kurses: Bitte melde dich an, um diesen Link zu sehen.

  • Hallo!

    Ich hab mal den Abschnitt über Zahlensysteme und die Umrechnungen zwischen den Systemen fertig.

    Liegt unter GitHub als eigenes separates File.

    Hab versucht es so zu erklären, wie ich es jemand erklären würde, der vielleicht gar nicht weiß, dass es mehrere Zahlensysteme gibt.

    Was noch fehlt ist der Abschnitt mit den Logischen Verknüpfungen und den Bitmaskierungen, aber ich denk das krieg ich über's Wochenende hin.

    lg, Markus

    Hier der Link zum Github - Repo des Assembler-Kurses: Bitte melde dich an, um diesen Link zu sehen.

  • Und wenn Du zu den Stack-Transfers kommst:

    Solche (für Profis banale) Tipps, wie von Krill sind wirklich hilfreich am Anfang:

    Bitte melde dich an, um diesen Link zu sehen.

  • Ich hab mal den Abschnitt über Zahlensysteme und die Umrechnungen zwischen den Systemen fertig.

    Liegt unter GitHub als eigenes separates File.

    Kann man zwar so machen, aber ich würde in der Tabelle S.2 die Binärzahlen mit Nullen auffüllen. Das wird übersichtlicher. Beim Dezimal vielleicht konsequenterweise auch.

    Ja, das mit den Farben passt dann nicht mehr. Das würde ich vielleicht als extra Eintrag machen.

    S.3: Basiszahl des Zahlensystems hoch Nummer der Stelleff. würde ich tatsächlich als Hochzahlen schreiben

    S.7: Das Hexadezimalsystem besitzt wir wir nun wissen -> Das Hexadezimalsystem besitzt wie wir nun wissen

    S.7: auf diese Länge von 4 Stellen aufgefüllt werden -> auf diese Länge von 4 Stellen von links aufgefüllt werden

  • Hallo!

    Habe das Dokument zahlensysteme.pdf um folgende Themen erweitert:

    - Addition von Binärzahlen (auch gleich anhand von entsprechendem Assembler-Code visualisiert), habe hier auch gezeigt wie eine 16 Bit Addition funktioniert

    - Darstellung von negativen Zahlen in binärer Form, also Erklärung von Einer- und Zweierkomplement

    - Logische Verknüpfungen (ODER, UND, EXKLUSIV ODER), hier habe ich dem BASIC-Programm das entsprechende Assembler-Programm gegenübergestellt (zumindest mal bei Prüfung auf Gleichheit und einer UND-Verknüpfung)

    Was noch fehlt, ist der Abschnitt über die Bitmaskierungen, also wie man gezielt einzelne Bits an- und ausschaltet.

    Ursprünglich wollte ich die Addition von Binärzahlen aussparen, hab das Thema dann aber doch integriert damit ich es endlich hinter mir hab :D

    lg, Markus

    Hier der Link zum Github - Repo des Assembler-Kurses: Bitte melde dich an, um diesen Link zu sehen.

  • Hallo!

    So, habe nun auch den Abschnitt über das Löschen und Setzen von Bits fertig.

    Auch hier habe ich wieder den BASIC- und Assembler-Code gegenübergestellt.

    Nun brauch ich mal eine Pause, um mir zu überlegen, was ich im nächsten Kapitel bringe. In der Zwischenzeit freue ich mich wie immer über euer Feedback zum aktuellen Stand! :)

    lg, Markus

    Hier der Link zum Github - Repo des Assembler-Kurses: Bitte melde dich an, um diesen Link zu sehen.

  • Sorry, ich habe mir die letzte Neuerung noch gar nicht angesehen. Bin derzeit krank und recht inaktiv. Aber ich werde schon Fehler finden:D

    Gute Besserung! :)

    Hier der Link zum Github - Repo des Assembler-Kurses: Bitte melde dich an, um diesen Link zu sehen.

  • Grüß euch!

    Ich bin gerade am durchackern vom Dokument zahlensysteme.pdf und da ist mir auf Seite 27 aufgefallen:

    Bitte melde dich an, um diesen Anhang zu sehen.

    Sollte das nicht CPX sein oder liege ich hier falsch?

    Edit1:

    Und beim letzten Satz im gleichen Absatz könnte man die "1" weglassen, das Carry Flag hat ja eigentlich keine Werte, es ist gesetzt.oder nicht, richtig?

    Edit2:

    Und noch eine Frage ist mir eingefallen, sollte man gleich am Start des Programmes eventuell das Cary Flag löschen?

    Danke und weiter so, bald schaffe ich ein Hello World als Laufschrift und blinkend. 🙃

    Gute Besserung 64erGrufti ☺️

    LG znarF

    Bitte melde dich an, um diesen Link zu sehen.Bitte melde dich an, um diesen Link zu sehen.Bitte melde dich an, um diesen Link zu sehen.

    Einmal editiert, zuletzt von znarF (6. März 2024 um 18:08)

  • Hallo!

    Danke, soll natürlich CPX lauten.

    Wie man den Status des Bits ausdrückt, ist glaub ich Geschmackssache, da hat jeder so seine Präferenzen. Solange jeder weiß was gemeint ist, ist alles gut denk ich.

    Bezüglich des Löschen / Setzen des Carry Flags: Es gibt Befehle, die bei unterschiedlichen Werten des Carry Flags auch unterschiedliche Ergebnisse liefern. Ein gutes Beispiel ist

    der Befehl ADC, da macht es einen Unterschied ob das Flag vor der Ausführung den Wert 0 oder 1 hat (siehe auch Abschnitt zur 16 Bit Addition)

    Da ist es dann wichtig darauf zu achten, dass das Carry Flag an der richtigen Stelle den korrekten Wert hat, je nachdem was man erreichen will.

    lg, Markus

    Hier der Link zum Github - Repo des Assembler-Kurses: Bitte melde dich an, um diesen Link zu sehen.

  • Hallo!

    Ich habe mit dem Kapitel über Sprites begonnen und bin mit dem Grundlagenteil eigentlich schon recht weit, zumindest kann man schon mal was damit anfangen und selber rumexperimentieren.

    Bin gespannt auf euer Feedback!

    Auf GitHub hab ich auch ein Disk-Image abgelegt, dort sind die Beispielprogramme für dieses Kapitel drauf, d.h. ihr müsst sie nicht manuell eintippen :)

    SPRITE1, SPRITE2 und SPRITE3 sind BASIC-Programme und SPASM ist ein Assembler-Programm, einfach im SMON laden auf die bekannte Weise mit L"SPASM", dann mit X zu BASIC wechseln und mit SYS 5568 starten.

    Mit SYS 49152 könnt ihr jederzeit zurück zu SMON wechseln und euch den Assembler-Code anschauen bzw. ebenfalls rumexperimentieren wenn ihr wollt.

    In der Zwischenzeit überlege ich mir ein cooles Beispielprogramm :)

    lg, Markus

    PS: Der PDF-Export scheint bei den Tabellen nicht ganz korrekt zu arbeiten, muss ich mir noch anschauen.

    Hier der Link zum Github - Repo des Assembler-Kurses: Bitte melde dich an, um diesen Link zu sehen.