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:22] – [4. Vergleiche, Sprünge, Schleifen] sca | ef_informatik:assembler [2026-09-08 11:05] (aktuell) – [2. Arbeitsumgebung] sca | ||
|---|---|---|---|
| Zeile 17: | Zeile 17: | ||
| **Beispiele: | **Beispiele: | ||
| - | * Umrechnung | + | * Umrechnung |
| - | * Umrechnung | + | * Umrechnung |
| - | * Umrechnung Binärsystem -> Hexadezimalsystem | + | * Umrechnung Binärsystem -> Hexadezimalsystem |
| <box 100%> | <box 100%> | ||
| Zeile 25: | Zeile 25: | ||
| Stelle folgende Zahlen im Binärsystem dar und wandle die ins Dezimalsystem um: | Stelle folgende Zahlen im Binärsystem dar und wandle die ins Dezimalsystem um: | ||
| - | * 0xFF | + | |
| - | * 0x100 | + | |
| - | * 0x3A | + | |
| Stelle folgende Zahlen im Hexadezimalsystem dar und wandle sie ins Dezimalsystem um: | Stelle folgende Zahlen im Hexadezimalsystem dar und wandle sie ins Dezimalsystem um: | ||
| - | * 1010 1010 | + | |
| - | * 0111 1101 | + | |
| - | * 1111 1110 | + | |
| <nodisp 1> | <nodisp 1> | ||
| ++++Lösung| | ++++Lösung| | ||
| - | * 0xFF = 1111 1111 = 255 | + | |
| - | * 0x100 = 1 0000 0000 = 256 | + | |
| - | * 0x3A = 0011 1010 = 58 | + | |
| - | * 1010 1010 = 0xAA = 170 | + | |
| - | * 0111 1101 = 0x7D = 125 | + | |
| - | * 1111 1110 = 0xFE = 254 | + | |
| ++++ | ++++ | ||
| </ | </ | ||
| Zeile 76: | Zeile 76: | ||
| <box 100%> | <box 100%> | ||
| **Aufgabe 2:** | **Aufgabe 2:** | ||
| - | * Sieh dir das Beispielprogramm //example// an. | + | * Sieh dir das Beispielprogramm //example// an. Versuche, jede Zeile Code zu verstehen. |
| </ | </ | ||
| Zeile 251: | Zeile 251: | ||
| **Aufgabe 8:** | **Aufgabe 8:** | ||
| - | | + | a) Schreibe ein Programm, das einen Countdown 10,9,...1,0 ausgibt. |
| - | 1. Schreibe ein Programm, das Zahlen 1 bis 100 addiert und am Ende die Summe 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 271: | 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 377: | 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 | ||
| - | | + | |
| - | | + | |