Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen der Seite angezeigt.

Link zu der Vergleichsansicht

Beide Seiten, vorherige Überarbeitung Vorherige Überarbeitung
Nächste Überarbeitung
Vorherige Überarbeitung
gf_informatik:assembler_sca [2022-06-29 09:13] – [Aufgabe 2: Schleifen] scagf_informatik:assembler_sca [2023-08-01 15:35] (aktuell) – [Instruction Set] sca
Zeile 13: Zeile 13:
  
  
-==== Instruction Set ==== 
- 
-^ Code ^ Name ^ Description ^ 
-| 0 | HLT | Stop (Little Man has a rest). | 
-| 1 | ADD | Add the contents of the memory address to the Accumulator | 
-| 2 | SUB | Subtract the contents of the memory address from the Accumulator | 
-| 3 | STA or STO | Store the value in the Accumulator in the memory address given. | 
-| 4 |      | This code is unused and gives an error. | 
-| 5 | LDA | Load the Accumulator with the contents of the memory address given | 
-| 6 | BRA | Branch - use the address given as the address of the next instruction | 
-| 7 | BRZ | Branch to the address given if the Accumulator is zero | 
-| 8 | BRP | Branch to the address given if the Accumulator is zero or positive | 
-| 9 | INP or OUT | Input or Output. Take from Input if address is 1, copy to Output if address is 2. | 
-| 9 | OTC | Output accumulator as a character if address is 22. (Non-standard instruction) | 
-| 9 | DAT | Used to indicate a location that contains data.| 
  
 ===== Aufgaben ===== ===== Aufgaben =====
Zeile 89: Zeile 74:
 ==== Aufgabe 3: Verzweigungen ==== ==== Aufgabe 3: Verzweigungen ====
  
-Nun wollen wir ein einfaches **if-else**-Statement in Assembler programmieren. Bei einem solchen wird eine *Bedingung* überprüft. Je nachdem, ob diese erfüllt ist, *springt* der Code dann an eine andere Stelle. Dazu verwenden wir die **Branch**-Elemente in AssemblerMit diesen kann der aktuelle Wert im //Accumulator überprüft// werden und man kann an eine bestimmte Stelle //springen//.+Nun wollen wir einfache **Verzweigungen** (entspricht **if-else**-Statement in Python) in Assembler programmieren. Bei einem solchen wird eine *Bedingung* überprüft. Je nachdem, ob diese erfüllt ist, *springt* der Code dann an eine andere Stelle. Dazu verwendet man, ganz ähnlich wie bei Schleifen, die **Sprung-Instruktionen**. Der Unterschied hier ist, dass man nicht zurück sondern nach weiter unten im Code springt.
  
 <code asm> <code asm>
Zeile 102: Zeile 87:
    1. Schreibe ein Assembler-Programm, in welchem dem man zuerst zwei Zahlen eingeben kann. Von diesen wird das **Maximum** bestimmt und ausgegeben.     1. Schreibe ein Assembler-Programm, in welchem dem man zuerst zwei Zahlen eingeben kann. Von diesen wird das **Maximum** bestimmt und ausgegeben. 
  
-==== Aufgaben 3a-f ====+ 
 +<nodisp 2> 
 +++++Lösung:
 +<code asm> 
 +</code> 
 +++++ 
 +</nodisp> 
 + 
 + 
 +==== Aufgaben 4a-f ====
 Löse eine der folgenden Aufgaben; verwende Labels und Branching Instructions. Löse eine der folgenden Aufgaben; verwende Labels und Branching Instructions.
  
  • gf_informatik/assembler_sca.1656494016.txt.gz
  • Zuletzt geändert: 2022-06-29 09:13
  • von sca