Forum: PC-Programmierung Frage zu Assembler für meinen Informatikunterricht


Announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
von Fabian (Gast)


Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
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

von Maxe (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Assembler ist keine Programmiersprache im engeren Sinne. Der 
Maschinencode (Hex-Code) erst recht nicht.

von René F. (therfd)


Bewertung
0 lesenswert
nicht lesenswert
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

von zitter_ned_aso (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Realschule, 7-te Klasse?

what the...

von dave4 (Gast)


Bewertung
-3 lesenswert
nicht lesenswert
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

von zitter_ned_aso (Gast)


Bewertung
-1 lesenswert
nicht lesenswert
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.
von karadur (Gast)


Bewertung
2 lesenswert
nicht lesenswert
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.

von dave4 (Gast)


Bewertung
2 lesenswert
nicht lesenswert
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

von karadur (Gast)


Bewertung
0 lesenswert
nicht lesenswert
so in der Art.

von Walter S. (avatar)


Bewertung
0 lesenswert
nicht lesenswert
>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

von rbx (Gast)


Bewertung
0 lesenswert
nicht lesenswert
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

von Manfred (Gast)


Bewertung
1 lesenswert
nicht lesenswert
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.
von Egon D. (egon_d)


Bewertung
1 lesenswert
nicht lesenswert
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.
von Daniel (Gast)


Bewertung
0 lesenswert
nicht lesenswert
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.

von georg (Gast)


Bewertung
0 lesenswert
nicht lesenswert
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

von Roland F. (rhf)


Bewertung
1 lesenswert
nicht lesenswert
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

von Josef (Gast)


Bewertung
1 lesenswert
nicht lesenswert
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 ;-)

von Egon D. (egon_d)


Bewertung
0 lesenswert
nicht lesenswert
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
  cmp r12, r7 
  jrz target 
logischer als
  cmp r12, r7 
  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.

von Lothar (Gast)


Bewertung
0 lesenswert
nicht lesenswert
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/

von Hp M. (nachtmix)


Bewertung
0 lesenswert
nicht lesenswert
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
von Egon D. (egon_d)


Bewertung
0 lesenswert
nicht lesenswert
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.

von rbx (Gast)


Bewertung
0 lesenswert
nicht lesenswert
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) ;)

von Bastler (Gast)


Bewertung
0 lesenswert
nicht lesenswert
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.

von Thomas W. (dbstw)


Bewertung
0 lesenswert
nicht lesenswert
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

: Bearbeitet durch User
von Thomas Z. (usbman)


Bewertung
0 lesenswert
nicht lesenswert
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.

von Hugo H. (hugohurtig1)


Bewertung
0 lesenswert
nicht lesenswert

von rbx (Gast)


Bewertung
0 lesenswert
nicht lesenswert
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.

von leo (Gast)


Bewertung
0 lesenswert
nicht lesenswert
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

von Thomas Z. (usbman)


Bewertung
0 lesenswert
nicht lesenswert
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.

von rbx (Gast)


Bewertung
0 lesenswert
nicht lesenswert
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? ;)

von leo (Gast)


Bewertung
0 lesenswert
nicht lesenswert
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

von Roland F. (rhf)


Bewertung
0 lesenswert
nicht lesenswert
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

von cppbert (Gast)


Bewertung
0 lesenswert
nicht lesenswert
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

von rbx (Gast)


Bewertung
0 lesenswert
nicht lesenswert
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.

von Percy N. (vox_bovi)


Bewertung
0 lesenswert
nicht lesenswert
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"

von leo (Gast)


Bewertung
0 lesenswert
nicht lesenswert
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

von rbx (Gast)


Bewertung
0 lesenswert
nicht lesenswert
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.

von Thomas O. (kosmos)


Bewertung
0 lesenswert
nicht lesenswert
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.

von cppbert (Gast)


Bewertung
0 lesenswert
nicht lesenswert
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

von Alexander S. (alesi)


Bewertung
0 lesenswert
nicht lesenswert
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

von letallec (Gast)


Bewertung
0 lesenswert
nicht lesenswert
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.

von letallec (Gast)


Bewertung
0 lesenswert
nicht lesenswert
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.

von Route_66 H. (route_66)


Bewertung
-1 lesenswert
nicht lesenswert
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!

von c-hater (Gast)


Bewertung
1 lesenswert
nicht lesenswert
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...

von Fabian (Gast)


Angehängte Dateien:

Bewertung
1 lesenswert
nicht lesenswert
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

von Fabian (Gast)


Bewertung
1 lesenswert
nicht lesenswert
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.

von leo (Gast)


Bewertung
0 lesenswert
nicht lesenswert
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

von leo (Gast)


Bewertung
0 lesenswert
nicht lesenswert
leo schrieb:
> 1-512 Bytes

Naja, sollte ca. 512 Bits sein. Oder auch viel mehr, wenn man REP MOVx 
dazunimmt.

leo

von Fabian (Gast)


Bewertung
0 lesenswert
nicht lesenswert
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

von Thomas Z. (usbman)


Bewertung
0 lesenswert
nicht lesenswert
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.

von leo (Gast)


Bewertung
-2 lesenswert
nicht lesenswert
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

von René F. (therfd)


Bewertung
0 lesenswert
nicht lesenswert
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

: Bearbeitet durch User
von Walter S. (avatar)


Bewertung
0 lesenswert
nicht lesenswert
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

von Thomas O. (kosmos)


Bewertung
-2 lesenswert
nicht lesenswert
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
  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)
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.

von Egon D. (egon_d)


Bewertung
0 lesenswert
nicht lesenswert
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.

von Egon D. (egon_d)


Bewertung
0 lesenswert
nicht lesenswert
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?

: Bearbeitet durch User
von michael_ (Gast)


Bewertung
0 lesenswert
nicht lesenswert
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.

von Konstantin Qualle (Gast)


Bewertung
0 lesenswert
nicht lesenswert
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.

von Konstantin Qualle (Gast)


Bewertung
0 lesenswert
nicht lesenswert
P.S.:
- Müssen Lehrer der Sekundarstufe I informationstheoretische Probleme 
erforschen?

von Konstantin Qualle (Gast)


Bewertung
0 lesenswert
nicht lesenswert
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.

von Daniel (Gast)


Bewertung
0 lesenswert
nicht lesenswert
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.

von Hugo H. (hugohurtig1)


Bewertung
-1 lesenswert
nicht lesenswert
Daniel schrieb:
> Richtig, 1A34h.

Falsch, 1A44h

von rbx (Gast)


Bewertung
0 lesenswert
nicht lesenswert
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..
Youtube-Video "Anselm Grün - Acht Wege zum gelingenden Leben"

> - 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 ;)

von rbx (Gast)


Bewertung
0 lesenswert
nicht lesenswert
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?

von Percy N. (vox_bovi)


Bewertung
0 lesenswert
nicht lesenswert
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..
> Youtube-Video "Anselm Grün - Acht Wege zum gelingenden Leben"
>
>> - 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?

von Hugo H. (hugohurtig1)


Bewertung
0 lesenswert
nicht lesenswert
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.

von A. S. (achs)


Bewertung
0 lesenswert
nicht lesenswert
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.

von Fabian (Gast)


Bewertung
0 lesenswert
nicht lesenswert
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)?

von Fabian (Gast)


Bewertung
0 lesenswert
nicht lesenswert
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.

von Fabian (Gast)


Angehängte Dateien:

Bewertung
1 lesenswert
nicht lesenswert
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.

von Egon D. (egon_d)


Bewertung
0 lesenswert
nicht lesenswert
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.

von Fabian (Gast)


Bewertung
0 lesenswert
nicht lesenswert
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 ...

von Jürgen W. (Firma: MED-EL GmbH) (wissenwasserj)


Bewertung
-1 lesenswert
nicht lesenswert
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?

von Fabian (Gast)


Bewertung
0 lesenswert
nicht lesenswert
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

von Hugo H. (hugohurtig1)


Bewertung
0 lesenswert
nicht lesenswert
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.

von Thomas W. (dbstw)


Bewertung
0 lesenswert
nicht lesenswert
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

: Bearbeitet durch User
von Egon D. (egon_d)


Bewertung
0 lesenswert
nicht lesenswert
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.

von Egon D. (egon_d)


Bewertung
1 lesenswert
nicht lesenswert
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.

von Thomas Z. (usbman)


Bewertung
0 lesenswert
nicht lesenswert
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.

von Maxe (Gast)


Bewertung
0 lesenswert
nicht lesenswert
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.

von Wolfgang H. (drahtverhau)


Bewertung
0 lesenswert
nicht lesenswert
Die beste Seite zum anfangen ist immer noch www.sprut.de

von cppbert (Gast)


Bewertung
0 lesenswert
nicht lesenswert
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.
von Fabian (Gast)


Angehängte Dateien:

Bewertung
1 lesenswert
nicht lesenswert
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

von cppbert (Gast)


Bewertung
0 lesenswert
nicht lesenswert
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

von Markus (Gast)


Bewertung
0 lesenswert
nicht lesenswert
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...

von Gerald K. (geku)


Bewertung
0 lesenswert
nicht lesenswert
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
von Wolfgang H. (drahtverhau)


Bewertung
0 lesenswert
nicht lesenswert

von Konstantin Qualle (Gast)


Bewertung
-1 lesenswert
nicht lesenswert
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)

von Daniel (Gast)


Bewertung
0 lesenswert
nicht lesenswert
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.

von georg (Gast)


Bewertung
0 lesenswert
nicht lesenswert
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

von Thomas F. (thomas-hn) Benutzerseite


Bewertung
1 lesenswert
nicht lesenswert
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.

von georg (Gast)


Bewertung
0 lesenswert
nicht lesenswert
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

von rbx (Gast)


Bewertung
0 lesenswert
nicht lesenswert
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.

von Hugo H. (hugohurtig1)


Bewertung
-3 lesenswert
nicht lesenswert
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
von René F. (therfd)


Bewertung
0 lesenswert
nicht lesenswert
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.

von Hugo H. (hugohurtig1)


Bewertung
-2 lesenswert
nicht lesenswert
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.

von Fabian (Gast)


Bewertung
2 lesenswert
nicht lesenswert
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!

von cppbert (Gast)


Bewertung
0 lesenswert
nicht lesenswert
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

von cppbert (Gast)


Bewertung
0 lesenswert
nicht lesenswert
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

von cppbert (Gast)


Bewertung
0 lesenswert
nicht lesenswert
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)

von Percy N. (vox_bovi)


Bewertung
0 lesenswert
nicht lesenswert
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!

von Hugo H. (hugohurtig1)


Bewertung
0 lesenswert
nicht lesenswert
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.

von Daniel (Gast)


Bewertung
0 lesenswert
nicht lesenswert
> 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.

von Gerald K. (geku)


Bewertung
0 lesenswert
nicht lesenswert
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.

von Daniel (Gast)


Bewertung
0 lesenswert
nicht lesenswert
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.

von Bastler (Gast)


Bewertung
1 lesenswert
nicht lesenswert
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.

von Gerald K. (geku)


Bewertung
0 lesenswert
nicht lesenswert
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
von rbx (Gast)


Bewertung
0 lesenswert
nicht lesenswert
[rbx@fe1 ~]$ ./csumF
[rbx@fe1 ~]$ echo $?
5

[rbx@fe1 ~]$ gdb csumF
GNU gdb (GDB) Fedora 9.1-5.fc32
Copyright (C) 2020 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
..
Find the GDB manual and other documentation resources online at:
    <http://www.gnu.org/software/gdb/documentation/>.
For help, type "help".
Type "apropos word" to search for commands related to "word"...

Reading symbols from csumF...
(gdb) list
1  int main (){
2  
3    int a = 2;
4    int b = 3;
5    int c = a + b;
6  
7    return c;
8  
9  
10  }


(gdb) disas main
Dump of assembler code for function main:
   0x0000000000401106 <+0>:  push   %rbp
   0x0000000000401107 <+1>:  mov    %rsp,%rbp
   0x000000000040110a <+4>:  movl   $0x2,-0x4(%rbp)
   0x0000000000401111 <+11>:  movl   $0x3,-0x8(%rbp)
   0x0000000000401118 <+18>:  mov    -0x4(%rbp),%edx
   0x000000000040111b <+21>:  mov    -0x8(%rbp),%eax
   0x000000000040111e <+24>:  add    %edx,%eax
   0x0000000000401120 <+26>:  mov    %eax,-0xc(%rbp)
   0x0000000000401123 <+29>:  mov    -0xc(%rbp),%eax
   0x0000000000401126 <+32>:  pop    %rbp
   0x0000000000401127 <+33>:  retq   
End of assembler dump.

(gdb) x /50xb
Argument required (starting display address).
(gdb) x /50xb 0x0000000000401106
0x401106 <main>:  0x55  0x48  0x89  0xe5  0xc7  0x45  0xfc  0x02
0x40110e <main+8>:  0x00  0x00  0x00  0xc7  0x45  0xf8  0x03  0x00
0x401116 <main+16>:  0x00  0x00  0x8b  0x55  0xfc  0x8b  0x45  0xf8
0x40111e <main+24>:  0x01  0xd0  0x89  0x45  0xf4  0x8b  0x45  0xf4
0x401126 <main+32>:  0x5d  0xc3  0x0f  0x1f  0x84  0x00  0x00  0x00
0x40112e:  0x00  0x00  0xf3  0x0f  0x1e  0xfa  0x41  0x57
0x401136 <__libc_csu_init+6>:  0x4c  0x8d

(gdb) quit
[rbx@fe1 ~]$ 

-----------------------------------------------------------------------------------------------------------------------------------------------------
nix Linux ! -> MS-Dos Debug:

-u 100
1ABB:0100 89E5          MOV     BP,SP 
1ABB:0102 C646FC02      MOV     BYTE PTR [BP-04],02  
1ABB:0106 C646F803      MOV     BYTE PTR [BP-08],03  
1ABB:010A 8B56FC        MOV     DX,[BP-04]  
1ABB:010D 8B46F8        MOV     AX,[BP-08]
1ABB:0110 01D0          ADD     AX,DX
1ABB:0112 8946F4        MOV     [BP-0C],AX  
1ABB:0115 5D            POP     BP      
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.

von TotoMitHarry (Gast)


Bewertung
0 lesenswert
nicht lesenswert
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.

von Heinz B. (Firma: Privat) (hbrill)


Bewertung
0 lesenswert
nicht lesenswert
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.
von Christoph M. (mchris)


Bewertung
0 lesenswert
nicht lesenswert
Zur Frage Assembler und Informatikunterricht sollte der Link auf den 
Phywe-Computer nicht fehlen:
Beitrag "Re: Reparaturanfrage CPU-Modellrechner Phywe"

von Martin V. (oldmax)


Bewertung
0 lesenswert
nicht lesenswert
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

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.