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

last post from pachen at the

Meine Einführung in C64 Maschinensprache / Assembler

  • Und dann erst erklärt man, was man damit in der Praxis so machen kann.

    Ohne zu Wissen, wieso man das in der Praxis braucht, sinkt die Motivation dramatisch, sich das zu merken. Deshalb besser immer ein Beispiel am Anfang zeigen. Sowas wie: "Viele Eigenschaften in Computern werden auf Bitebene gesteuert. Beim C 64 zum Beispiel die Sprites. Es gibt ein Register, dass diese einzeln ein- und ausschaltet. Jedem der acht Sprites ist dabei ein bestimmtes Registerbit zugeordnet. Deshalb muss die CPU eine Möglichkeit anbieten, einzelne Bits unabhängig voneinander zu manipulieren. Damit kommen wir zu den Befehlen ORA, AND und EOR. ..."

  • Und dann erst erklärt man, was man damit in der Praxis so machen kann.

    Ohne zu Wissen, wieso man das in der Praxis braucht, sinkt die Motivation dramatisch, sich das zu merken. Deshalb besser immer ein Beispiel am Anfang zeigen.

    Klar, kann man als Teaser am Anfang machen. Aber nicht als Erklärungsversuch.

    Aber wenn ohne den Teaser schon die Motivation nicht ausreicht, dann sollte man das lassen mit den Assembler. ;)


    Außerdem müsste man dann auch noch erklären, wozu man eigentlich Bits maskieren muss. Dass man in einem Byte ein Bit setzen oder löschen kann, ist für sich genommen auch nicht unbedingt motivierend.

  • detlef: Wenn man es an einzelnen Bitd erklärt sieht man ja überhaupt nicht, wozu man das überhaupt benötigt. Wohingen man bereits in einfachsten Basic-Programmen Kombinationen wie

    Poke 53265, Peek(53265) OR 32

    sieht.

    Das ist nicht anders zu erklären als über komplette Bitmasken bzw. Bitmuster

    Bit 5 wird auf 1 gesetzt.

    Das sehe ich ganz anders. Und bei Dezimalzahlen schon mal ganz schwierig. Deswegen erst die Bits, dann ein Byte in Binärschreibweise und dann kann man ein Beispiel mit Dezimalzahlen bringen und in Hex-Schreibweise.


    Ihr setzt viel zu viel vorraus.

  • Ohne zu Wissen, wieso man das in der Praxis braucht, sinkt die Motivation dramatisch, sich das zu merken.

    Das ist richtig. Wenn man ein Ziel vor Augen hat, was man erreichen will, lernt man ganz anders.

    Aber dafür reciht es dann schon aus, wenn man den Zusammenhang erwähnt, d.h. dass man für das Setzen eines einzelnen Flag/Bit diese Operationen braucht. Auf das wie braucht man dabei noch nicht eingehen.

  • Hallo Markus,


    mir ist aufgefallen, dass die Daten auf dem Stack nach PLA nicht erhalten bleiben in Deinem Beispiel auf S.88.

    Der Hinweis auf S.90 unten ist daher etwas irritierend.

    Grüße und weiter so!

    Jörg

  • Die Frage ist aber auch, ob es sinnvoll ist, sich mit Assembler zu beschäftigen, wenn man das Binärsystem noch nicht so gut begriffen hat.

    Also doch wieder erst die Theorie? ;)

  • Ihr setzt viel zu viel vorraus.

    Dann mach doch mal einen konkreten Vorschlag.

    Hab ich gemacht. Erst AND, OR und XOR an einem Bit erklären. Dann das ganze auf 8 Bit erweitern, dabei aber bei der Binärschreibweise bleiben.

    Und dann das Maskieren oder Setzen von Bits erklären. Ebenfalls in der Binärschreibweise.


    In jedem guten Assembler kann man direkt mit der Binärschreibweise arbeiten. Kein Assemblerprogrammierer tut sich das bei Bit-Operationen in Dezimal an. Das machen nur Basic-Programmierer.

  • Aber ich weiß nicht, ob da nicht ein alternativer Lernweg angebracht wäre. Uns hat in der Schule keiner erklärt, warum wir 5 Stunden die Woche Aussagenlogik und Wahrheitstafeln und Zahlensysteme pauken, dann noch Prädikatenlogik und Backus-Naur-Form und Automatentheorie. Die Anwendung kam viel zu spät und stark zeitversetzt. Dementsprechend war die Motivation so gut wie inexistent. Der C64 lebt für mich davon, dass man mit Basic sofort mit Peeks und Pokes konfrontiert ist

  • Aber ich weiß nicht, ob da nicht ein alternativer Lernweg angebracht wäre. Uns hat in der Schule keiner erklärt, warum wir 5 Stunden die Woche Aussagenlogik und Wahrheitstafeln und Zahlensysteme pauken, dann noch Prädikatenlogik und Backus-Naur-Form und Automatentheorie. Die Anwendung kam viel zu spät und stark zeitversetzt. Dementsprechend war die Motivation so gut wie inexistent. Der C64 lebt für mich davon, dass man mit Basic sofort mit Peeks und Pokes konfrontiert ist

    Ich habe nirgends gesagt, dass man das genau so machen muss. Du verwendest hier rhetorische Schwarz-Weiß-Malerei. So als ob es keinen Mittelweg gäbe.


    In Assembler gibt es übrigens keine PEEKs und POKEs. Und ich hatte das so verstanden, dass das ein Assembler-Kurs werden soll.

  • detlef: Entschuldige, ich sehe dass du Recht hast und ich hier wirklich zu sehr schwarz-weiss male. Ich hab das mit den Peeks nur erwähnt weil ich davon ausgehe, dass jemand, der mit Assembler anfängt schon etwas mit dem Basic auf dem C64 , und dann damit auch mit diesen Befehlen anfangen kann. Dieses Verständnis könnte man dann ja in eine Einführung in eine Hands-on Einführung in Assembler mit einfließen lassen.

  • detlef: Entschuldige, ich sehe dass du Recht hast und ich hier wirklich zu sehr schwarz-weiss male. Ich hab das mit den Peeks nur erwähnt weil ich davon ausgehe, dass jemand, der mit Assembler anfängt schon etwas mit dem Basic auf dem C64 , und dann damit auch mit diesen Befehlen anfangen kann. Dieses Verständnis könnte man dann ja in eine Einführung in eine Hands-on Einführung in Assembler mit einfließen lassen.

    Aber wie man hier im Thread nachlesen kann, haben das mit dem AND und OR auch in Basic einige nicht verstanden. Was ich wiederum verstehen kann, weil das in Dezimal ohne die ensprechendend Grundlagen einfach schwer verständlich ist.

    Das wäre doch eine gute Gelegenheit, das im Assembler-Kurs so zu erklären, dass man es nachher auch in Basic verstanden hat.

  • Und was soll an einer spontanen Umrechnung zwischen Binär- und Dezimalform denn so schlimm sein?

    Ich glaube dir, dass du das kannst. Ich kann auch die 2er-Potenzen bis 131072 auswendig aufsagen. Während ich beim 1x1 in der Schule versagt habe.

    Das hilft aber keinem Assembleranfänger.

  • detlef: Entschuldige, ich sehe dass du Recht hast und ich hier wirklich zu sehr schwarz-weiss male. Ich hab das mit den Peeks nur erwähnt weil ich davon ausgehe, dass jemand, der mit Assembler anfängt schon etwas mit dem Basic auf dem C64 , und dann damit auch mit diesen Befehlen anfangen kann. Dieses Verständnis könnte man dann ja in eine Einführung in eine Hands-on Einführung in Assembler mit einfließen lassen.

    Aber wie man hier im Thread nachlesen kann, haben das mit dem AND und OR auch in Basic einige nicht verstanden. Was ich wiederum verstehen kann, weil das in Dezimal ohne die ensprechendend Grundlagen einfach schwer verständlich ist.

    Das wäre doch eine gute Gelegenheit, das im Assembler-Kurs so zu erklären, dass man es nachher auch in Basic verstanden hat.

    Wie wäre es mit allen Ansätzen?

    Ich glaube einer der Knackpunkte der Diskussion ist es den Königsweg zu finden. Aber der sieht für jeden anders aus.


    Eine, in der man sofort Ergebnisse am Bildschirm sehen kann, wenn man Bits setzt, ohne vielleicht den Background verstanden zu haben.

    Eine Erklär-Bär Version in der versucht wird es heranführend zu beschreiben.

    Eine mathematische, die den Hintergrund der Zahlensysteme beleuchtet.


    Alle natürlich von klein nach groß erklärend. So kann man dort einsteigen, wo man was nicht kapiert hat und so tief wie man will.

    Am besten noch ein paar kleinere Demos und Probearbeiten dabei.


    Ja das ist irsinnig Aufwand..:whistling: