Hallo liebes mikrocontroller.net-Forum! Ich bin Informatiklehrer an einer Realschule und nehme gerade mit meiner 7. Klasse das Thema "Binärcodierung" durch. Nach zig Aufgaben, wie man mit Binärcode rechnen und schreiben kann usw. habe ich immer den Schritt vermisst, den Schülern zu erklären, wie ganz grob der Weg von einer Programmiersprache in Binärcode funktioniert. Ich wollte das ganz überblicksartig machen, da ich sowieso kein wirklich tieferes Verständnis von Assembler etc. habe. Ich wollte meinen Schülern aber trotzdem einmal den Weg in einfachen Schritten erklären. Die Schüler sollen diesen Weg einfach einmal gesehen haben. Nicht mehr und nicht weniger. Unterricht sollte ja mindestens einmal an den ganz praktischen Punkt kommen, was diese Nullen und Einsen für einen "echten" PC bedeuten ... Da weder Assembler noch "echte" Programmiersprachen in meinem Informatik-Studium für das Lehramt (!!!) an Realschulen eine Rolle gespielt haben, brauche ich eure Hilfe. 1) Ist das Arbeitsblatt im Anhang - so reduziert und vereinfacht es ist - inhaltlich korrekt? --> Ich werde es nach eurem "go" noch weiter vereinfachen, da es für den Unterricht schon zu komplex ist ... 2) Bezeichnet der Begriff "erste Generation von Programmiersprachen" nur die Programmierung in Binärcode oder auch die Programmierung in HEX? 3) Repräsentieren die hexadezimalen Opcodes der mnemonischen Symbole quasi direkt errechenbare Nullen und Einsen? 4) Sind die Maschinenbefehle eines Befehlssatzes quasi gleich den mnemonischen Symbolen eines Befehlssatzes? --> siehe https://i.stack.imgur.com/fQWpd.png Ich freue mich auf Antworten, die meinen Wissensstand berücksichtigen und auch den Kontext, in dem ich dieses Wissen benötige. Und über alle anderen Antworten :-) Fabian
Assembler ist keine Programmiersprache im engeren Sinne. Der Maschinencode (Hex-Code) erst recht nicht.
Fabian schrieb: > 1) Ist das Arbeitsblatt im Anhang - so reduziert und vereinfacht es ist > - inhaltlich korrekt? --> Ich werde es nach eurem "go" noch weiter > vereinfachen, da es für den Unterricht schon zu komplex ist ... Naja an einigen Stellen sind die Begrifflichkeiten ungenau, denke aber die Klarstellung würde wieder zu tief ins Detail gehen. Ein Compiler übersetzt zwar den Quelltext in „Maschinencode“, programmiert wird aber immer noch in einem Texteditor oder eine IDE (Integrated Development Environment bzw. Entwicklungsumgebung). > 2) Bezeichnet der Begriff "erste Generation von Programmiersprachen" nur > die Programmierung in Binärcode oder auch die Programmierung in HEX? Im Endeffekt ist hexadezimal nur eine andere Form der Darstellung, ich würde sagen man kann es gleichsetzen. > 3) Repräsentieren die hexadezimalen Opcodes der mnemonischen Symbole > quasi direkt errechenbare Nullen und Einsen? Naja die Opcodes sagen der CPU was sie zutun hat, einfachstes Beispiel wäre das Mnemonic NOP, dieses sagt der CPU nur das sie einen Takt lang nichts tun soll. > 4) Sind die Maschinenbefehle eines Befehlssatzes quasi gleich den > mnemonischen Symbolen eines Befehlssatzes? --> siehe > https://i.stack.imgur.com/fQWpd.png Die Mnemonics sind nur eine lesbare Form der Opcodes
Wenn du es den Schülern zeigen willst kannst du eine Stunde mit dem Altairduino machen. Das zeigt ganz schön wie man von den einzelnen Bits zu einer seriellen Konsole kommen kannAllerdings wird das mehr Show and tell als echte Arbeit für die Klasse
Morsezeichen grob erklären und dann Striche/Punkte durch 1/0 ersetzen, voila! Was für ein Assembler?
Beitrag #6318759 wurde von einem Moderator gelöscht.
Beitrag #6318762 wurde von einem Moderator gelöscht.
Wer hindert dich daran einen virtuellen Prozessor zu definieren mit wenigen Befehlen die deine Schüler als "Prozessor" ausführen. z.b.: Lade Akku mit xy =10,xy z.B. LDA xy Addiere direkt zz =11,zz z.B. ADD zz Addiere Inhalt von Adresse nn = 12,nn Speicher Akku in xx =13,xx u.s.w. Ein Schüler ist CPU Die anderen sind Speicherstellen. Programm an die Tafel/whitebord.
karadur schrieb: > Ein Schüler ist CPU > > Die anderen sind Speicherstellen. > > Programm an die Tafel/whitebord. Da musste ich spontan an dieses Video denken https://youtu.be/f1DtY42xEOI Etwa bei 1:10
>Manche Menschen haben Freude daran, anstatt in Assemblersprachen gleich >mit
Maschinencode(hexadezimal oder binär) zu programmieren.
diese Menschen nennt man auch Masochisten ;-)
nein, im Ernst, streich den Satz
Fabian schrieb: > 3) Repräsentieren die hexadezimalen Opcodes der mnemonischen Symbole > quasi direkt errechenbare Nullen und Einsen? Vielleicht ist es etwas unterhaltsamer, direkt die praktische Seite anzugehen, mit Wertetabellen und logischen Operationen oder Spaß mit dem Zweierkomplement. Man kann auch Zahlenübersetzungen machen, von 2 nach 8 nach 16. oder auch: https://de.wikipedia.org/wiki/De-morgansche_Gesetze Das 8er-System ist besonders interessant für Zahlendarstellungen bei Elektrogeräten bzw. die Zuordnung habe ich nicht im Hinterkopf, jemand anderes vielleicht? Eine ganz gute Hilfe ist u.a. http://wwwi10.lrr.in.tum.de/~jasmin/tutorials.html http://wwwi10.lrr.in.tum.de/~jasmin/tutorials_advanced.html#sevenseg
Walter S. schrieb: >>Manche Menschen haben Freude daran, anstatt in Assemblersprachen gleich >mit > Maschinencode(hexadezimal oder binär) zu programmieren. markierten Text zitieren überfordert Dich? Oder war das ">" am Anfang nur ein Tippfehler? > diese Menschen nennt man auch Masochisten ;-) Ein ehemaliger Kollege, seit ca. 15 Jahren in Rente, nahm sich ein Hex-Listing vom 8086, dazu einen Bleistift und begann, Mnemocis dahinter zu schreiben. Das war einer dener, die von Anfang an dabei waren, lange vor Einführung bezahlbarer Arbeitsplatzrechner! Wir haben seine Kompetenz geschätzt, auch als Kollege, der sein Wissen weitergegeben hat. Wie immer Du es nennen willst, diese komischen Typen haben die Technik vorwärts gebracht, von der wir heute profitieren.
Beitrag #6318807 wurde von einem Moderator gelöscht.
Fabian schrieb: > 1) Ist das Arbeitsblatt im Anhang - so reduziert und > vereinfacht es ist - inhaltlich korrekt? Im Großen und Ganzen -- ja. > 2) Bezeichnet der Begriff "erste Generation von > Programmiersprachen" Hmm. Ich finde die Generationenzählerei wenig hilfreich; ich würde sie weglassen. Recht offensichtlich ist nur die Unterscheidung zwischen Maschinensprache einerseits und "höheren" Programmiersprachen andererseits. > nur die Programmierung in Binärcode oder auch die > Programmierung in HEX? Ist inhaltlich dasselbe. Ob man die Zahlen binär, oktal oder sedezimal ("hexadezimal") codiert, ändert am Zahlenwert nix. > 3) Repräsentieren die hexadezimalen Opcodes der > mnemonischen Symbole quasi direkt errechenbare Nullen > und Einsen? Selbstverständlich, das ist die Idee dahinter. > 4) Sind die Maschinenbefehle eines Befehlssatzes quasi > gleich den mnemonischen Symbolen eines Befehlssatzes? In der Regel nicht, nein: Die Mnemonic "mov" kann, abhängig von der Adressierungsart und den Operanden, ganz verschiedene Maschinenbefehle ergeben. Allen gemeinsam ist aber, dass sie Daten aus einer Quelle in ein Ziel kopieren. Es ist in gewissen Grenzen willkürlich, was man als echt unterschiedliche BEFEHLE zählen will und was nur VARIANTEN desselben Befehls sind. Auch der Fall, dass derselben Maschinenbefehl mehrere Namen hat, ist zwar selten, kommt aber vor.
Beitrag #6318837 wurde von einem Moderator gelöscht.
Niemand versucht in der Praxis Programmiersprachen irgendeiner Generation zuzuordnen. Aber ja, zu Anfang haben die Leute direkt Zahlen aufgeschrieben, danach Befehle die 1:1 in die Zahlen überführt werden konnten und danach Befehle die nicht mehr 1:1 in Zahlen überführt werden konnten. Lass die Spalte mit den oktalen Zahlen weg. Oktal wird heutzutagen nur noch aus historischen Gründen in ganz speziellen Situationen (Unix File Permissions, in C Strings nach Backslash) benutzt und hat ansonsten keine Bedeutung mehr. Man sollte die Schüler nicht mit hochtrabenden Fachbegriffen wie "mnemonische Symbole" belasten. Es werden einfach nur Zahlen durch Begriffe repräsentiert. Je nachdem was man am Rechner so macht, hilft es manchmal die Zahlen hinter den Instruktionen zu kennen. Du willst in einem Programm eine Passwortabfrage überspringen? Schreib ein paar 90h Bytes über die Instruktionen. Du möchtest eine Firmware disassemblieren und hast keine Ahnung was das für ein Prozessor ist? Wenn jedes vierte Byte fast immer ein Eh als oberes Nibble hat, ist es mit hoher Wahrscheinlichkeit ARM32 Code. Intel x86 ist keine schöne Maschinensprache um einzusteigen. Sie hat viel zu viele Altlasten und Sonderfälle. Und dann gibt es auch noch zwei konkurrierende Dialekte bei denen die Reihenfolge der Instruktionsparameter unterschiedlich ist. Besser geeignet ist sowas wie MIPS oder MIPS-X, die für die Lehre entwickelt wurden. MIPS findet man oft in WLAN-Routern, MIPS-X war nur in DVD Playern erfolgreich. ARM32 und AArch64 ist ähnlich gut aufgeräumt und ist in fast allen Smartphones zu finden. Meine erste Berührung mit Maschinensprache hatte ich auf einem MC68000. Das war in Textform auch aufgeräumter als beim x86, aber as CISC-Prozessor vermutlich ähnlich komplex in die Zahlen zu überführen.
Egon D. schrieb: > Auch der Fall, dass derselben Maschinenbefehl mehrere Namen > hat, ist zwar selten, kommt aber vor Selten ist das nicht, das kommt fast überall vor, vor allem bei bedingten Sprüngen. Logisch und Binär ist etwa "Jump if not equal" und "Jump if not Zero" dasselbe, aber es ergibt verständlichere Programme, je nach Kontext die passende Bedingung zu verwenden - nach einem Vergleich ist "Jump if not Zero" völlig korrekt, aber weniger verständlich als "Jump if not equal". Georg
Hallo, georg schrieb: > ...nach einem Vergleich ist "Jump if not Zero" völlig korrekt, > aber weniger verständlich als "Jump if not equal". Sehe ich genau umgekehrt so. rhf
Assemblerprogrammierer schrieb im Beitrag #6318762: > Kurzer Nachtrag: Auf unterster Hardwareebene spricht man nicht von 0 und > 1 sondern von LOW und HIGH. Nur falls mal jemand fragt, warum noch > keiner intelligent genug war einfach eine 2 zu erfinden ;D Dem widerspreche ich :-) Tanenbaum verwendet bspw. explizit die Terminologie ein Signal sei "asserted" oder "not asserted" statt low/high. Denn ein Signal kann "an" (asserted) sein, wenn es "low" ist. Diese Form nennt man dann "active low". Und wenn ein/e Schüler/in nach der zu erfindenden 2 fragt, kann man gleich in das Thema MLC-Flash überleiten ;-)
Roland F. schrieb: > Hallo, > georg schrieb: >> ...nach einem Vergleich ist "Jump if not Zero" völlig korrekt, >> aber weniger verständlich als "Jump if not equal". > > Sehe ich genau umgekehrt so. Wenn wir voraussetzen, dass "cmp r12,r7" den Inhalt des Registers 12 mit dem Inhalt des Registers 7 vergleicht, dann findest Du tatsächlich
1 | cmp r12, r7 |
2 | jrz target |
logischer als
1 | cmp r12, r7 |
2 | jre target |
Nicht wirklich, oder?! Es wird doch nicht darauf getestet, ob die Registerinhalte Null sind, sondern es wird (mittels interner Subtraktion) auf Gleichheit getestet. Bei Gleichheit wird das Zeroflag gesetzt.
Wie wäre es für den Unterricht einen Simulator zu nutzen, wo man die einzelnen Bits und Flags sehen und Assembler und C Code debuggen kann. Wurde von einem Lehrer in Java selbst programmiert: https://www.edsim51.com/
René F. schrieb: > Naja die Opcodes sagen der CPU was sie zutun hat, einfachstes Beispiel > wäre das Mnemonic NOP, dieses sagt der CPU nur das sie einen Takt lang > nichts tun soll. Der NOP tut schon etwas: Der Prozessor erhöht seinen Programmzähler und holt sich von dem damit adressierten Platz im Programmspeicher den nächsten Befehl. Insbesondere aber lässt er dabei seine sonstigen Innereien, die z.B. Zwischenergebnisse und Zeiger auf Operanden beinhalten können, in Ruhe und verändert sie nicht.
:
Bearbeitet durch User
Hp M. schrieb: > René F. schrieb: >> Naja die Opcodes sagen der CPU was sie zutun hat, >> einfachstes Beispiel wäre das Mnemonic NOP, dieses >> sagt der CPU nur das sie einen Takt lang nichts >> tun soll. > > Der NOP tut schon etwas: Der Prozessor erhöht seinen > Programmzähler und holt sich von dem damit adressierten > Platz im Programmspeicher den nächsten Befehl. Naja... der Übergang zur Haarspalterei ist fließend. Die CPU tut natürlich was -- aber die ALU tut nix.
Egon D. schrieb: > sondern es wird (mittels interner Subtraktion) Das ist auf Binärebene/Zahlentrickserei auch ganz spannend. Die Jump-Opcodes beim Intel sind interessanterweise so bei 70-7F angesiedelt bzw. http://faydoc.tripod.com/cpu/jnz.htm Von den Opcodes her kann man (hier und da) auch mehrere für ein und die selbe Sache/Ausgabe nehmen. Das Manual für den 8088 war wohl noch einiges übersichtlicher als die heutigen, mehrteiligen Pdfs. ( http://bitsavers.informatik.uni-stuttgart.de/components/intel/8086/9800722-03_The_8086_Family_Users_Manual_Oct79.pdf ) Alternativ zum 90H wurde mal die Befehlskombi inc ax + dec ax vorgeschlagen, weil das weniger auffällig ist. (z.B.) https://www.heise.de/security/meldung/Spiel-mir-das-Lied-vom-Rootkit-1424426.html https://www.heise.de/security/artikel/Die-Rueckkehr-des-Sprayers-Exploits-trotz-DEP-und-ASLR-1169279.html (funktioniert da aber vermutlich weniger gut) ;)
Egon D. schrieb: > Es wird doch nicht darauf getestet, ob die Registerinhalte > Null sind, sondern es wird (mittels interner Subtraktion) > auf Gleichheit getestet. Ein "cmp" ist eine Subtraktion, bei der das Ergebnis verworfen wird. Bei Gleichheit ergibt die Subtraktion Null. > Bei Gleichheit wird das Zeroflag gesetzt. Eben. Weill Gleichheit bedeutet, dass das Ergebnis einer Subtraktion Null ist. Darum heißt das Ding auch Zeroflag und nicht Equalflag.
Moin, - diese Fragen ("Wie kommt das Programm in den Computer?") sind eigentlich ca. 1980 abgearbeitet wurden. Passend fuer den Wissenstand eines 14-Jaehrigen (7.Klasse) koennte der WDR-Papiercomputer hilfreich sein: https://marian-aldenhoevel.de/papiercomputer/ oder https://web.archive.org/web/20010331082121/http://www.wdrcc.de/khc.phtml Ich fand dieses Beispiel nicht schlecht, allerdings war ich schon aelter und nicht mehr die Zielgruppe (Z80 rules!). Viele Gruesse Th. P.S.: Der Wikipedia-Eintrag: https://de.wikipedia.org/wiki/Know-how-Computer
Wenn du schon Turbopascal und DOS Assembler zeigst, würde ich an deiner Stelle das List File zeigen wo neben den Mnemonics auch die Hex Repräsentation zu sehen ist und dann anhand eines Befehls zeigen wie man vom Mnemonic zum Hex und damit zu bin kommt. Das Beispiel ist etwas unglücklich wegen der BIOS Aufrufe. Diese wirst du vermutlich nicht erklären wollen. Ev wäre etwas mit EVA Prinzip meinetwegen auch auf der LPT Schnittstelle besser. Auch wenn es diese heutzutage nicht mehr gibt.
Thomas W. schrieb: > P.S.: Der Wikipedia-Eintrag: > > https://de.wikipedia.org/wiki/Know-how-Computer Sehe ich auch so. http://www.wolfgang-back.com/knowhow_home.php
Thomas Z. schrieb: > Das Beispiel ist etwas unglücklich wegen der BIOS Aufrufe Die Interrupts bzw. der eine Interrupt ist ein ("Funktionsverteiler") DOS-Interrupt. Schwierig zu erklären, und in Teufels Küche kommt man mit der Segment-Aufteilung. (wie auch mit "Low Byte" und "High Byte" https://de.wikipedia.org/wiki/Byte-Reihenfolge ) Wenn man einen Hexeditor nimmt, kann man folgendes machen: B409BA0200CD21CD20 hineinschreiben + bei Adresse 0200H das 48616c6c6f2046616269616e210D0A24 (kann man noch optimieren..) (die Speicheraufteilung..) Die Hexdatei wird als myprg.com bzw. irgendwas.com gespeichert und kann so aufgerufen werden. Das Dollarzeichen (24H) ist für den Interrupt (CD21H, Funktion 9 (oder so)), damit der weiß, wo die Zeichenkette endet. 0a0dh dürfte schon etwas besser bekannt sein. Der Interrupt "CD20H" beendet das Programm/zurück zu Dos, Registerrückstellung usw. "CD" meint Change Direction (auf gehts zur Interrupt-Tabelle) und ist technisch gesehen ein Zeiger auf einen anderen Zeiger, der auf eine (Unter-)Programmstartadresse zeigt.
rbx schrieb: > "CD" meint Change Direction Selten so viel Schwachsinn gelesen wie hier. Bitte vergesst das einfach. CD (und CC) ist einfach das Byte der HEX-Interpretation des INT-Befehls vom 8086/8088 Assembler. Hex-Befehle noch interpretieren zu wollen ist einfach purer Unfug. leo
rbx schrieb: > Die Interrupts bzw. der eine Interrupt ist ein ("Funktionsverteiler") > DOS-Interrupt. Das stimmt ich hab das verwechselt. INT 21h ist natürlich der DOS Dispatcher. Es fehlen im ASM Programm jegliche Kommentare. Falls du noch 32 Bit Windows hast kann man auch schön mit debug.com einzelne Befehle eingeben und sieht gleich den Hex Code. Bei einem 64bit Windows geht das nur noch mit DosBox.
leo schrieb: > Selten so viel Schwachsinn gelesen wie hier. Bitte vergesst das einfach. Das erkläre doch mal bitte genauer. Und was meint z.B. in diesem Zusammenhang der Begriff "Mnemonics" deiner Ansicht nach? Für Nicht-Merkwürdig erklären? ;)
rbx schrieb: > Und was meint z.B. in diesem Zusammenhang der Begriff "Mnemonics" deiner > Ansicht nach? Das Mnemonic bzw. der Befehl ist INT. Die HEX-Representation des Opcodes ist 0xcd. Was verstehtst du nicht dabei? Was waere dein "Mnemonic" fuer e.g. 0x11 (ADC)? leo
Hallo, Egon D. schrieb: > Nicht wirklich, oder?! Du hast natürlich recht, ich hatte genau das Gegenteil von dem verstanden was du geschrieben hast. rhf
rbx schrieb: > leo schrieb: >> Selten so viel Schwachsinn gelesen wie hier. Bitte vergesst das einfach. > > Das erkläre doch mal bitte genauer. > Und was meint z.B. in diesem Zusammenhang der Begriff "Mnemonics" deiner > Ansicht nach? > Für Nicht-Merkwürdig erklären? ;) Der Hexwert CD (0xCD) hat absolut gar nichts mit Change Direction zu tun (meinst du das Direction Flag das mit CLD und STD beeinflusst wird?) Opcode ist eine Kodierung die binär,dezimal oder wie in diesem Fall bei deinem Hexdump hexadezimal angezeigt werden kann, Mnemonic ist normalerweise der Befehl in Assembler der zu einer solchen Kodierung führt https://x86.puri.sm/html/file_module_x86_id_142.html
leo schrieb: > Was waere dein "Mnemonic" fuer e.g. 0x11 (ADC)? Da braucht es kein "Mnemonic", das ist einfach eine grundlegende Rechenoperation mit Binärzahlen, und keiner von mehreren dazu auch noch teilweise redundanten Prozessorbefehlen. Für ADC Reg8 + 30H braucht man 3 Bytes bzw. für ADC DL, 30 -> 80D230, das hat natürlich keine schöne Mustererkennung wie die INTs.
rbx schrieb: > leo schrieb: >> Was waere dein "Mnemonic" fuer e.g. 0x11 (ADC)? > > Da braucht es kein "Mnemonic", das ist einfach eine grundlegende > Rechenoperation mit Binärzahlen, und keiner von mehreren dazu auch noch > teilweise redundanten Prozessorbefehlen. > Für ADC Reg8 + 30H braucht man 3 Bytes bzw. für ADC DL, 30 -> 80D230, > das hat natürlich keine schöne Mustererkennung wie die INTs. Nö. Das Mnemonic lautet "ADC op1, op2"
rbx schrieb: > Da braucht es kein "Mnemonic", das ist einfach eine grundlegende > Rechenoperation mit Binärzahlen OMG ... und 0xCD ist eine grundlegende Rechenoperation um den PC zu bewegen. BTW ich verbessere grad die Farbnamen: [B]unteres [L]euchten [A]uf [U]ntergrund (oder so) Wiederschaun, leo
cppbert schrieb: > Der Hexwert CD (0xCD) hat absolut gar nichts mit Change Direction zu tun > (meinst du das Direction Flag das mit CLD und STD beeinflusst wird?) Da hast du Recht, so war der Spruch oben nicht gemeint. Aus dieser Sicht kann man tatsächlich die Bedeutung verwechseln. Ich hab mir den zwar nicht selber ausgedacht (meine ich), jetzt bin ich aber doch neugierig, in welchem Zusammenhang ich diesen Hinweis aufgeschnappt bzw. missbräuchlich erweitert (im Sinne von Stille Post). Danke für den Hinweis.
für eine 7 Klasse würde ich einfach 2 kleine Schleifen in Basic und Asm gegenüberstellen. Oder eine kleine Rechenaufgabe, da sieht man sehr schon das die Hochsprache einem viel Abnehmen kann.
Kann ja mal passieren :) Definitiv ist es so das ich keinen opcode kenne der eine symbolische Bedeutung hat, egal in welcher Notationsform Und nur noch mal zur Deutlichkeit Mnemonic = Symbol oder textuelle Notation eines Befehls (der CPU,FPU,Whatever) und seiner Parameter - das ist die Form die gewöhnlich in Assemblerprogrammen Verwendung findet, die menschenlesbare Form Opcode = 1..n Bytes welche (mehr oder minder direkt von der CPU... "interpretiert" werden) enthält Befehlscode und Parameter, die maschinenlesbare Form
Hallo Fabian, hier im Abschnitt "A2 Assemblerprogrammierung" ab S. 32 ist das ganz gut erklärt: http://www.weigu.lu/tutorials/avr_assembler/pdf/MICEL_MODUL_A.pdf Das ganze AVR Assembler Tutorial unter http://www.weigu.lu ist evtl. auch interessant für besonders interessierte Schüler. http://www.weigu.lu/tutorials/avr_assembler/index.html
Fabian schrieb: > habe ich immer den Schritt vermisst, den Schülern zu erklären, wie ganz > grob der Weg von einer Programmiersprache in Binärcode funktioniert. Das kannst Du vergessen. Wen Du mir die Verkehrsregeln nahebringen kannst ohne daß ich sie einzeln auswendig lernen muß bin ich ganz nah bei Dir. Fabian schrieb: > Die Schüler sollen diesen Weg einfach einmal gesehen haben. Nicht mehr > und nicht weniger. Da gehst Du mit den Kleinen besser in den Zirkus. Da hat jeder mehr was von.
P.S.: Ja gut, da bist Du im Forum der lächerlichen Clowns und unglaublichen Attraktionen garnichmal verkehrt. Die Zaubershow ist auch nicht schlecht. Durch nichts als das nichtverstehen von... cppbert schrieb: > Der Hexwert CD (0xCD) hat absolut gar nichts mit Change Direction zu tun > (meinst du das Direction Flag das mit CLD und STD beeinflusst wird?) > Opcode ist eine Kodierung die binär,dezimal oder wie in diesem Fall bei > deinem Hexdump hexadezimal angezeigt werden kann, Mnemonic ist > normalerweise der Befehl in Assembler der zu einer solchen Kodierung > führt ...und/oder... Fabian schrieb: > habe ich immer den Schritt vermisst, den Schülern zu erklären, wie ganz > grob der Weg von einer Programmiersprache in Binärcode funktioniert ...kann man sich das eigene Unverständnis besser ins Bewußtsein rücken. Du hast einen informationstheoretischen Kurzen im Schädel. Zu viele unverdaute Informationen können zu interdisziplinären Überschlägen führen, was auch bedeuten könnte daß Du Dich auf der falschen Hochzeit befindest.
Fabian schrieb: > Ich bin Informatiklehrer an einer Realschule Fabian schrieb: > Ich wollte das ganz > überblicksartig machen, da ich sowieso kein wirklich tieferes > Verständnis von Assembler etc. habe. Du bist also so etwas wie ein Automechaniker, der keine Ahnung vom Otto-Motor hat? Ich kann Deine Schüler nur zutiefst bedauern!
Thomas O. schrieb: > für eine 7 Klasse würde ich einfach 2 kleine Schleifen in Basic und Asm > gegenüberstellen. > > Oder eine kleine Rechenaufgabe, da sieht man sehr schon das die > Hochsprache einem viel Abnehmen kann. Und im gleichen Aufwasch: um WIEVIEL Assembler schneller sein kann...
Hallo, liebes mikrocontroller.net-Forum! Wow, ich bin beeindruckt von den ganzen Antworten, die ich mir alle durchgelesen habe. Ich habe sie als sehr hilfreich und interessant empfunden und dankend angenommen, auch wenn manche meinen Wissenshorizont weit überstiegen haben. Manche Antworten konnte ich dabei in mein Arbeitsblatt übernehmen. Andere (z. B. zu Vorschlägen für Umsetzungen im Unterricht) habe ich für die Zukunft „gespeichert“. Hier die Posts, die in das Arbeitsblatt direkt einfließen konnten: Maxe (Gast): Danke für den Hinweis! Ich habe das durch eine Änderung in der Überschrift nun klargestellt. René F. (therfd): Danke für den Hinweis zur IDE und zu der klaren Darstellung, was Opcodes sind (auch an Daniel (Gast))! Egon D. (egon_d): Danke für den Hinweis zu der Zuordnung von den Mnemonics zu den Maschinenbefehlen und zur Bestätigung meines Wissens, dass die Opcodes schon quasi die Nullen und Einsen repräsentieren! Ich habe im Anhang nochmals das aktualisierte Arbeitsblatt angehängt. Es sind noch 2 Fragen, die sich mir stellen: 1) Wer noch Anmerkungen zum AB hat – immer her damit. Es sollten keine Fehler drauf sein – bei aller Reduktion auf das Wesentliche. 2) Etwas unklar ist mir noch, was mir egon_d erklärt hat. Mir ist ersichtlich, dass im Befehlssatz der Befehl „mov“ mehrmals vorkommt. In der Tabelle unter https://i.stack.imgur.com/fQWpd.png werden die mnemonischen Symbole tatsächlich so dargestellt, dass sie jeweils einem „Maschinenbefehl“ entsprechen. Bei jedem mnemonischen Symbol mit „mov“ stehen ja andere Registeranweisungen dabei. Ist es deshalb „falsch“, von einer Zuordnung „Mnemonics --> Maschinenbefehl“ zu sprechen oder ist das im Rahmen der Interpretation der Begriffe möglich? Das Mnemonics „MOV Ev Gv“ steht ja für einen anderen Maschinenbefehl als das Mnemonics „MOV Gb Eb“, oder? Danke an alle, die sich hier konstruktiv eingebracht haben und mir weitergeholfen haben. Ich bewundere, wie sehr sich die User hier mit diesen Detailfragen zu Assembler etc. auskennen. Da ziehe ich den Hut davor! Ich freue mich auf Antworten zu den eben genannten Fragen :-) Fabian
Route_66 H. schrieb: > Du bist also so etwas wie ein Automechaniker, der keine Ahnung vom > Otto-Motor hat? > Ich kann Deine Schüler nur zutiefst bedauern! Schade, dass du gleich auf die persönliche Ebene gehst, und gleichzeitig nichts konstruktives beigetragen hast. Nach deiner Logik: - Müssen ReligionslehrerInnen der Sek. I Altgriechisch, Hebräisch und Latein verstehen, um überhaupt bibelkundlich tätig zu werden. - Müssen MusiklehrerInnen sich mit internationalen Stars der Musikszene musikalisch auf einer Bühne messen können. - Müssen PhysiklehrerInnen den internationalen wissenschaftlichen Diskurs über die Quantenmechanik verstehen. - Müssen DeutschlehrerInnen, die ihren SchülerInnen Literatur vermitteln wollen, mindestens selbst ein Buch geschrieben haben. Sonst können die das ja nicht. Ich muss dir sagen, dass deine Vorstellungen der Lehrerausbildung für die Sekundarstufe I und die Inhalte in den Bildungsplänen nicht im Geringsten der Wirklichkeit entspricht. Natürlich kann man diskutieren, welche Inhalte in der Lehrerbildung ihren Platz haben sollen. Aber diese Diskussion wird schon seit Anbeginn geführt. In meinem Informatikstudium für das Lehramt war das höchste der Gefühle eine zweistündige Vorlesung (!) zum Thema, wie ein PC AND, OR, ... verrechnet. Überblicksartig. 2 Stunden. Dein Kommentar gegen mich ist also unfair. Ich glaube, meine SchülerInnen können niemandem leid tun. Sie haben einen Lehrer, der sich schon seit 10 Stunden mit der Erstellung eines (!) Arbeitsblattes beschäftigt, sich dafür Hilfe in einem Forum holt, weil er die Lücke des Bildungsplans (!) zur Realität wenigstens ansatzweise füllen möchte und überblicksartig etwas vermitteln will, das er weder bis ins Detail versteht noch studiert hat, es aber als wichtig empfindet, dass seine SchülerInnen das einmal gesehen haben. Aber deine Beurteilung über mich als Lehrer bleibt dir unbenommen - obwohl du mich ja gar noch nicht einmal persönlich kennst.
Fabian schrieb: > Bei jedem mnemonischen Symbol mit „mov“ > stehen ja andere Registeranweisungen dabei. Ja, aber durch die schiere Anzahl von Befehlen gibt es keine genauere Abstufung des Mnemons mehr. Du kannst e.g. von 1-512 Bytes von Registern nach Memory oder Register bewegen und umgekehrt. Das alles ist bei der Prozesssorfamilie MOV. BTW es gab vor ca. 40 Jahren 100e Maschinenbefehle, jetzt hast du eher 10^6 oder so. leo
leo schrieb: > 1-512 Bytes Naja, sollte ca. 512 Bits sein. Oder auch viel mehr, wenn man REP MOVx dazunimmt. leo
Danke für die schnelle Antwort. Ich habe das so in mein AB geschrieben, weil ich es aus verschiedenen Quellen so "zusammengebastelt" habe - vielleicht verstehe ich den Begriff "Maschinenbefehl" auch in einem zu engen oder falschen Sinne. Hier meine Denke für das Arbeitsblatt: "Der Befehlssatz (englisch instruction set) eines Prozessors ist in der Rechnerarchitektur die Menge der Maschinenbefehle, die ein bestimmter Prozessor ausführen kann. Je nach Prozessor variiert der Umfang des Befehlssatzes zwischen beispielsweise 33 und über 500 Befehlen." (Zitat Wikipedia) Ich dachte: - Ich habe die instruction set table von https://i.stack.imgur.com/fQWpd.png - Der "instruction set" ist die Summe aller Maschinenbefehle - Die einzelnen Befehle in der Tabelle sind folglich Maschinenbefehle in menmonischer Form mit zugehörigen Opcodes Ich folgerte: - Jedes Mnemon gehört nach dieser Definition zu einem eindeutigen Maschinenbefehl Du kommst bei deiner Zählung ja auf 1.000.000 (10^6) Maschinenbefehle gegenüber den oben genannten 500. Ist der Knackpunkt hier die Definition von "Maschinenbefehl"? Fabian
um mal bei mov zu bleiben: Die allg Form ist mov Ziel,Quelle die entsprechenden Hex Darstellungen variieren dann je nach Bitbreite und Registeren und Addressierungsarten. Ebenso variiert die Anzahl der resultierenden Bytes. Wie die Codierung dann wirklich aufgebaut ist, ist ein anderes Kapitel, aber das macht ja der Assembler für dich und normalerweise ist das nicht wichtig.
Fabian schrieb: > - Ich habe die instruction set table von > https://i.stack.imgur.com/fQWpd.png > - Der "instruction set" ist die Summe aller Maschinenbefehle Nimm mal einen Befehlssatz eines modernen 64bit-Prozessor und keinen antiken. leo
Fabian schrieb: > Ich glaube, meine SchülerInnen können niemandem leid tun. Sie haben > einen Lehrer, der sich schon seit 10 Stunden mit der Erstellung eines > (!) Arbeitsblattes beschäftigt, sich dafür Hilfe in einem Forum holt, > weil er die Lücke des Bildungsplans (!) zur Realität wenigstens > ansatzweise füllen möchte und überblicksartig etwas vermitteln will, das > er weder bis ins Detail versteht noch studiert hat, es aber als wichtig > empfindet, dass seine SchülerInnen das einmal gesehen haben. Das ist natürlich sehr löblich, gibt aber den Schülern meines Erachtens immer noch keinen Einblick was mit den 0en und 1en passiert. Ich würde an einer anderen Stelle ansetzen und das ganze anhand eines Addierers in Digitaltechnik erklären, dies ist eine elementare Funktion der ALU eines Prozessors und eine vollständige Rechenoperation ist denke ich interessanter als ein paar Quelltext Zeilen in Hochsprache, Assembler und Opcodes, welche einem immer noch nicht sagen was mit den 0en und 1en passiert. Zusätzlich kann man im gleichen Kontext auch auf die Verarbeitungsbreite eines Prozessors eingehen und erläutern warum ein 64 Bit Prozessor sich leichter bei der Addition größerer Zahlen anstellt als ein 32 Bit Prozessor. leo schrieb: > Nimm mal einen Befehlssatz eines modernen 64bit-Prozessor und keinen > antiken. > > leo Welchen Vorteil soll das ganze haben? Um die Grundlagen zu verstehen kann die Architektur nicht einfach genug sein. PIC16F84 wäre da eher sinnvoll, kann zwar schon einiges, ist aber dennoch überschaubar von den Registern, Instruktionen und vom Aufbau. Als Tipp für die Unterrichtsvorbereitung könnte ich das Tabellenbuch „Elektronik Tabellen: Geräte und Systemtechnik“ von Westermann empfehlen, zumindest die Auflage welche bei mir im Regal steht enthält so ziemlich alles was es zum PIC16F84 gibt. Hier gibt es das Instruction Set des PIC16F84, die Befehle sind überschaubar und sehr gut erklärt: http://ww1.microchip.com/downloads/en/devicedoc/31029a.pdf
Manfred schrieb: > markierten Text zitieren überfordert Dich? Oder war das ">" am Anfang > nur ein Tippfehler? > >> diese Menschen nennt man auch Masochisten ;-) persönlich werden kann ich auch: das ;-) überfordert Dich? Hexcode habe ich schon genug eingetippt, heute könnte man mir nicht genug Schmerzensgeld zahlen damit ich das tun würde. Deshalb würde ich die Bemerkung mit der "Freude daran" streichen
sei mir nicht böse, aber du solltest dieses Blatt entsorgen. Hat m.M. überhaupt keinen Informationsgewinn. Zeig deinen Schülern lieber ein paar einzelnen Funktionen AND, OR, XOR, ADD, SUB, shift.... und erkläre Ihnen wozu man soetwas überhaupt braucht. Denn das Schlimmste ist, wenn die Kinder etwas lernen, aber überhaupt nicht wissen wozu das gut sein könnte. Ich glaube dir gerne das du deinen Schülern etwas beibringen willst, aber ich finde das ist für die noch viel zu abstrakt. Ein kleines Rechenbeispiel zeigt hier viel besser den Umgang mit den 0ern und 1ern wie es ein Prozessor macht
1 | 10101010 (170) 0+0=0 |
2 | + 10101010 (170) 1+0=1 |
3 | --------- 1+1=10 also 0 und die 1 wird auf die nächste Stelle übertragen |
4 | 101010100 (340) |
da kann man dann schön zeigen das 8 Bits (1 Byte) nicht mehr ausreichen weil das Ergebniss zu groß ist. Man benötigt als ein weiteres Bit und nimmt dann aber gleich ein weiteres Byte dazu. Da diese ja immer in 8er Blocken oder einem vielfachen davon angesprochen werden.
Fabian schrieb: > 2) Etwas unklar ist mir noch, was mir egon_d erklärt hat. > Mir ist ersichtlich, dass im Befehlssatz der Befehl „mov“ > mehrmals vorkommt. Ja, gut. > In der Tabelle unter https://i.stack.imgur.com/fQWpd.png > werden die mnemonischen Symbole tatsächlich so dargestellt, > dass sie jeweils einem „Maschinenbefehl“ entsprechen. Bei > jedem mnemonischen Symbol mit „mov“ stehen ja andere > Registeranweisungen dabei. Ja, korrekt. > Ist es deshalb „falsch“, von einer Zuordnung > „Mnemonics --> Maschinenbefehl“ zu sprechen oder ist das > im Rahmen der Interpretation der Begriffe möglich? Hier gibt es meiner Meinung nach eine begriffliche Unschärfe. Siehe unten. > Das Mnemonics „MOV Ev Gv“ steht ja für einen anderen > Maschinenbefehl als das Mnemonics „MOV Gb Eb“, oder? Also, ich kenne das so, dass nur das "MOV" als Mnemonic bezeichnet wird. Das, was dahinter noch folgt, sind die Operanden, die nicht zur Mnemonic gehören. Alles zusammen ist die Assembleranweisung für einen ganz bestimmten Maschinenbefehl. Mag sein, dass es andere Auffassungen gibt; ich kenne es nur so.
Fabian schrieb: > Ich habe im Anhang nochmals das aktualisierte Arbeitsblatt > angehängt. Zitat: "Wenn man heute von „ProgrammiererInnen“ spricht, meint man Leute, die PC-Programme erstellen." Also ehrlich. Sind solche Gemeinheiten angemessen? Denk mal darüber nach, wer die ganzen Prozessorsysteme in Laserdruckern, optischen Laufwerken, Festplatten, Kameras, Motorsteuergeräten, Rundtischmaschinen, Computertomographen und nicht zuletzt in den Mobiltelephonen programmiert. Waren das alles Schmiede, Bäcker, Metzger -- oder vielleicht doch studierte Programmierer?
Thomas O. schrieb: > Ich glaube dir gerne das du deinen Schülern etwas beibringen willst, > aber ich finde das ist für die noch viel zu abstrakt. Ein kleines > Rechenbeispiel zeigt hier viel besser den Umgang mit den 0ern und 1ern > wie es ein Prozessor macht 10101010 (170) 0+0=0 > + 10101010 (170) 1+0=1 > --------- 1+1=10 also 0 und die 1 wird auf die nächste Stelle > übertragen > 101010100 (340) Schöne Beispiele sind AND, OR oder XOR. Aber in der 7. Klasse? Da interessiert sich einer von zwanzig ernsthaft dafür.
Fabian schrieb: > - Müssen Wenn Du Dein informationstheoretisches Problem nicht abklemmst, wirst Du mit einem Motorschaden rechnen müssen. Die Kiste läuft ja jetzt schon nich ganz rund.
P.S.: - Müssen Lehrer der Sekundarstufe I informationstheoretische Probleme erforschen?
P.P.S.: Der Taxifahrer sagt daß Realschullehrer in der Forschung darauf hindeuten daß der Bildungsnotstand der oberen Etagen die oberen Etagen untergraben hat. Also das scheint mir nun doch ein wenig zu weit hergeholt. Ich würde eher sagen daß die Taxifahrer von einem geheimen Forschungsprojekt der Regierung unterwandert wurden.
Ich möchte noch einmal ein paar Worte dazu verlieren weshalb hexdezimale Zahlen verwendet werden: 1. Die Industrie hat sich auf 8 Bit pro Byte geeinigt. Das lässt sich prima ohne Verschnitt als zwei hexdezimale Nibble darstellen. In der Tabelle mit den Instruktionen aus dem Arbeitsblatt wurde davon auch Gebrauch gemacht, indem die Spalten das untere und die Zeilen das obere Nibble des Instruktionsbytes repräsentieren. 2. Hexdezimal ist kompakt aber gleichzeitig einfach ziffernweise in binär umrechenbar. Vor 40 Jahren war es schon nicht mehr ungewöhnlich mit 16 Bit Zahlen zu hantieren. Niemand will in dem Fall beim Programmieren mit 16 Ziffern langen Zahlen hantieren. Aber wenn man dann einmal auf Biteben runter muss, weil man mit logischen statt mit arithmetischen Operationen zu tun hat, will man keinen Taschenrechner bemühen müssen, sondern die Umrechnung im Kopf machen. Was ist 1234h or 0810h? Richtig, 1A34h. Und jetzt probiert das mal mit dezimalen Zahlen.
Fabian schrieb: > - Müssen ReligionslehrerInnen der Sek. I Altgriechisch, Hebräisch und > Latein verstehen, um überhaupt bibelkundlich tätig zu werden. Was hat jetzt Altgriechich, Hebräisch und Latein mit Religion zu tun? Ein wenig Bibelarcheologie ist natürlich gar nicht so schlecht, aber.. https://www.youtube.com/watch?v=Up3OF7BHEBw > - Müssen MusiklehrerInnen sich mit internationalen Stars der Musikszene > musikalisch auf einer Bühne messen können. Können die meistens. Jedenfalls die Lehrer in den Musikschulen. Die Kinder in der Musikschule scheinen mir aber eher Opfer einer Fernsehgeneration zu sein, die kein Leben außerhalb mehr kennt. > - Müssen PhysiklehrerInnen den internationalen wissenschaftlichen > Diskurs über die Quantenmechanik verstehen. Die üblichen Physik-Grundkurse sind da gar nicht so weit weg bzw. müssen es nicht sein. Die wenigen Grundlagen reichen schon aus um Feuer zu fangen. > - Müssen DeutschlehrerInnen, die ihren SchülerInnen Literatur vermitteln > wollen, mindestens selbst ein Buch geschrieben haben. Unser Deutschlehrer hatte uns mal zu einer lokalen Dichterlesung mitgenommen oder ins Theater (Galileo Galilei). Hinsichtlich des Arbeitsblattes könnte man sich einfach mal bei Lehrerkollegen informieren, - zumindest wäre DAS eine eigene Erfahrung zum Einbringen - je ahnungsloser die Kollegen, desto besser die Erfahrung, denn die Kinder müssen ja auch damit klarkommen ;)
or 0011 0001 0001 0010 0011 0100 0000 1000 0001 0000 A 1010 B 1011 C 1100 0001 1010 0011 0100 -> Trick 17: 1110 0101 1100 1011 + 1 (bzw. E5CB +1) Was kommt raus? oder: wie siehts aus mit Subtraktion?
rbx schrieb: > Fabian schrieb: >> - Müssen ReligionslehrerInnen der Sek. I Altgriechisch, Hebräisch und >> Latein verstehen, um überhaupt bibelkundlich tätig zu werden. Ja, siehe hier: https://www.uni-heidelberg.de/fakultaeten/theologie/studium/faq-sprachen.html > > Was hat jetzt Altgriechich, Hebräisch und Latein mit Religion zu tun? Siehe oben. > Ein wenig Bibelarcheologie ist natürlich gar nicht so schlecht, aber.. > https://www.youtube.com/watch?v=Up3OF7BHEBw > >> - Müssen MusiklehrerInnen sich mit internationalen Stars der Musikszene >> musikalisch auf einer Bühne messen können. > > Können die meistens. Jedenfalls die Lehrer in den Musikschulen. Was hat das mit Sekundarstufe I an allgemeinbildenden Schulen zu run? > Die > Kinder in der Musikschule scheinen mir aber eher Opfer einer > Fernsehgeneration zu sein, die kein Leben außerhalb mehr kennt. Schln, dass Du mal deüber schreiben lonntest. > >> - Müssen PhysiklehrerInnen den internationalen wissenschaftlichen >> Diskurs über die Quantenmechanik verstehen. > > Die üblichen Physik-Grundkurse sind da gar nicht so weit weg bzw. müssen > es nicht sein. In der Sekundarstufe I? Weißt Du überhaupt was eine Schule ist? > Die wenigen Grundlagen reichen schon aus um Feuer zu > fangen. > Ja, die zerebrale Inflammation scheint bei Dir funktioniert zu haben. >> - Müssen DeutschlehrerInnen, die ihren SchülerInnen Literatur vermitteln >> wollen, mindestens selbst ein Buch geschrieben haben. > > Unser Deutschlehrer hatte uns mal zu einer lokalen Dichterlesung > mitgenommen oder ins Theater (Galileo Galilei). Schön für Dich. Aber way denn nun, Dichterkesung oder Theater? Und was hat das mit der Frage zu tun?
Ich kenne keinen Computer, der "... hin zu den Nullen und Einsen" kennt. Computer (nicht nur PC) kennen "Zustände" (aktiv / inaktiv oder an / aus etc.), die wir in 0 und 1 "übersetzen" damit es handhabbar wird. Weil auch das bei größeren Binärzahlen / Register-Breiten zu unhandlich ist hat man sich auf eine hexa-dezimale Schreibweise "geeinigt". Du hast - mit Verlaub - keine Ahnung und willst etwas vermitteln, dass Du selbst nicht begriffen hast? Das würde ich bleiben lassen - es hilft auch nicht mit Pseudo-Wissen (und "Geschwurbel" :-) ) Gegenfragen "im Keim zu ersticken". Nimm die moderne Variante des Papier-Computers (s. o.) und alle nehmen (hoffentlich) eine kleine Erkenntnis mit.
Hugo H. schrieb: > Du hast - mit Verlaub - keine Ahnung und willst etwas vermitteln, dass > Du selbst nicht begriffen hast? Das würde ich bleiben lassen - es hilft > auch nicht mit Pseudo-Wissen (und "Geschwurbel" :-) ) Gegenfragen "im > Keim zu ersticken". > > Nimm die moderne Variante des Papier-Computers (s. o.) und alle nehmen > (hoffentlich) eine kleine Erkenntnis mit. ich sehe das genauso. Mir scheint das ganze Papier eine Ansammlung leerer Infos, von denen der Ersteller meint, dass man sie irgendwie kennen muss, wenn man einen Computer verstehen will. Beispiele: Der Text suggeriert irgendwie Nullen und Einsen als Strom. Ohne Strukturierung in 8- oder 16-Bit Worte, Befehle etc. kommt da gedanklich keine Struktur dran. Der Absatz zu Programmiersprachen hat 0 Struktur. Mach lieber, was Du selber kennst, und dafür richtig, z.B. n verschieden Programmierpsrachen-Beispiele (Hallo Welt) oder eine IDE oder was Quellcode und Programm eigentlich ist. Lass den Scheiß mit hin und her zwischen Binär und Hex etc. Mach am Anfang, dass alles gleich ist und gut ist. Gerne auch mit Umwandlungsgrafik HEx->Binär, also 8Bit binär und darunter 2 hex und dann nur die 4-er Tabelle. Und danach nur Hex. Es gibt keine Magie dazwischen. Das ganze mit OpCodes macht m.E. nur Sinn, wenn man in Grundzügen eine CPU erklärt. Also, dass sie den OpCode einliest, dann die Argumente und dann damit was tut, angefangen mit Nop. Am Ende solltest Du Dich auf eines Focussieren, eine Hälfte weglassen und den Rest nur maximal je ein kurzBild (So sieht eine IDE aus). Was Du machen solltest? Das, was Du am meisten durchdrungen hast. Begebe Dich nicht aus Glatteis.
Mittlerweile bereue ich fast – bis auf die tollen und gutgemeinten Vorschläge für eine Umsetzung im Unterricht, die ich dankend annehme – dass ich den schulischen Kontext genannt habe, in dem mich diese Frage beschäftigt. Aber gut – so habe ich es formuliert, deshalb lassen wir diesen Aspekt nicht außer Acht. Hier der Unterrichtsverlauf, der vielleicht erklären kann, in welchem Kontext das AB steht. --- Unterrichtseinheit 3: Programmieren in Scratch --- - SuS lernen elementare Begrifflichkeiten dieser „Programmiersprache“ (darf ich das sagen?) kennen - SuS erstellen Projekte in Scratch - … --- Unterrichtseinheit 4: Daten und Codierung --- - SuS lernen, dass es Möglichkeiten gibt, Texte auf verschiedene Weise darzustellen (Morsecode, Blindenschrift, …) --> praktische Übungen dazu - SuS lernen Codierungen kennen, die sich nur für ein enges Gebrauchsfeld eignen (Eiercode, EAN, …) --> praktische Übungen dazu - SuS bauen eine Dosenampel, also einen Binärcomputer, der mit 3 Bits eine Ampelsteuerung darstellt --> Dazu: verschiedene Programmierübungen auf der Alu-Dose --> Was ist ein Bit? Wie viel Bits braucht ein Programmablauf? Was ist ein Byte? Wie können die Programmanweisungen (rot an, gelb aus, grün aus) in Binärsprache übersetzt werden? … - Schreiben und Zählen mit Binärcode (ASCII, Rechnungen mit 8 Bits, …) --> Dazu: Warum kann ich mit weit weniger als 8 Bits nicht alles darstellen --> Stichwort: Kombinationsmöglichkeiten - Rechnen mit Binärcode - … Das AB, um das ich hier so kämpfe und das so umkämpft ist, soll nun lediglich eine kleine Lücke schließen. Es soll zeigen, dass auch Programmiersprachen (Unterrichtseinheit 3) auf nachvollziehbare Art und Weise in Binärcode (Unterrichtseinheit 4) umgewandelt werden können. Die Kinder sollen keine Profis in Prozessortechnik werden oder Assembler verstehen. Nur der Weg zu den Nullen und Einsen ist in diesem Kontext (!!!!!!!!!!!!!) interessant (ja, auch wie ein Prozessor mit Logikgatter funktioniert, aber das ginge in diesem Kontext (!!!!!!!!!!!!) zu weit). Das Blatt ist lediglich ein Link von 20 Minuten Dauer zwischen den beiden Einheiten. Nein, ich baue darauf keine komplette Unterrichtseinheit auf. Was ist denn eigentlich so dermaßen falsch am Arbeitsblatt? Ist es denn so grob fehlerhaft? Ist es so verfehlt für seinen einzigen (!) Zweck auf einfache Weise zu zeigen, dass Programmcode nach nachvollziehbaren und logischen Schritten in Binärcode umgewandelt wird, bevor der Prozessor damit arbeiten kann? Warum sollen SuS, die sich wochenlang mit Programmierung und Binärcode schulisch beschäftigt haben nicht kurz gezeigt bekommen bzw. eine Ahnung entwickeln können, wie beides miteinander in der Realität zusammenhängt? Ist da das AB echt so ungeeignet – auch wenn es vielleicht noch bessere Möglichkeiten gibt, diese Schritte zu zeigen (siehe die Hinweise hier im Thread)?
Thomas O. schrieb: > sei mir nicht böse, aber du solltest dieses Blatt entsorgen. Nein, ich bin da nicht böse. Ich bin dankbar für höfliche Kritik und interessiert an deiner Meinung (manche User überschreiten hier die Grenze zwischen fachlicher Hilfe und persönlichem Angriff etwas, aber vielleicht sehe auch nur ich das so)! Ich kämpfe aber trotzdem noch ein bisschen darum, ob es nicht möglich ist, das AB fachlich korrekt zu verbessern (zum im vorherigen Post genannten Zweck, vielleicht ändert sich durch diese Informationen auch deine Bewertung des ABs, vielleicht auch nicht). Egon D. schrieb: > Waren das alles Schmiede, Bäcker, Metzger -- oder vielleicht > doch studierte Programmierer? Habe ich in der neuen Version verbessert. Danke für den Hinweis. Das war keine Gemeinheit, sondern eine – bewusste – Vereinfachung. Aber ja. Du hast inhaltlich Recht. Konstantin Qualle schrieb: > P.S.: > - Müssen Lehrer der Sekundarstufe I informationstheoretische Probleme > erforschen? Nein, aber dürfen sie nicht Fragen dazu stellen? Sorry, ich wollte nur etwas dazulernen, privat und beruflich. Konstantin Qualle schrieb: > P.P.S.: > Der Taxifahrer sagt daß Realschullehrer in der Forschung darauf > hindeuten daß der Bildungsnotstand der oberen Etagen die oberen Etagen > untergraben hat. > > Also das scheint mir nun doch ein wenig zu weit hergeholt. Ich würde > eher sagen daß die Taxifahrer von einem geheimen Forschungsprojekt der > Regierung unterwandert wurden. Den Inhalt und Ziel dieser Aussage verstehe ich nicht.
Nun. Zurück zur eigentlichen Frage. Deshalb habe ich ja eigentlich geschrieben. Egon D. schrieb: > Also, ich kenne das so, dass nur das "MOV" als Mnemonic > bezeichnet wird. > > Das, was dahinter noch folgt, sind die Operanden, die > nicht zur Mnemonic gehören. > > Alles zusammen ist die Assembleranweisung für einen ganz > bestimmten Maschinenbefehl. > > Mag sein, dass es andere Auffassungen gibt; ich kenne es > nur so. Danke für die gut verständlichen Ausführungen. Da habe ich tatsächlich das Wort „Maschinenbefehl“ zu eng gesehen. Kommt die veränderte Erklärung in der neuen Version des AB (Anhang) näher an eine korrekte Darstellung ran? Ich bitte um Rückmeldungen, ob mein Verständnis der Sache im AB jetzt – für meine Zwecke – gut zusammengefasst ist. Einige Fachbegriffe werde ich wohl noch streichen, mal sehen … Ich habe den Teil mit den Opcodes und Maschinenbefehlen mal rot markiert. Er steht jetzt an ganz anderer Stelle. So ist das ganze logischer, finde ich.
Fabian schrieb: > Egon D. schrieb: >> Waren das alles Schmiede, Bäcker, Metzger -- oder >> vielleicht doch studierte Programmierer? > > Habe ich in der neuen Version verbessert. Danke für > den Hinweis. Das war keine Gemeinheit, sondern eine – > bewusste – Vereinfachung. Ja, ich weiss. Vereinfachung ist unvermeidlich und richtig -- man muss aber aufpassen, die Grenze zur Verfälschung nicht zu überschreiten. Die scheinbar unerschütterliche Laien-Meinung, dass "der" Computer "natürlich" ein IBM-kompatibler PC mit x86-Prozessor und Windows-Betriebssystem ist, ist aber eine solche Verfälschung. PCs mit Tastatur und Bildschirm stellen die kleine Spitze des Eisberges dar, die der Laie sieht -- aber im Verborgenen werkeln noch viel mehr Computer, die der Laie nicht sieht, die aber in der Summe viel wichtiger sind als die paar PCs.
Egon D. schrieb: > Vereinfachung ist unvermeidlich und richtig -- man muss > aber aufpassen, die Grenze zur Verfälschung nicht zu > überschreiten. > Die scheinbar unerschütterliche Laien-Meinung, dass "der" > Computer "natürlich" ein IBM-kompatibler PC mit x86-Prozessor > und Windows-Betriebssystem ist, ist aber eine solche > Verfälschung. > > PCs mit Tastatur und Bildschirm stellen die kleine Spitze > des Eisberges dar, die der Laie sieht -- aber im Verborgenen > werkeln noch viel mehr Computer, die der Laie nicht sieht, > die aber in der Summe viel wichtiger sind als die paar > PCs. Ja, da gebe ich dir vollkommen Recht. Ganz am Anfang des Unterrichts (vor Corona ...) haben wir das auch so thematisiert. Computer sind Geldautomaten, Mikrosteuerungen, DVD-Player, Smartphones, ... EVA-Prinzip. Ich habe mich im AB halt für eines entscheiden müssen, das für die SuS "handhabbar" ist. Aber so vom Prinzip her funktioniert ja die Geschichte bei einem Smartphone ähnlich (!!!!!!) wie bei einem "normalen" PC. Jetzt interessiert es mich aber, da du mir ja in den Begrifflichkeiten enorm geholfen hast: Steckt im jetzigen AB deiner Meinung nach für den schulischen, oben erläuterten Zweck eine zu starke Vereinfachung gleich einer Verfälschung oder habe ich die Sachverhalte in einem akzeptablen Rahmen zusammenfassen können? Es geht jetzt weniger um das AB an sich, sondern erstmal darum, ob ich es darin richtig für meine Bedürfnisse verstanden habe (das war eigentlich eh der Hauptpunkt der Eröffnung dieses Threads ... das Blatt ist z. B. an manchen Stellen zu überfrachtet mit Fachbegriffen ... ich will es jetzt nur mal für mich wissen, ob mein Verständnis passt). Das AB werde ich wohl - dank Corona - eh erst im nächsten Jahr eventuell benutzen. Bin nur grad so "drin" im Thema ...
Unbedacht der ganzen Posts bisher, bitte das Folgende nicht zu persönlich nehmen, jedoch: Wie willst Du Deinen Schülern Programmieren beibringen, wenn Dir selbst offenkundig die wichtigsten Grundlagen der boolschen Algebra, Schaltwerken und Schaltnetzen fehlt?
Jürgen W. schrieb: > Wie willst Du Deinen Schülern Programmieren beibringen, wenn Dir selbst > offenkundig die wichtigsten Grundlagen der boolschen Algebra, > Schaltwerken und Schaltnetzen fehlt? Wer sagt, dass mir diese Grundlagen in meinem Berufsfeld fehlen? Also - okay. Ich kann weder bei einer Software-Firma einsteigen und mit "echten" Programmiersprachen finanziell produktiv arbeiten noch habe ich das Wissen, das ein Informatiker hat, der eben jahrelang rein Informatik studiert hat. Davon bin ich um ehrlich zu sein sogar weit weg, weil es nicht Teil meines Studiums war (3 Fächer, Pädagogik, Psychologie, ...) --> welche Detailtiefe soll man da pro Fach erwarten???. Aber die Programmiersprache, die wir im schulischen (!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!) Kontext nutzen, beherrscht die von dir angesprochenen Dinge (zumindest die Booleschen Operatoren als einfügbare Blöcke). Warum genau sollen mir diese Begriffe nichts sagen? https://de.wikipedia.org/wiki/Scratch_(Programmiersprache) https://de.scratch-wiki.info/wiki/Blockform_%3D_Wahrheits-Bl%C3%B6cke
Jürgen W. schrieb: > Wie willst Du Deinen Schülern Programmieren beibringen, wenn Dir selbst > offenkundig die wichtigsten Grundlagen der boolschen Algebra, > Schaltwerken und Schaltnetzen fehlt? Gar nicht -> Troll.
Moin, - ich finde immer noch besser, einen Papiercomputer zu verwenden. Aber wenn Du so oder so nur 20min eingeplant hast, dann ist das so. Zu Deinem Code-Schnipsel (ich habe extra das Programmer's Reference Manual aus dem Keller geholt, Nov 1986 gekauft [REF]): Vielleicht solltest Du noch ein bischen Kommentieren (kostet nicht viel Platz) mov ah, 09h ; BIOS Display String function int 21h ; Call BIOS mov al, 00h ; Set return-Value to 0 (= Qapla') [REF2] mov ah, 4ch ; BIOS Function End process int 21h ; call BIOS Der Schueler lernt damit, dass es ein Betruebssystem (hier MS-DOS) gibt, dass primitive Funktionen (z.B. Display String oder halt Terminate Process) anbietet. Als Bonus: Eine Rueckmeldung (al = 00h) wenn das Programm erfolgreich durchgefuehrt wurde. Das Bild von dem Prozessor ist fast komplett sinnfrei, benutze den Platz, um MS-DOS erklaeren (Du zeigst ja 10 Zeilen frueher, wie man das Ding [int 21h ist ein SW-Verteiler der auf einmal vom Himmel kommt] benutzt). Der Prozessor kann das alles nicht (Richtige Computer [TM] hatten eine Konsole, und wurden mit IPL {initial Program load} oder Bootstrap gestartet) Noch ein Puenktelchen: - Du schreibst alles ueber Assembler ... Erstes Bild ist ein Pascal Programm, dann ein Assembler-Sniplet, anschliessend ein C- Programm. Etwas verwirrend. Gruesse Th. P.S.: Die Foren-SW hat meine schoene Formatierung ins Klo gepackt. so ne driss. [REF] Microsoft (High Performance Software) MS-DOS 3.1 Programmer's reference Manual, Markt und Technik Verlag, kein Autor, ISBN 3-89090-368-1, 1986 oder (wenn Version 2 reicht, mit Schreibmaschinensatz): http://bitsavers.informatik.uni-stuttgart.de//pdf/microsoft/dos/Microsoft_Programmers_Reference_Manual_MSDOS_2.0.pdf [REF2] https://en.wiktionary.org/wiki/Qapla%27
Jürgen W. schrieb: > Wie willst Du Deinen Schülern Programmieren beibringen, > wenn Dir selbst offenkundig die wichtigsten Grundlagen > der boolschen Algebra, Schaltwerken und Schaltnetzen > fehlt? Gegenfrage: Wie wollen denn die Leute, die bereits programmieren können, ihre Kollegen und Nachfolger ausbilden, wenn sie weder willens noch in der Lage sind, in allgemeinverständlicher Sprache einen Lehrkanon zu formulieren, der deutlich länger als drei Semester gültig ist? Testbeispiel: Gib je eine von der Programmiersprache unabhängige , d.h. allgemeingültige Definition für die Begriffe "Array" und "Liste" an.
Fabian schrieb: > Steckt im jetzigen AB deiner Meinung nach für den > schulischen, oben erläuterten Zweck eine zu starke > Vereinfachung gleich einer Verfälschung oder habe > ich die Sachverhalte in einem akzeptablen Rahmen > zusammenfassen können? Ein paar Punkte sind mir aufgefallen: 1. Es kommt nicht deutlich heraus, dass die bessere Lesbarkeit von höheren Programmiersprachen bzw. Assembler kein zufälliges Kuriosum ist, sondern DER zentrale Grund, warum man nicht einfach im Binärcode programmiert, sondern diese Sprachen überhaupt geschaffen hat (Programmiersprachen sind ja künstliche formale Sprachen.) 2. Da die Generationenzählerei bei Programmiersprachen ist in der Praxis nicht üblich ist, hast Du das zu Recht weg- gelassen -- aber die Unterscheidung von höheren Programmier- sprachen und maschinenorientierten Sprachen ist m.E. in den Lehrkanon eingegangen; das sollte man also erwähnen. 3. Die Erklärungen zur Assemblersprache auf Seite 2 sind m.E. zu wirr zu lesen. Außerdem muss im Beispiel ein Fehler sein; "mov AX, DATA" im Programm kann in der Tabelle nicht zu "mov AL, lb" führen. AL ist nicht AX. Überhaupt scheint mir das die falsche Tabelle zu sein; Register EAX und MS-DOS passt nicht recht zusammen. Die dritte Seite finde ich ganz gut so.
Ich stimme mit Egon überein, die 2. Seite ist ziemlich konfus. Ich würde da wohl erklären das bei einem CISC ein Maschinenbefehl aus einem oder mehreren Bytes bestehen und dann 2 Mnemonics rauspicken. z.B mov AX,0 und xor AX,AX die beides das gleiche bewirken, die 2. Variante aber kürzer ist. Das wäre optional auch der Platz um die CPU flags zu erklären. Zusätzlich kannst du auch die allg. Form Mnemonic Ziel,Quelle erklären vielleicht mit dem Hinweis, dass dies Intel spezifisch ist. Die Tabellen würde ich weglassen. Die Übersetzung passiert nicht automatisch sondern das macht der Assembler. Auf der 3. Seite sind die SP und BP Register unüblich benannt. Viele Leute schreiben das Mnemonic klein die Register Namen groß. Technisch ist das aber egal.
Beim Titel "Die Bedeutung von 0 und 1 für den echten Computer" sollte im Inhalt dann herauskommen, warum und dass alles im Rechenwerk binär verarbeitet wird. Binär sind die Maschinenbefehle selbst, sind alle Zahlen in den verschiedenen Darstellunngsarten (Ganzzahl/Gleitkomma/Festkomma), sind Buchstaben mit ihren Codes (ASCII/Unicode und Nicht-Standard-Codierungen), sind letzlich auch Verzweigungen in Form von Flags (if .. then) und sind Hardwareregister die die physische Anbindung an die Außenwelt darstellen. Wenn man die Elektronik dahinter mal außen vor lässt, fehlt zum Verständnis eines Computers noch der Teil, wie mit diesem doch eingeschränkten Befehlssatz Bilder und Zeichen auf einen Bildschirm dargestellt werden und wie Eingaben funktionieren (Das letztere ist der einfachere Teil). Mit den Maschinenbefehlen selbst kann man nämlich keine Hardware steuern, sondern das geschieht durch das Lesen und Schreiben in bestimmte Speicherstellen/Register, die bei entsprechenden Werten vordefinierte elektrische Aktionen auslösen. Bei einem einfachen Gerät wie einem Taschenrechner mit 7-Segment-Anzeige lässt sich das aber leichter erklären, wie bei einem PC mit Graphikkarte und Monitor.
Die beste Seite zum anfangen ist immer noch www.sprut.de
Thomas W. schrieb: > mov ah, 09h ; BIOS Display String function > int 21h ; Call BIOS > mov al, 00h ; Set return-Value to 0 (= Qapla') [REF2] > mov ah, 4ch ; BIOS Function End process > int 21h ; call BIOS Hier wird nirgends BIOS code aufgerufen, int 21h ist der Interrupt der im Normalfall von MS DOS belegt wird
Beitrag #6323515 wurde von einem Moderator gelöscht.
Tausend Dank für das ganze Feedback. Da habe ich ja nun einige Rückmeldungen bekommen, wie ich dieses Blatt noch verbessern kann. Ich habe das, was ich für mich und meine Bedürfnisse verstanden habe, in das Arbeitsblatt übernommen und es gleich verbessert wieder angehängt. Hier der „Korrektur-Log“: Thomas W. (dbstw): Danke für die Hinweise, die das AB noch ergänzen würden. Ich versuche gerade aber eher, auf das Wesentliche zu reduzieren (im Sinne der Reduktion) als noch weitere, neue Begriffe einzuführen. Das Bild des Prozessors steht wirklich überflüssig da. Habe ich entfernt. Ich habe die Codebeispiele am Anfang nun auch vereinheitlicht, so dass sie zusammenpassen, wie auf der letzten Seite. Ich kann mit meinem Wissen nicht beurteilen, welche Sprachen-Schnipsel ich da auf der ersten genau gepostet habe, außer, dass ich weiß, dass eines Programmiersprache und das andere Assemblersprache ist. Danke für den Hinweis! So ist es logischer und stimmiger … Egon D. (egon_d): Der Hinweis, was denn nun der Vorteil von Sprachen mit Syntax ist, ist absolut wichtig. Auf der letzten Seite (der Arbeitsauftrag) können die SuS das eigens erfahren. Ich hatte das AB schonmal in einer anderen Fassung, mit der ich unzufrieden war (deshalb hole ich mir jetzt ja diese Hilfe), herausgegeben. Auf die Frage: „Na, wie war das, den Programmcode in die ganzen Nullen und Einsen zu überführen?“ kam die erwartete Antwort: ätzend. Da habe ich das dann thematisiert, was dieser große Vorteil von Programmiersprachen ist. Habe das aber nun auch so im Arbeitsauftrag einfließen lassen, ohne die Lösung vorwegzunehmen. Der Hinweis zu den höheren bzw. maschinennahen Sprachen ist nun drin. Ich habe versucht, Seite 2 noch „griffiger“ zu formulieren, was aber gar nicht so leicht ist. Vielleicht ist es jetzt ja besser (hab unnötige Umschweife etwas ausgedünnt). Zu der Tabelle mit den Opcodes siehe unten (habe ich eine Folgefrage dazu). Und danke für das Lob für die 3. Seite – auch wenn es wikipedia gehört :-) Thomas Z. (usbman): Danke für den Hinweis für Seite 2 – habe ich nun umformuliert. Dass einem Mnemonic noch Operanden wie Quelle und Ziel hinzugefügt werden, habe ich versucht, elegant im Kontext der Opcodes und Maschinenbefehle einfließen zu lassen. Zur Tabelle: vielleicht passt diese durch die oben genannten Änderungen nun besser, da ich sie halt als sehr anschaulich empfinde. Das ist aber zu klären (siehe unten). Maxe (Gast): Super Einwand. Mein AB hat den total falschen Titel. Logisch. Man versteht natürlich dadurch nicht, wie ein Computer funktioniert, da die ganze E/A-Seite (und letztlich auch die ganzen Adressierungen prozessorintern etc.) nicht erklärt werden. Ich habe den Titel so geändert, dass das Blatt nun nicht mehr verspricht, als es (vielleicht) kann. Super auch deine Erklärung dazu! Ich würde da so gerne mehr drüber wissen, glaube aber nicht, dass dieses Forum der richtige Ort ist, sich dieses Wissen ghrundständig aufzubauen. Kennst du ad hoc ein Buch, das in einfachen Schritten ohne viel Fachchinesisch diese Dinge erklärt? Ich staune tatsächlich – auch ehrfürchtig – wie aus schlichten Rechenoperationen „Sinn“ in Form von Bildern, Audio etc. entsteht. Was für unglaublich schlaue Köpfe, die diese Technik entwickelt und an ihren heutigen Punkt geführt haben! ________________________________________________________ Okay. Stunde der Wahrheit. Im Anhang habe ich das Blatt, in dem die oben genannten Verbesserungen eingeflossen sind. Ich bin gespannt, ob es nun erstmal überhaupt besser geworden ist und vor allem, ob es generell fachlich richtig ist. Die Geschichte mit der Opcode-Mnemonic-Tabelle etc. kann ich selbst nicht beurteilen, ob die jetzt passt. Falls nicht, wäre ich dankbar, wenn mir jemand einen Link zu einer hätte, die in meinem Kontext (DOS?) passt. Ich freue mich auf (erneutes) Feedback, so dass ich das AB dann digitalerweise abheften kann :-) P.s.: Diese Opcode Tabelle hier scheint eher zu meinen Assembler-Code-Schnipseln zu passen, oder? https://books.google.de/books?id=MADMDwAAQBAJ&pg=PA267&lpg=PA267&dq=mov+eax+8b&source=bl&ots=M8hiJBmHfD&sig=ACfU3U3lSWYHU2p3iKtlY80XKhcxhbJMBA&hl=de&sa=X&ved=2ahUKEwjG_tTt9KzqAhWPqqQKHSYaDY4Q6AEwAXoECAoQAQ#v=onepage&q=mov%20eax%208b&f=false
Zu deiner Opcode Tabelle würde ich eher Verweise einfuegen auf genau die Befehle die in dem Assembler Hello World verwendet werden x86 purism ist echt einfach und alles sauber erklärt: https://x86.puri.sm z.B für INT: https://x86.puri.sm/html/file_module_x86_id_142.html
Wenn du von der 7. Klasse Informatikunterricht redest, sprichst du dann von einer Klasse in Österreich? Das entspräche dann wohl 11. oder 12. Klasse in Deutschland. In Niedersachsen lernen die Kinder in der 7. Klasse Gymnasium was ein Ordner ist oder wie man Texte in LibreOffice schreibt. Beziehungsweise gerade heute hatten die Kinder im PC-Unterricht Star Wars angeschaut. Ist ja nicht so, als ob durch Corona bereits massig Unterricht versäumt wurde...
Assembler und Maschinencode reichen für das Verständnis eines MC-Systems nicht aus. Es fehlt die darunter liegende Ebene des Microcodes. Der Maschinencode wird im MC in einen Microcode übersetzt. Dieser steuert die einzelnen Komponenten in zeitlicher Reihenfolge.Diese Komponenten sind die Register, ALU, PC, Stack usw. Z B bei mov a,b bewirkt derMicrocode, dass das Register b über Output Enable seine Daten auf den internen Datenbus legt und im nächsten Schritte das Register a über den Input Enable die Daten vom internen Bus übernimmt. Der Programmzähler PC wird auf den nächsten Maschiencode gestellte. DerMaschinencode wird vom Befehlsdekoder in den nächsten Microcode übersetzt. ..... Vielleicht sollte am Beginn das Konzept einer TURING Maschine und die Von-Neumann-Architektur erklärtwerden, bevor mit ASM und Compiler begonnen wird. https://de.m.wikipedia.org/wiki/Turingmaschine https://de.m.wikipedia.org/wiki/Von-Neumann-Architektur
:
Bearbeitet durch User
Fabian schrieb: > Nein, aber dürfen sie nicht Fragen dazu stellen? Sorry, ich wollte nur > etwas dazulernen, privat und beruflich. Du weißt also nicht wie das geht. Fabian schrieb: > Den Inhalt und Ziel dieser Aussage verstehe ich nicht. Den Inhalt und Ziel Deiner Aussage verstehe ich nicht. (Die Putzfraue hat das auch verstanden)
Noch ein paar Kleinigkeiten: Ich würde mich über ein "i.d.R." zwischen "Dazu benutzen sie" und "höhere Programmiersprachen" freuen. Wer Betriebssysteme, Bootloader oder auf Geschwindigkeit/Platz optimierte Sachen programmieren muss, benutzt auch heutzutage manchmal noch Assembler(sprache). Ich kann mit dem 2x auftauchenden Satz "Von diesem Prozess merkt man nichts." rein gar nichts anfangen. Natürlich merkt man etwas davon. Man merkt, dass der Computer für einen Bruchteil einer Sekunde arbeitet und am Ende eine Datei mit dem Ergebnis auftaucht. Zu MOV: Alle Varianten von MOV, die heutige PCs verstehen, sind in https://software.intel.com/content/dam/develop/public/us/en/documents/325462-sdm-vol-1-2abcd-3abcd.pdf ab Seite 1209 aufgeführt. Die Instruktionstabelle im Arbeitsblatt ist korrekt für DOS. Dass dort z.B. "eAX" steht, verdeutlicht, dass im 16 Bit Modus ax und im 32 Bit Modus eax benutzt wird. Allerdings ist das Codebeispiel für den 64 Bit Modus. Denn nur dort gibt es die 64 Bit Register rbp und rsp. Es ist meiner Meinung nach nicht gut im Arbeitsblatt auf "mov eax, DWORD PTR [rbp-8]" zu zeigen aber dann in der Instruktionstabelle auf eine andere Variante von MOV (B8) zu zeigen. In der Zusammenfassung des Arbeitsblatts taucht dann wieder das "mov eax, DWORD PTR [rbp-8]" auf und wird mit 8B 45 F8 in Maschinencode übersetzt. Die Variante, die mit 8B anfängt, bewegt eine Zahl aus dem RAM oder einem anderen Register in ein Register. Die Variante die mit B8 anfängt, bewegt eine Konstante die in der Instruktion kodiert ist (ein immediate value) in ein Register. Zu "MOV Ev, Gv" vs."MOV Gv, Ev": Die Variante, die mit 89 anfängt, bewegt eine Zahl aus einem Register ins RAM oder in ein anderes Register. Um eine Zahl von einem Register in ein anderes Register zu kopieren, kann man also oft frei zwischen der 89 und 8B Variante wählen. Wenn einer der Parameter eine Speicherzelle im RAM beschreibt, hat man aber nicht die Wahl. Normalerweise nimmt der Assembler (das Übersetzungprogramm) eine passende Variante. Nur in sehr seltenen Fällen interessiert sich ein Programmierer dafür, welche Variante benutzt wird, weil sie z.B. eine bestimmte Anzahl Bytes lang ist, die an der Stelle benötigt wird.
Gerald K. schrieb: > Es fehlt die darunter liegende Ebene des Microcodes Die ist für das Verständnis völlig unerheblich und verwirrt Anfänger nur. Es kommt durchaus vor, dass Befehle, die ursprünglich per Microcode ausgeführt wurden, in neueren Generationen mit dem gleichen Befehlssatz in einem einzigen Zyklus ausgeführt werden. Das ist einer der Gründe, warum die neuen Prozessoren viel schneller sind. Umgekehrt können Befehle vorheriger Versionen in einer späteren Version aus Kompatibilitätsgründen per Microcode emuliert werden. Das ist aber für die Funktion unwichtig und interessiert höchstens CPU-Spezialisten oder Programmierer, die Zyklen zählen wollen. Die findet man in einer Grundschulklasse aber eher selten. Der TO sollte daher das Wort Microcode besser garnicht erwähnen. Georg
Wichtig wäre noch das "ProgrammiererInnen" einfach durch "Programmierer" zu ersetzen. Diesen Mist hält doch keiner im Kopf aus und wenn das schon in der 7. Klasse den Kindern eingehämmert wird, braucht man sich auch über nichts mehr wundern. Vielleicht sollte man sich, anstatt mit Gender-Problemen, einfach mit den naturwissenschaftlichen Grundlagen beschäftigen. Dann würde auch auffallen, dass die Natur sich selbst um Geschlechter und Evolution kümmert.
Thomas F. schrieb: > Wichtig wäre noch das "ProgrammiererInnen" einfach durch "Programmierer" > zu ersetzen Das grosse Binnen-I ist sowieso nicht mehr korrekt, weil nach Ansicht von Feministinnen das grosse I ein männliches Sexsymbol ist. Korrekt ist daher "Programierer*innen". Moderatoren, achtet darauf! Ihr habt ja sonst nichts zu tun. Georg
Mir fehlt noch u.a. Mit besten Grüßen aus dem www.mikrocontroller.net - Forum - in den Quellenangaben im AB Einige der Quellen sind sowieso sehr komisch, da wäre wohl weniger ist mehr angebracht, und auch lieber solche, die eher Binär oder Digitaltechnik zum Thema haben und weniger "Programmieren" bzw. Programmieren in Assembler. Einheitlicher Code. Wenn man den Kindern die Unterschiede zwischen 16,32 und 64 Bit (128, 256) erklären kann, dann könnten die die Codeanpassung (u.a. mit dem Stack) auch selber machen. Mehr als die Parameterübergabe über den Stack gibt der C-Code aber nicht her. der ret-Befehl im Assembly ist kein return in C ! Also: Wo ist die dazugehörige Ausgabe in Asm ? Außerdem gibt printf im didaktischen Sinne noch ein wenig mehr her (als solcher, nicht als asmdump). Komprimierverfahren, Know How und Rechentechnik dazu kann man schon zeigen, vielleicht nicht auf dem AB, aber mit Mengenverbrauch und Zeitverbrauchbetrachtungen z.B. oder auch Parallelisierungstechniken (Pipelines, Multicore). Hexeditor benutzen können. Weiter oben wurde aus sehr guten Gründen Hello World, Papiercompi oder Pic empfohlen.
Wenn ich das so lese, wünsche ich unseren Kindern andere Lehrer. Keine Ahnung - aber die "Schwarmintelligenz" wird es schon richten. Ich würde mich schämen, mit einem solchen Unwissen vor eine Klasse zu treten und das zu verbreiten. Für mich immer noch: Troll.
:
Bearbeitet durch User
Hugo H. schrieb: > Ich würde > mich schämen, mit einem solchen Unwissen vor eine Klasse zu treten und > das zu verbreiten. Ach komm, ich habe schon mal eine Informatiklehrerin kennen gelernt, welche die Windows Kommandozeile als BIOS bezeichnet hat. Ich finde es schön wenn jemand Engagement zeigt und seine Schüler nicht nur das 10-Finger System beibringt oder zeigt wie man in Word mit WordArt eine bunte Überschrift erzeugt. Wie der TO auch geschildert hat, sind Lehrer in der Regel keine promovierten Ingenieure. In meiner Schullaufbahn gab es gerade mal 2 Lehrer welche mehr wussten als sie vermitteln musste. Das war der Religionslehrer in der Grundschule welcher ebensfalls der Pfarrer unserer Kirche war (schrecklicher Typ, ich hatte mal irgendwas angestellt, eigentlich lächerlich, vielleicht Kaugummi gekaut, wo er meinte er müsse meinen Eltern einen Brief schreiben. Den hat er dann sogar persönlich bei uns in den Briefkasten geworfen, sogar meine Eltern fanden das überzogen). Der andere war ein Chemie-Professor als Chemie-Lehrer in der 9. Klasse (auch kein besonders angenehmer Zeitgenosse, hat mit unbegründeten schlechten Noten einigen Schülern den Schnitt versaut, irgendwann hat der mal in jeder Klasse eine Dia-Show über sich und sein Leben gemacht, nachdem mehrere Schülerinnen behauptet haben sie würden sich von ihm bedrängt fühlen). Wie gesagt, ich finde es löblich das der TO als Lehrer mal etwas über den Tellerrand hinausschaut und kann die Kritik nur schwer nachvollziehen.
René F. schrieb: > Wie der TO auch geschildert hat, sind Lehrer > in der Regel keine promovierten Ingenieure. Das mag ja sein. René F. schrieb: > In meiner Schullaufbahn gab > es gerade mal 2 Lehrer welche mehr wussten als sie vermitteln musste. Dann haben die ihren Beruf verfehlt. René F. schrieb: > Wie gesagt, ich finde es löblich das der TO als Lehrer mal etwas über > den Tellerrand hinausschaut und kann die Kritik nur schwer > nachvollziehen. Ich nicht - wie kann ich etwas lehren, was ich selbst nicht verstehe? Das ist ein Widerspruch in sich. Solche "Lehrer" sind keine Lehrer. Die sollten sich einen anderen Beruf suchen.
Vielen lieben Dank an alle, die sich hier konstruktiv gemeldet haben und ein echtes Interesse daran hatten, mir als Neuling auf dem Gebiet der „theoretischen / praktischen Seite der Informatik“ den groben Zusammenhang zwischen Mnemonics, Opcodes, Hexzahlen und Binärcode näher zu bringen. Es ist erstaunlich, wie viel Wissen sich hier in diesem Forum versammelt und vor allem, wie viel weiter man bei diesen Themen in die Tiefe einsteigen kann. Ich habe mich entschlossen, den jetzigen Stand meines Wissens, der auch durch eure Hilfe in das AB eingeflossen ist, an anderer Stelle weiter zu vertiefen. Ich bin – verständlicherweise – nicht bereit, mich hier weiter als Troll, schlechten Lehrer, Ahnungslosen … betiteln zu lassen. In meinem Lehramtsstudium für Informatik wurden weder Binärzahlen noch die eigentliche Funktionsweise eines Computers besprochen (wenn überhaupt: sehr grundlegend, in vielleicht 4 Stunden im gesamten Studium). Programmiert wurde „nur“ in einer schulnahen Programmiersprache – stark objektorientiert, kaum Code. Mit neuen Lehrplänen sind nun aber Binärzahlen und Programmierung etc. in einfacher Form Themen in der Schule (da es das Fach „Informatik“ hier erst im dritten Jahr gibt). Ob heute die Informatiklehrerausbildung immer noch eher Programmschulung ist als eine Vermittlung „technisch informatischer Kompetenzen“ kann ich nicht sagen. Mir macht es jedenfalls Freude, mit SuS immer weiter in dieses neue Fach einzusteigen. Meine private Leidenschaft im PC-Bereich gilt eher der praktischen Seite von Netzwerk, Servern, Clients, neuerdings auch Linux, Shell etc. Ich bin hier im Forum mit der Frage angetreten, ob es nicht möglich ist, einen Zusammenhang zwischen einer Programmiersprache und resultierendem Binärcode herzustellen, da mich dies einfach – privat und beruflich - interessiert hat. Dieses Wissen habe ich auf einem Arbeitsblatt festgehalten und versucht, dies schülerfreundlich darzustellen. Ich wollte einfach zumindest eine Antwort haben, falls ich gefragt werde, was denn nun aus dem Code geschieht (Einheit 3), wenn ein PC doch nur mit 0 und 1 „rechnen“ kann (Einheit 4). Fand ich besser als nur zu sagen: „Ist halt so“. Dieses Wissen versuchte ich mir hier durch meine Fragen (und durch die geleistete eigene Vorarbeit) anzueignen. Deshalb habe ich geschrieben. Nicht, weil ich schon alles weiß, sondern weil ich ja auch die Chance haben wollte, etwas neu zu lernen. Und ja – neues Wissen gebe ich natürlich an meine SuS weiter, wenn es gerade in den Unterricht „passt“. Ob das – jetzt ja noch unfertige - AB auf Dauer Bestand gehabt hätte, das steht auf einem anderen Stern. Ob es „zu schwer“, „zu oberflächlich“, „überflüssig“ etc. gewesen wäre, das hätte ich dann gesehen. Nicht rein durch Hypothesen im Vorfeld, sondern auch durch den Unterrichtsgang und vor allem die jungen Menschen, die ich vor mir habe. Wie hier manche User in aggressiver und unangebrachter Weise mit mir umgehen, kann ich beim besten Willen nicht nachvollziehen. Und das nur, weil ich neue Dinge – wenn auch auf einem niedrigen, aber für meine Zwecke passenden Niveau – lernen möchte, um diese dann mit meinen Schülern teilen zu können, wenn sie danach fragen. Ich war in meinen Augen jederzeit höflich, sachlich und kann nicht sehen, was genau hier manche so in Aufruhr versetzt. Ja, ich weiß diese informatischen Dinge noch nicht. Aber ich bin ja gerade dabei, sie mir anzueignen. Deshalb habe ich ja auch Hilfe gesucht und nicht einfach "nichts" gemacht. Und der Gedanke, sich auch neues Wissen anzueignen, das macht für mich – unter vielen anderen Dingen - einen guten Lehrer aus. Ich wünsche euch weiterhin alles Gute!
Hugo H. schrieb: > Ich nicht - wie kann ich etwas lehren, was ich selbst nicht verstehe? > Das ist ein Widerspruch in sich. Solche "Lehrer" sind keine Lehrer. Die > sollten sich einen anderen Beruf suchen. wenn er es nicht macht - dann machen die 7. Klasse Realschule Kids eben nur - wie funktioniert Windows und das Internet - und das erklärt dann eben der Chemie oder Biolehrer und wenn keine Bock hat gibt es eben keine Informatik thats it Keine Ahnung in welcher Welt du gross geworden bist aber es gibt auch nicht so perfekte Schulen mit Lehrern die das beste versuchen was sie eben hin bekommen - und dafür ist das ordentlich was hier gezeigt wird
Fabian schrieb: > Wie hier manche User in aggressiver und unangebrachter Weise mit mir > umgehen, kann ich beim besten Willen nicht nachvollziehen. Das passiert hier relativ häufig - je einfach das Thema - um so mehr Antworten und Beschimpfungen - keine Ahnung was speziell hier in diesem Forum so viele Vollpfosten ans Land spült
ich kann dir problemlos zu einem kleinen Win32/DOS Programm vom Assembler bis zum Binär-Code - und zurück :) alles detailiert erklären - macht mir Spass einfach an 264_4l9u4qt74f2w at byom.de eine eMail mit deinen Kontaktdaten (ist die gesicherte Adresse zu einer byom.de eMail-Adresse - die kann nur ich lesen)
georg schrieb: > Thomas F. schrieb: >> Wichtig wäre noch das "ProgrammiererInnen" einfach durch "Programmierer" >> zu ersetzen > > Das grosse Binnen-I ist sowieso nicht mehr korrekt, weil nach Ansicht > von Feministinnen das grosse I ein männliches Sexsymbol ist. Korrekt ist > daher "Programierer*innen". Wenn schon, dann Programmeusen!
Fabian schrieb: > Ich habe mich entschlossen, den jetzigen Stand meines Wissens, der auch > durch eure Hilfe in das AB eingeflossen ist, an anderer Stelle weiter zu > vertiefen. Vernünftig. Dann kannst Du Dich ja mal über Rechner-Architekturen https://de.wikipedia.org/wiki/Von-Neumann-Architektur informieren und den Kindern Grundlagen vermitteln statt mit Code-Schnipseln, von denen Du - vorsichtig ausgedrückt - unbeleckt bist, zu hantieren.
> In meinem Lehramtsstudium für Informatik wurden weder Binärzahlen noch > die eigentliche Funktionsweise eines Computers besprochen Das ist in der Tat traurig. Aber mal ehrlich, Binärzahlen sind bei der Stoffdichte an der Uni nicht mehr als eine Randnotiz wert.
Daniel schrieb: > Das ist in der Tat traurig. > Aber mal ehrlich, Binärzahlen sind bei der Stoffdichte an der Uni nicht > mehr als eine Randnotiz wert. Wer nicht mit den Grundlagen vertraut ist, dem bleibt Höheres verwehrt! Gilt nicht nur in der MC-Technik. Binäre Zahlen und Boolsche Funktionen sind Grundlagen. Fabian schrieb: > Nach zig Aufgaben, wie man mit Binärcode rechnen und schreiben kann usw. > habe ich immer den Schritt vermisst, den Schülern zu erklären, wie ganz > grob der Weg von einer Programmiersprache in Binärcode funktioniert Ich würde Bücher wie https://www.amazon.de/Grundlagen-Techniken-Compilerbaus-Niklaus-Wirth/dp/3486709518/ref=sr_1_3?adgrpid=72504882458&dchild=1&gclid=EAIaIQobChMIxuPNws6w6gIVh9KyCh2woQ2DEAAYASAAEgK59fD_BwE&hvadid=392753014467&hvdev=t&hvlocphy=9062727&hvnetw=g&hvqmt=e&hvrand=10801866892602470512&hvtargid=kwd-324014496394&hydadcr=22150_1973891&keywords=compilerbau&qid=1593763189&sr=8-3&tag=googhydr08-21 "studieren" und prüfen ob die Grundlagen meiner Schüler ausreichen um dieses Thema zu verstehen, sonst wir nichts draus.
Gerald K. schrieb: >> Aber mal ehrlich, Binärzahlen sind bei der Stoffdichte an der Uni nicht >> mehr als eine Randnotiz wert. > > Wer nicht mit den Grundlagen vertraut ist, dem bleibt Höheres > verwehrt! > Gilt nicht nur in der MC-Technik. > > Binäre Zahlen und Boolsche Funktionen sind Grundlagen. Ich weiß nicht, wie es bei dir, Gerald, im Studium war, aber bei uns wurden Sachen wie komplexe Zahlen kurz definiert, dann gab es ein kleines Beispiel dazu und danach wurde vorausgesetzt, dass wir damit Rechnen können.
Fabian schrieb: > Ich war in meinen > Augen jederzeit höflich, sachlich und kann nicht sehen, was genau hier > manche so in Aufruhr versetzt. Das kann ich beantworten, unabhängig davon, dass ich die Anfeindungen hier nicht gutheiße: 1.) Gender-Quatsch. Das generisches Maskulinum sollte in deutschsprachigen Schulen bekannt sein. Warum hier Kinder politisiert und ideologisiert werden, ist mir unbegreiflich. 2.) Viele der Antwortenden hier (ich auch) wurden in einem Umfeld ausgebildet, in dem der jeweilige Lehrer, Ausbilder, Meister, Dozent, Professor ein Experte auf seinem jeweiligen Fachgebiet war bzw. ist. Die Kritik hat nichts mit Dir als Individuum zu tun, sondern Du bist der Surrogat für ein System, in dem "Fachlehrer" ausgebildet werden und entsprechende Titel erhalten, gleichzeitig aber die elementarsten Fach-Grundlagen nicht vermittelt bekommen. Es ist die Kritik an einer katastrophalen gesellschaftlichen Entwicklung, bei der die Zur-Schau-Stellung einer Sache einen höheren Stellenwert genießt, als die fachliche Korrektheit. Es ist eine Katastrophe, dass in heutigen Prüfungsordnungen teilweise die Präsentation einer Arbeit einen höheren Bewertungsanteil hat, als der fachliche Inhalt! Ich bin der Meinung, so wie vermutlich viele andere hier auch, dass wir als Gesellschaft in der Bundesrepublik Deutschland massiv an unseren Fundamenten graben, überlebensfähig zu bleiben. Diese Entwicklung zerstört unsere wirtschaftliche Leistungsfähigkeit und somit die Zukunft unserer Kinder und Enkelkinder. Als ich Dein Posting vor einigen Tagen gelesen habe, war ich ebenfalls fassungslos und ehrlich gesagt wütend. Es passt eben alles zusammen: Los geht es mit Gender-Quatsch und endet bei einem Informatiklehrer der nix über Programmiersprachen und Assembler weiß. Eine einzige Katastrophe eben. Bezahlt von Steuergeldern.
Daniel schrieb: > Ich weiß nicht, wie es bei dir, Gerald, im Studium war, aber bei uns > wurden Sachen wie komplexe Zahlen kurz definiert, dann gab es ein > kleines Beispiel dazu und danach wurde vorausgesetzt, dass wir damit > Rechnen können. Gerade komplexe Zahlen sind ein weites Gebiet. Es gibt sehr viel über die Wurzel einer negativen Zahl zu erzählen um so das Verständnis zu vertiefen. Geschichte : https://www.mathematik.de/dmv-blog/2451-270-jahre-eulersche-identität-eine-kurze-geschichte-der-komplexen-zahlen Anwendungen : https://de.m.wikibooks.org/wiki/Komplexe_Zahlen/_Anwendung_in_der_klassischen_Physik Gute Lehrer zeichnen sich durch Kreativität, Begirde sich weiterzubilden, Neues zu entdecken (übrigens auch wichtige Eigenschaften für gute Entwickler) aus. Das Wissen spannend zu vermitteln ist auch sehr hilfreich. Ein guter Lehrer legt auf Grundlagenwissen wert, den ohne ein gutes Gefühl für die Grundrechnungsarten lässt sich kein Wissen über die Inegralrechnung vermitteln. Ich hatte Glück solche Lehrer zu haben. Beispiel für Grundlagenwissen : Wie sieht das Zeichen '0' auf einem Uartsignal aus? Viele kennen den Unterschied zwischen ASCII 0 und einen Null Charakter (C Stringterminierung) nicht.
:
Bearbeitet durch User
1 | [rbx@fe1 ~]$ ./csumF |
2 | [rbx@fe1 ~]$ echo $? |
3 | 5 |
4 | |
5 | [rbx@fe1 ~]$ gdb csumF |
6 | GNU gdb (GDB) Fedora 9.1-5.fc32 |
7 | Copyright (C) 2020 Free Software Foundation, Inc. |
8 | License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html> |
9 | .. |
10 | Find the GDB manual and other documentation resources online at: |
11 | <http://www.gnu.org/software/gdb/documentation/>. |
12 | For help, type "help". |
13 | Type "apropos word" to search for commands related to "word"... |
14 | |
15 | Reading symbols from csumF... |
16 | (gdb) list |
17 | 1 int main (){ |
18 | 2 |
19 | 3 int a = 2; |
20 | 4 int b = 3; |
21 | 5 int c = a + b; |
22 | 6 |
23 | 7 return c; |
24 | 8 |
25 | 9 |
26 | 10 } |
27 | |
28 | |
29 | (gdb) disas main |
30 | Dump of assembler code for function main: |
31 | 0x0000000000401106 <+0>: push %rbp |
32 | 0x0000000000401107 <+1>: mov %rsp,%rbp |
33 | 0x000000000040110a <+4>: movl $0x2,-0x4(%rbp) |
34 | 0x0000000000401111 <+11>: movl $0x3,-0x8(%rbp) |
35 | 0x0000000000401118 <+18>: mov -0x4(%rbp),%edx |
36 | 0x000000000040111b <+21>: mov -0x8(%rbp),%eax |
37 | 0x000000000040111e <+24>: add %edx,%eax |
38 | 0x0000000000401120 <+26>: mov %eax,-0xc(%rbp) |
39 | 0x0000000000401123 <+29>: mov -0xc(%rbp),%eax |
40 | 0x0000000000401126 <+32>: pop %rbp |
41 | 0x0000000000401127 <+33>: retq |
42 | End of assembler dump. |
43 | |
44 | (gdb) x /50xb |
45 | Argument required (starting display address). |
46 | (gdb) x /50xb 0x0000000000401106 |
47 | 0x401106 <main>: 0x55 0x48 0x89 0xe5 0xc7 0x45 0xfc 0x02 |
48 | 0x40110e <main+8>: 0x00 0x00 0x00 0xc7 0x45 0xf8 0x03 0x00 |
49 | 0x401116 <main+16>: 0x00 0x00 0x8b 0x55 0xfc 0x8b 0x45 0xf8 |
50 | 0x40111e <main+24>: 0x01 0xd0 0x89 0x45 0xf4 0x8b 0x45 0xf4 |
51 | 0x401126 <main+32>: 0x5d 0xc3 0x0f 0x1f 0x84 0x00 0x00 0x00 |
52 | 0x40112e: 0x00 0x00 0xf3 0x0f 0x1e 0xfa 0x41 0x57 |
53 | 0x401136 <__libc_csu_init+6>: 0x4c 0x8d |
54 | |
55 | (gdb) quit |
56 | [rbx@fe1 ~]$ |
57 | |
58 | ----------------------------------------------------------------------------------------------------------------------------------------------------- |
59 | nix Linux ! -> MS-Dos Debug: |
60 | |
61 | -u 100 |
62 | 1ABB:0100 89E5 MOV BP,SP |
63 | 1ABB:0102 C646FC02 MOV BYTE PTR [BP-04],02 |
64 | 1ABB:0106 C646F803 MOV BYTE PTR [BP-08],03 |
65 | 1ABB:010A 8B56FC MOV DX,[BP-04] |
66 | 1ABB:010D 8B46F8 MOV AX,[BP-08] |
67 | 1ABB:0110 01D0 ADD AX,DX |
68 | 1ABB:0112 8946F4 MOV [BP-0C],AX |
69 | 1ABB:0115 5D POP BP |
70 | 1ABB:0116 C3 RET |
Das ist nur nochmal zur Überprüfung. Ich finde das Codebeispiel aus dem Buch (mehr als) ziemlich lausig. Mir war nicht klar, ob codeformat reicht, oder ob das Textfile hochladen sinnvoller ist. Den Asm-Code von Debug wollte ich noch kommentieren, aber dann war die schöne Formatierung weg, also habe ich die Kommentare weggelassen. Die Operendenüberschreib-Präfixe bei 64Bit wusste ich nicht mehr so genau, aber auf der Seite: https://www.deinmeister.de/x86-64.htm kann man sich auf die schnelle ganz gut informieren.
Was ich komisch finde, jetzt braucht ein Schüler nur die Überschrift vom Blatt eingeben und bekommt als erstes Google Ergebnis die Hilfestellung vom Lehrer :D Sehr Lehrreich.
Hallo Fabian, Um noch ein wenig mit Binärzahlen und Opcodes zu spielen, schau dir mal den Profan - Interpreter + Compiler, Version 11.a als Freeware unter Download an : http://xprofan.de/start.htm Insbesondere Kapitel 29.7. Auch kann man Binärzahlen mit SetBit() und TestBit() einzelne Bits setzen und auslesen. Umrechnen in andere Zahlensysteme geht natürlich auch. Ist evtl. für dich auch interessant, da man direkt Ergebnisse sieht. Ein CLS, ein PRINT und ein WAITKEY genügt, um was ins Fenster zu schreiben. Damit brauchst du dich dann fast gar nicht zu belasten. Kann ja sein, daß für dich was Interessantes dabei ist. Und gerade die jungen Leute wollen ja gleich Ergebnisse sehen.
:
Bearbeitet durch User
Beitrag #6325884 wurde von einem Moderator gelöscht.
Zur Frage Assembler und Informatikunterricht sollte der Link auf den Phywe-Computer nicht fehlen: Beitrag "Re: Reparaturanfrage CPU-Modellrechner Phywe"
Hi Fabian Ich finde es mutig von dir, einen Unterricht über Assembler anzubieten, obwohl du selbst nicht sattelfest bist. Ja, es ist völlig in Ordnung,wenn mal klar gemacht wird, das ein Computer nicht mit "1" und "0" arbeitet, sondern mit "Spannung" und "nicht Spannung". Wir machen es uns dann einfach und behaupten, das eine ist "1' und das andere ist "0". Im Forum Makerconnect.de findest du einen interessanten Beitrag im Forum "FAQ" mit dem Titel "Keine Angst vor Assembler". Da sollte alles, was du brauchst drin stehen, soweit ich mich erinnere. Gruß oldmax
Hi Hab mir heute mal die Zeit genommen, ein wenig intensiver über die Fragen und Antworten zu lesen. Ehrlich gesagt, als Schüler hätte ich entweder nix verstanden, weil hier auf Programmiersprachen rumgehackt wird, von denen sie sowieso niemals etwas anfassen werden oder mich zu Tode gelangweilt, weil ich mich bereits selbst schon damit befaßt habe und von Kumpels schon wesentlich weiter aufgeklärt wurde. Was ich damit sagen will: Ihr redet alle von Mnemonik, Op-Code, Maschinencode, von High und Low, von Binär- Hex- und was weiß ich noch für -zahlen und dabei vergeßt ihr ganz: Will ich einem Schüler das alles erklären, komme ich doch nicht umhin, ihm erst einmal klar zu machen, das eben nur Spannung oder nicht Spannung von einer Elektronik ausgewertet werden kann. Da geht man einfach mal an den Lichtschalter und schaltet ein und schaltet aus und fragt die Klasse, ob das eine Information ist. Jemand, der vor dem Gebäude steht und das Licht durch ein Fenster sieht, weiß, da ist wer. Auf Grund dieser Information kann er nun eine Aktion folgen lassen, einfach gesagt, er besucht dann den Bewohner oder läßt den Einbruch. Dieses Licht ein, Licht aus oder Spannung EIN oder Spannung AUS, das ist die Information, die kleinste Einheit, das Bit sozusagen. Früher war High und Low gebräuchlich, dannn kam 1 und 0. Aber warum keine Spannungsangabe? Nun, ganz einfach, 1 und 0 ist eben unabhängig von der benutzten Versorgungsspannung. Steuerungen wurden mit 220 V, 60V, 48 V 24 V betrieben. Schließlich folgten frei programmierbare Steuerungen, dessen Herzstück mit 5V oder weniger betrieben wurde. Aber während der gesamten Zeit konnte man sagen, das Signal hat eine 1 oder eine 0, war High oder Low oder was euch sonst noch so einfällt,was diese beiden Zustände aufzeigt. Welche Spannung Conrad Zuse für seinen ersten Rechner benutzt hat, hab ich nicht im Kopf, aber das ist auch egal. Doch was fangen wir mit diesem einen Signal, dieser einen Information an? Und da kommt die Kombination von mehreren Leitungen zum Tragen. Wie in der Mathematik, wo es auch nicht nur die eine Stelle mit den Werten zwischen 0 und 9 gibt. Ist der Bereich ausgeschöpft und es wird eine größere Zahl, sprich Information erforderlich, geht man in die nächste Stelle. Die Schüler der 7. Klasse sollten das wissen und das Dezimalsystem kennen. 10^0, 10^1, 10^2 usw. Die Zahl 10^0 ergibt 1, genauso wie 2^0 oder 8^0 oder 16^0. Immer erhalte ich eine 1 und 10^1 ergibt 10, 2^1 ergibt 2 8^1 ergibt 8 usw. Nun kommen wir zur Bewertung einer Dezimalzahl 234 z.B. das ist 4 x 10^0 + 3 x 10^1 + 2 x 10^2 = 4 x 1 + 3 x 10 + 2 x 100. Eigentlich sollte uns das Rechnen im Binärsystem viel leichter fallen, sind die Werte doch nur 1 oder 0, erinnern wir uns, Licht an, Licht aus. Somit setzt sich eine größere Zahl wie 1 aus mehreren Stellen zusammen. z.B.7 ist 4 + 2 +1, 4 ist 2^2, 2 ist 2^1 und 1 ist 2^0. Somit hätten wir mit 3 Leitungen schon die Möglichkeit, 8 verschiedene Aufgaben auszulösen. Von 000 bis 111 sind 8 Werte, 0-7. Mit einer solchen Einleitung findet man dann schließlich die gebräuchliche Breite von 8 binären Stellen, dem Byte und dann kann man hinüber wechseln zum Maschinencode. Das ist grob gesagt eine Information an eine Auswerteelektronik (Befehlsmatrix), die den Controller dazu bringt, einen von 256 "Befehlen" auszuführen. Da in der Regel die 256 unterschiedlichen Informationen nicht ausreichen, werden Bytes hinzu gefügt. Wir alle kennen die 32Bit- und 64Bit-Windowssysteme, nur um mal was Zeitgemäßes zu erwähnen. So, und nun kann man auch beweisen, das man mit Licht an, Licht aus auch rechnen kann. Auch hier das Dezimalsystem: 5+7 geht nicht mit einer Stelle, sondern es passiert ein Überlauf von 1! Immer bei 2 zu addierenden Zahlen. Also im Ergebnis 2 x 10^0 und einen Überlauf in die nächste Stelle 1 x 10^1. Im Binärsystem gilt das Gleiche. Wir wissen, der höchste Wert kann nur 1 sein, also 1+1 muß demnach einen Überlauf in die nächste Stelle haben. Das Ergebnis: 0 x 2^0 + 1 x 2^1 somit binär "10". Wenn ein Unterricht so aufgebaut wird, kann man dann auch klar machen, warum Assembler und folgende Hochsprachen dem Programmierer das Leben erleichtern. Ich selbst habe noch Hex-codierte Inline-Anweisungen geschrieben. Das ist ziemlich aufwändig und unübersichtlich. und macht einen ständigen Blick in das "Instruction Set" des Controllers erforderlich. Dort steht dann die Mnemonik zum Hex- oder Maschinencode. Wer sich mal einen solchen Maschinencode in einer Hex-Datei ansieht, versteht nur Bahnhof. Keine Doku, keine Kommentare, nix. Ich weiß, was ich hier geschrieben habe ist nur der Bruchteil an Information, die erforderlich ist, um einen verständlichen und interessanten Unterricht zu gestalten. Da gehören Experimente und anschauliche Beispiele dazu. Auch in einer Programmiersprache. Ich könnte noch stundenlang Text hier hineinklimpern und würde vermutlich nie fertig. Daher kann ich dir empfehlen, mal auf Makerconnect.de in der angegebenen Rubrik "FAQ" die öffentlich zugänglichen Tutorials anzuschauen. Und dann denk dich mal zurück und schau dein Arbeitsblatt an. Hättest du als 13 oder 14jähriger verstanden, was dein Lehrer da von dir will. Mach deinen Schülern klar, so kompliziert Prozessoren auch sind, sie sind kein Hexenwerk, kein Baustein aus der Zukunft, sondern sie sind entstanden aus einer akribischen Umsetzung von einer wahnsinnig großen Schaltung auf einer kleinenn Fläche. Dann verstehen sie auch, was Integration bedeutet und noch alles leisten kann. Wenn der Unterricht schlüssig ist, merkt man sich das auch und findet Interesse, weil es verstanden wird. Deswegen hab ich im post vor diesem auch geschrieben, das es mutig von dir ist, so (fast) ohne Wissen diesen Unterricht zu gestalten. Wenn ich mir vorstelle, ein paar fragen und dann ist die Luft raus. Und nix ist schlimmer, als ein Schüler, der seinen Lehrer nicht mehr ernst nimmt. Falls du noch Fragen hast, du kannst auch gern Kontakt aufnehmen. gruß oldmax
Wie ich schon weiter oben schrieb: 7. Klasse, das sind 13-jährige Kinder, mein Kleiner ist in dem Alter und seine Hobbies bestehen aus Lego Ninjago bauen, Super Mario auf der Nintendo Switch daddeln und Pokemon-Hefte lesen... Gut, in seinem Alter habe ich Computerzeitschriften gelesen ("Schneider-Magazin") und Programm-Listings abgetippt, aber heutzutage scheinen mir seine Hobbies selbst für Gymnasiasten typisch zu sein. Alles was hier geschrieben wurde, ist viel zu hoch für die Kurzen.
Markus schrieb: > 7. Klasse, das sind 13-jährige Kinder Der Sohn von meiner Ex ist auch in der 7 auf dem Gymi und zockt hauptsächlich mit seinem PC. Aber bedingt durch die Fächer fängt er jetzt auch an und schaut Windows mal unter die Haube (er ist neugierig). Ich denke schon, dass man sich mit 13/14 dafür begeistern lassen kann. Aber zum Dokument vom TO: Wenn du schon den Bezug zu Assembler machen möchtest, dann nimm doch bitte den Befehlssatz von einem AVR oder so, aber nicht Intel. Das war optisch alles so überladen, dass selbst ich keine Lust mehr hatte da noch weiter zu lesen. Denn dann bekommst vllt. später viel einfacher den Bezug zum Arduino, da diese wohl zur Zeit oft in Schulen verwendet werden (9/10 Klasse).
:
Bearbeitet durch User
Beitrag #6339468 wurde von einem Moderator gelöscht.
Beitrag #6339499 wurde von einem Moderator gelöscht.
Fabian schrieb: > Ja, ich weiß diese informatischen Dinge > noch nicht. Aber ich bin ja gerade dabei, sie mir anzueignen. Hallo Fabian, was die meisten hier schockiert ist, dass du als Informatiklehrer diese Grundlagen nicht kennst (nicht persoenlich gemeint). In meiner Lehrzeit (Elektronikerausbildung - kein Studium!) haben wir innerhalb kürzester Zeit 8085 Assembler nebst 8255 PIO gelernt. Ich kann mich noch erinnern, dass unser Informatiklehrer damals mich aus dem Stegreif herausgeholt hatte und ich musste vor der Klasse ein Lauflicht mit 2 LEDs nebeneinander programmieren (eine Delay-Loop mit mvi, a 3 und shift - wenn ich mich noch erinnere, gab jedenfalls eine "1" als Bewertung). Der Lehrer war uns nur wenige Kapitel im 8085 Assembler-Buch voraus, aber er konnte es super vermitteln, da er mit den Grundlagen vertraut war. Das ist jetzt 30 Jahre her..
Fabian schrieb: > 1) Ist das Arbeitsblatt im Anhang - so reduziert und vereinfacht es ist > - inhaltlich korrekt? --> Ich werde es nach eurem "go" noch weiter > vereinfachen, da es für den Unterricht schon zu komplex ist ... Nicht 100 % . Der Satz :" Die Programme in den man programmiert heißen auch Compiler." ist falsch. Richtig muss ein heißen. *** Programme können in einen einfachen Texteditor geschrieben werden. Dieser Text wird durch den Aufruf des Compiler in für den Computer zu verarbeitenden Code umgewandelt. Moderne Entwicklungssysteme (IDE genannt) zum Erstellen einen Programmcodes, beinhalten fast immer einen Editor (zum schreiben des Codes), ein Debugger (Hilfsmittel zur Fehlersuche) und eine Compiler (zum erstellen des fertigen Programmcode). ***
Hi Ich glaub, Fabian liest nicht mehr mit. Vielleicht ist ihm seine Schwäche bewusst geworden. Gruß oldmax
Martin V. schrieb: > Ich glaub, Fabian liest nicht mehr mit. Vielleicht ist ihm seine > Schwäche bewusst geworden. Schon möglich wer so gravierende Grundlagenfehler wie in den vom mir verbesserten Text macht, sollte echt nochmal so ein Buch lesen https://www.amazon.de/Informatik-f%C3%BCr-Dummies-Das-Lehrbuch/dp/3527710248
Martin V. schrieb: > Vielleicht ist ihm seine > Schwäche bewusst geworden. Dass heute im IT-Bereich Lehrer Schüler unterrichten sollen, die im Durchschnitt deutlich mehr Ahnung haben als ihre Lehrer, ist wohl eine unvermeidliche Zeiterscheinung. Zu der Zeit, als viele Lehrer ausgebildet wurden, gab es diese IT ja noch garnicht. Und zu allem Übel verhindert der Bildungs-Föderalismus fast jeden Fortschritt hin zur Digitalisierung des Unterrichts. Man könnte hoffen, dass sich das mit neuen Generationen auswächst, aber da bin ich pessimistisch: wenn die zukünftigen Lehrer wissen, wie ein PC funktioniert, werden die Schüler wahrscheinlich Passwörter auf ihrem mobilen Quantencomputer knacken oder den Urknall simulieren. Georg
georg schrieb: > Und zu allem Übel > verhindert der Bildungs-Föderalismus fast jeden Fortschritt hin zur > Digitalisierung des Unterrichts. Quatsch. Unterricht laesst sich nicht sinnvoll digitalisieren. Ist wie beim Sex. Die heutigen Schueler aka Versuchskanninchen sind echt nicht zu beneiden.
Maxe schrieb: > Quatsch. Unterricht laesst sich nicht sinnvoll digitalisieren Wie unser Ministerpräsident in BW: richtige Schule ist nur, wenn die Kreide auf der Schiefertafel kratzt. So eine steinzeitliche Haltung ist aber nicht nur lächerlich, sondern in Zeiten von Corona unverantwortlich. Georg
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.