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 11:03] – [4. Vergleiche, Sprünge, Schleifen] sca | ef_informatik:assembler [2024-09-24 14:04] (aktuell) – [6. Funktionen] sps | ||
|---|---|---|---|
| Zeile 286: | Zeile 286: | ||
| <box 100%> | <box 100%> | ||
| - | **Aufgabe 9:** Schreibe ein Programm, welches das Maximum zweier Zahlen bestimmt: Der Benutzer soll hintereinander aufgefordert werden, zwei Zahlen einzugeben. Von diesen wird die grössere bestimmt und ausgegeben. | + | **Aufgabe 9:** Schreibe ein Programm, welches das Maximum zweier Zahlen bestimmt: Der Benutzer soll hintereinander aufgefordert werden, zwei Zahlen einzugeben. Von diesen wird die grössere bestimmt und ausgegeben.\\ \\ |
| Wenn man dieses Programm z.B. in Python schreibt, implementiert man dazu eine Verzweigung (if-el(se)if). In Assembler wird dies wie eine Schleife (z.B. in letzter Aufgabe) mit Sprüngen implementiert. | Wenn man dieses Programm z.B. in Python schreibt, implementiert man dazu eine Verzweigung (if-el(se)if). In Assembler wird dies wie eine Schleife (z.B. in letzter Aufgabe) mit Sprüngen implementiert. | ||
| Zeile 293: | Zeile 292: | ||
| ++++Lösung| | ++++Lösung| | ||
| < | < | ||
| + | INP R0,2 | ||
| + | INP R1,2 | ||
| + | CMP R0,R1 | ||
| + | BLE LOWER | ||
| + | OUT R0 | ||
| + | BRA DONE | ||
| + | LOWER OUT R1 | ||
| + | DONE HLT | ||
| </ | </ | ||
| ++++ | ++++ | ||
| Zeile 394: | 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 | ||
| - | | + | |
| - | | + | |