====== Computerarchitektur & Assemblersprache ====== **TODO LP: Instruction Sets LMC für alle auf Papier ausdrucken.** In diesem Teil geht es darum zu verstehen, was die Grundfunktionsweise eines Computers ist. ++++Lernziele| * Wissen, welche **Sprache** eine CPU 'versteht'. * Python, Assemblersprache und Maschinensprache miteinander vergleichen. Was sind Gemeinsamkeiten, Vorteile, Nachteile? * Erklären können, was ein **Befehlssatz** ist und warum eine CPU einen solchen hat resp. braucht. * Mithilfe des LMC-Befehlssatzes Assemblersprache in Maschinensprache und umgekehrt umwandeln können. * Die Von **Neumann-Architektur** auswendig skizzieren ... * ... und deren Komponenten erklären können. * Den Von Neumann-Zyklus skizzieren ... * ... und erklären können, was in jedem der Schritte passiert. * Einfache **Codes in Assemblersprache** für den LMC schreiben.\\ \\ * Anspruchsvollere Codes in Assemblersprache (mit Branches) für den LMC schreiben. * Verschiedene Arten von Schleifen mit dem LMC programmieren können: * 1) zuerst Codeblock ausführen, dann Bedingung überprüfen * 2) zuerst Bedingung überprüfen, dann Codeblock ausführen * LMC Tricks (DAT und Sprung-Instruktionen) kennen und anwenden. * Wissen, was eine **Zeichentabelle** ist und wozu diese verwendet wird. * ASCII mit Unicode vergleichen können. Gemeinsamkeiten und Unterschiede? * Zeichen mithilfe von OTC ausgeben können. ++++ ===== Theorie ===== **Slides:** {{ :gf_informatik:computerarchitektur_sca:computerarchitektur.pdf |Computerarchitektur & Assemblersprache (Slides)}} **Links:** * [[https://peterhigginson.co.uk/lmc/|Little Man Computer Simulation]] * [[https://peterhigginson.co.uk/lmc/help.html|Little Man Computer Help]] ==== Befehlssatz LMC ==== ^ Code (dec) ^ Code (bin) ^ Name ^ Description ^ | 0 | 00000 | HLT | Stop (Little Man has a rest). | | 1 | 00001 | ADD | Add the contents of the memory address to the Accumulator | | 2 | 00010 | SUB | Subtract the contents of the memory address from the Accumulator | | 3 | 00011 | STA or STO | Store the value in the Accumulator in the memory address given. | | 4 | 00100 | | This code is unused and gives an error. | | 5 | 00101 | LDA | Load the Accumulator with the contents of the memory address given | | 6 | 00110 | BRA | Branch - use the address given as the address of the next instruction | | 7 | 00111 | BRZ | Branch to the address given if the Accumulator is zero | | 8 | 01000 | BRP | Branch to the address given if the Accumulator is zero or positive | | 9 | 01001 | INP or OUT | Input or Output. Take from Input if address is 1, copy to Output if address is 2. | | 9 | 01001 | OTC | Output accumulator as a character if address is 22. (Non-standard instruction) | | | | DAT | Used to indicate a location that contains data.| ++++auf Deutsch| ^ Code (dec) ^ Code (bin) ^ Name ^ Beschreibung ^ | 0 | 00000 | HLT | Stopp (Little Man macht eine Pause). | | 1 | 00001 | ADD | Addiere den Inhalt der Speicheradresse zum Akkumulator. | | 2 | 00010 | SUB | Subtrahiere den Inhalt der Speicheradresse vom Akkumulator. | | 3 | 00011 | STA or STO | Speichere den Wert im Akkumulator in der angegebenen Speicheradresse. | | 4 | 00100 | | Dieser Code ist unbenutzt und erzeugt einen Fehler. | | 5 | 00101 | LDA | Lade den Akkumulator mit dem Inhalt der angegebenen Speicheradresse. | | 6 | 00110 | BRA | Verzweigung – verwende die angegebene Adresse als Adresse der nächsten Anweisung. | | 7 | 00111 | BRZ | Verzweige zur angegebenen Adresse, wenn der Akkumulator null ist. | | 8 | 01000 | BRP | Verzweige zur angegebenen Adresse, wenn der Akkumulator null oder positiv ist. | | 9 | 01001 | INP or OUT | Eingabe oder Ausgabe. Bei Adresse 1 von Eingabe lesen, bei Adresse 2 zur Ausgabe schreiben. | | 9 | 01001 | OTC | Gib den Akkumulator als Zeichen aus, wenn die Adresse 22 ist. (Nicht-standardisierte Anweisung) | | | | DAT | Wird verwendet, um eine Speicherstelle mit Daten zu kennzeichnen. |++++ ++++ {{ :gf_informatik:computerarchitektur_sca:instruction_set_lmc.pdf |Befehlssatz als PDF zum Ausdrucken}} ==== LMC Tipps & Tricks ==== * **Geschwindigkeit ändern:** * OPTIONS / 'default ...' ausählen * oder mit mit '<<' und '>>' Tempo verändern ===== Aufgaben ===== * **Tipp:** Wenn immer du mit dem LMC arbeitest, solltest du dessen Instruction Set zur Hand haben (z.B. in ausgedruckter Form). Dieses musst du *nicht* auswendig können. [[gf_informatik:computerarchitektur_sca:aufgaben_a]] [[gf_informatik:computerarchitektur_sca:aufgaben_b]] [[gf_informatik:computerarchitektur_sca:aufgaben_c]] [[gf_informatik:computerarchitektur_sca:aufgaben_d]] [[gf_informatik:computerarchitektur_sca:aufgaben_e]] [[gf_informatik:computerarchitektur_sca:zusatzaufgaben]]