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
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
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
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.
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.
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.
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:> 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.
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 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
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ärzahlenOMG ... 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
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 RealschuleFabian 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
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
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.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 Programmierspracheunabhä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.
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
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
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/Turingmaschinehttps://de.m.wikipedia.org/wiki/Von-Neumann-Architektur
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.
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.
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-zahlenAnwendungen :
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.
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.
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).
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).
***
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