Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen der Seite angezeigt.
Beide Seiten, vorherige Überarbeitung Vorherige Überarbeitung Nächste Überarbeitung | Vorherige Überarbeitung | ||
ef_informatik:assembler [2024-09-24 09:21] – [4. Vergleiche, Sprünge, Schleifen] sca | ef_informatik:assembler [2024-09-24 14:04] (aktuell) – [6. Funktionen] sps | ||
---|---|---|---|
Zeile 250: | Zeile 250: | ||
<box 100%> | <box 100%> | ||
**Aufgabe 8:** | **Aufgabe 8:** | ||
- | | + | |
- | | + | a) Schreibe ein Programm, das einen Countdown 10,9,...1,0 ausgibt. |
+ | |||
+ | < | ||
+ | ++++Lösung| | ||
+ | < | ||
+ | MOV R1,#10 | ||
+ | MOV R2,#1 | ||
+ | LOOP: OUT R1,4 | ||
+ | SUB R1,R2 | ||
+ | CMP R1,#0 | ||
+ | BGE LOOP | ||
+ | HLT | ||
+ | </ | ||
+ | ++++ | ||
+ | </ | ||
+ | |||
+ | b) Schreibe ein Programm, das Zahlen 1 bis 100 addiert und am Ende die Summe ausgibt. | ||
<nodisp 1> | <nodisp 1> | ||
Zeile 270: | Zeile 286: | ||
<box 100%> | <box 100%> | ||
- | **Aufgabe 9:** | + | **Aufgabe 9:** Schreibe ein Programm, welches |
- | * Öffne in // | + | Wenn man dieses |
- | * Dem Kommentar kannst du entnehmen, was das Programm | + | |
- | * Probiere es mit drei Zahlenpaaren aus. Welche Ausgabe erwartest du? | + | <nodisp 1> |
- | * Erste Zahl > zweite Zahl | + | ++++Lösung| |
- | * Erste Zahl < zweite Zahl | + | < |
- | * Erste Zahl = zweite Zahl | + | INP R0,2 |
- | * Wie wird die Verzweigung (if...else...) implementiert? | + | INP R1,2 |
+ | CMP R0,R1 | ||
+ | BLE LOWER | ||
+ | OUT R0 | ||
+ | BRA DONE | ||
+ | LOWER OUT R1 | ||
+ | DONE HLT | ||
+ | </ | ||
+ | ++++ | ||
+ | </ | ||
</ | </ | ||
Zeile 376: | Zeile 401: | ||
Iterativ: | Iterativ: | ||
INP R0,2 | INP R0,2 | ||
- | MOV R1,#1 //Zähler | + | PSH R0 |
- | MOV R2,#1 //Produkt | + | JMS FCLT |
+ | POP R0 | ||
+ | OUT R0,4 | ||
+ | HLT | ||
+ | FCLT: POP R0 | ||
+ | | ||
+ | MOV R2,#1 //Produkt | ||
LOOP: MUL R2,R1 | LOOP: MUL R2,R1 | ||
ADD R1,#1 | ADD R1,#1 | ||
CMP R1,R0 | CMP R1,R0 | ||
BLE LOOP | BLE LOOP | ||
- | | + | |
- | | + | |