Hello, Guest the thread was viewed29k times and contains 428 replies

last post from pachen at the

Meine Einführung in C64 Maschinensprache / Assembler

  • Ja klar, die Werte stehen natürlich nur so lange, bis sie überschrieben werden. Und das kann natürlich schon recht schnell sein, da ja im Hintergrund viel passiert. Aber der eigentliche Ursprung jag ja in der Idee, dem Programm Parameter zu übergeben. Und dafür taugt es durchaus und ist evtl. sogar noch etwas schneller, als es in irgendwelche Speicherzellen in der Zeropage zu schreiben, einfach aus dem Grund, da diese Werte ja beim SYS sowieso in die Register geschrieben werden und smoit gar nicht mehr aus der Zeropage gelesen werden müssen. Klar, das geht natürlich nur bis 3 Bytes. Für mehr muss man dann einen anderen Weg wählen.


    Prinzipiell kann man sich ja dann vorstellen, ein Ergebnis auf diese Weise ans aufrufende Basicprogramm zurück zu geben. Die offene Frage ist halt nur, wann werden die Register in die Speicherzellen übertragen und wann habe ich evtl. dann keinen Zugriff auf das Ergebnis?

  • Die offene Frage ist halt nur, wann werden die Register in die Speicherzellen übertragen und wann habe ich evtl. dann keinen Zugriff auf das Ergebnis?

    SYS überträgt zuerst 780ff in die Prozessorregister, ruft dann die gewünschte MS-Routine auf und schreibt danach die aktuellen Registerwerte (die sich derweil sicher verändert haben) nach 780ff. Alles ganz transparent!


    Arndt

  • Hallo!


    Danke für die vielen Ausführungen, aber ich glaube dass das für den einen oder anderen Anfänger aktuell etwas verwirrend wirkt.

    Außerdem ging es im Kurs an dieser Stelle ja darum, die verschiedenen Übergabemöglichkeiten zu demonstrieren (Register, Zeropage, an anderer Stelle im Speicher)


    Klar wird es in manchen Fällen immer schnellere und bessere Wege geben, aber wenn ich das alles was hier erläutert wurde an der angesprochenen Stelle im Kurs einbaue, dann kommt man da schnell vom 100ste ins 1000ste.


    lg, Markus

  • Die offene Frage ist halt nur, wann werden die Register in die Speicherzellen übertragen und wann habe ich evtl. dann keinen Zugriff auf das Ergebnis?

    SYS überträgt zuerst 780ff in die Prozessorregister, ruft dann die gewünschte MS-Routine auf und schreibt danach die aktuellen Registerwerte (die sich derweil sicher verändert haben) nach 780ff. Alles ganz transparent!


    Arndt

    Ja, das ist doch für Parameter- und Ergebnisübergabe super.

  • Klar wird es in manchen Fällen immer schnellere und bessere Wege geben, aber wenn ich das alles was hier erläutert wurde an der angesprochenen Stelle im Kurs einbaue, dann kommt man da schnell vom 100ste ins 1000ste.

    Ja, ich meinte ja auch nur, weil Du in der Anleitung so geschrieben hast, als würde das nicht gehen. Das würde ich halt noch passend ändern, weil wie wir jetzt wissen, geht es ja doch.


    Wobei ich das nicht mal als so verwirrend ansehen würde. Dass man die Register per Poke setzen und per Peek auslesen kann, hast Du ja bereits beschrieben. Das ist ja jetzt nur die Anwendung dessen.

  • Also ich finde den Kurs bisher super! :thumbsup:

    Ich bin kein Programmierer und hatte schon mehrfach mit unterschiedlichen Unterlagen versucht, Assembler zu lernen (zu verstehen?) um mal "kleine Dinge" zu programmieren, wie zB den Ballon aus dem 64er Handbuch über den Bildschirm zu bewegen.

    Leider bin ich an vielen Büchern und Kursen bisher immer wieder gescheitert bzw. hatte ich frühzeitig wieder aufgegeben, zuletzt beim 64er Kurs "Assembler ist keine Alchemie". Denn ab Seite 30 wird es für mich dann so richtig öde, weil ich so Dinge wie Einer- oder Zweierkomplement nicht so recht in meinen Kopf bekomme.

    Ich bin eher der praktische Mensch, und brauche gerade am Anfang viele kleine Erfolgserlebnisse, und dieser Kurs hier scheint gut für mich zu passen. :)
    Bitte unbedingt weitermachen, ich werde versuchen zu folgen! :D
    LG

    znarF

  • Also ich finde den Kurs bisher super! :thumbsup:

    Ich bin kein Programmierer und hatte schon mehrfach mit unterschiedlichen Unterlagen versucht, Assembler zu lernen (zu verstehen?) um mal "kleine Dinge" zu programmieren, wie zB den Ballon aus dem 64er Handbuch über den Bildschirm zu bewegen.

    Leider bin ich an vielen Büchern und Kursen bisher immer wieder gescheitert bzw. hatte ich frühzeitig wieder aufgegeben, zuletzt beim 64er Kurs "Assembler ist keine Alchemie". Denn ab Seite 30 wird es für mich dann so richtig öde, weil ich so Dinge wie Einer- oder Zweierkomplement nicht so recht in meinen Kopf bekomme.

    Ich bin eher der praktische Mensch, und brauche gerade am Anfang viele kleine Erfolgserlebnisse, und dieser Kurs hier scheint gut für mich zu passen. :)
    Bitte unbedingt weitermachen, ich werde versuchen zu folgen! :D
    LG

    znarF

    Hallo!


    Das freut mich wirklich sehr, genau das war mein Ziel :)


    lg, Markus

  • Klar wird es in manchen Fällen immer schnellere und bessere Wege geben, aber wenn ich das alles was hier erläutert wurde an der angesprochenen Stelle im Kurs einbaue, dann kommt man da schnell vom 100ste ins 1000ste.

    Ja, ich meinte ja auch nur, weil Du in der Anleitung so geschrieben hast, als würde das nicht gehen. Das würde ich halt noch passend ändern, weil wie wir jetzt wissen, geht es ja doch.


    Wobei ich das nicht mal als so verwirrend ansehen würde. Dass man die Register per Poke setzen und per Peek auslesen kann, hast Du ja bereits beschrieben. Das ist ja jetzt nur die Anwendung dessen.

    Ich hab das alles selber mal ausprobiert und das nun auch in den Kurs aufgenommen. Denn als ich verstanden habe wie das abläuft, gab es von Verwirrung keine Spur mehr und ich hoffe, dass ich es richtig verstanden und wiedergegeben habe.


    Nachzulesen ist es in der nun aktualisierten Version ab Seite 117.


    lg, Markus

  • weil ich so Dinge wie Einer- oder Zweierkomplement nicht so recht in meinen Kopf bekomme.

    Ich bin eher der praktische Mensch, und brauche gerade am Anfang viele kleine Erfolgserlebnisse, und dieser Kurs hier scheint gut für mich zu passen. :)

    In solchen Fällen versuche ich immer das Problem zu visualisieren. Beim Zweierkomplement hatte ich mir 'damals' was in Excel gebastelt. Andere verstehen ein Problem nach 1-2 Sätzen, ich aber nicht und dann ist eine bildliche Darstellung bei mir oft der bessere Weg.

  • Auf S. 104 steht noch der Absatz:

    Quote

    Ein Vorteil dieser Methode ist, dass man auch von BASIC ausgehend die Parameter für das

    Unterprogramm festlegen kann, da die Parameter ja in Speicherstellen abgelegt sind, deren Inhalt

    man über den Befehl PEEK auslesen bzw. über den Befehl POKE ändern kann.

    Inzwischen wissen wir, dass das ja mit Methode1 auch geht. Das war das, was ich meinte. Der Absatz vermittelt dem Leser, dass das mit Methode1 nicht ginge.

    Nachzulesen ist es in der nun aktualisierten Version ab Seite 117.

    Ja, das geht jetzt drauf ein, dass es funktioniert. Aber wie gesagt, der Absatz vorher ist vielleicht noch etwas unglücklich formuliert.

    Den neuen Inhalt finde ich gut erklärt.

  • Ich hab den von Dir genannten Absatz entfernt, weil er mittlerweile nicht mehr gebraucht wird. Denn wie Du schreibst, wissen wir ja nun, dass die Register vor bzw. nach dem Aufruf des Maschinenprogramms über SYS auch für das Basic-Programm erreichbar sind.

  • Meine Probleme sind immer die "AND" oder "OR" Verknüpfungen bei den Bit Zahlen.

    Klar, habe das schon tausentmal erklärt bekommen, aber es will einfach nicht in mein Kopf bleiben. :nixwiss:

    Aber soweit sind wir ja in diesen Kurs noch nicht.

    Kleiner Spickzettel:

  • Zum Glück hatte ich Mengelehre in der Grundschule. Damit hat ich nie Probleme. :D


    Aber ich wäre nie auf die Idee gekommen, logische Verknüpfungen über Mengenlehre zu erklären. Ist viel zu kompliziert, denn UND und ODER drücken ja schon aus, worum es geht. Exklusiv-Oder ist nicht ganz so intuitiv.

  • @markusk2020:

    Kannst Du bitte immer das aktuelle *.pdf an den ersten Beitrag anpinnen? Sonst muss man immer alles "durchforsten"

    Nein, kann er nicht.

    Die aktuelle Version lädt er bei Github hoch. Den Link zum Repository ergänze ich im Eingangspost.