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:11] – [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 64: Zeile 49:
  
    1. Studiere im Manual die **Sprung-Instruktionen** BRA, BRZ, BRP    1. Studiere im Manual die **Sprung-Instruktionen** BRA, BRZ, BRP
-   1. Schreibe Assembler-Code, der einen **Countdown** ausführt (siehe unten).+   1. Schreibe Assembler-Code, der einen **Countdown** ausführt (siehe unten)
 +     1eine Zahl wird eingelesen 
 +     1. wiederholen, solange die Zahl >= 0 ist: 
 +       1. die Zahl wird ausgeben  
 +       1. die Zahl wird um 1 verringert
  
-**Countdown:** +**Hinweise:**
-  * eine Zahl wird eingelesen +
-  * wiederholen, solange die Zahl >= 0 ist: +
-    * die Zahl wird ausgeben  +
-    * die Zahl wird um 1 verringert +
- +
-Hinweise:+
   * Mit `ONE DAT 1` kann nach dem eigentlichen Programm eine Zahl (z.B. $1$) in den Speicher geschrieben werden, die dann für die Subtraktion verwendet werden kann.   * Mit `ONE DAT 1` kann nach dem eigentlichen Programm eine Zahl (z.B. $1$) in den Speicher geschrieben werden, die dann für die Subtraktion verwendet werden kann.
   * Welche **Sprung-Instruktion** musst du hier verwenden?   * Welche **Sprung-Instruktion** musst du hier verwenden?
Zeile 89: Zeile 72:
 </nodisp> </nodisp>
  
-==== Aufgabe 2: 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 104: 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.1656493885.txt.gz
  • Zuletzt geändert: 2022-06-29 09:11
  • von sca