====== 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.| {{ :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]]