Übungsblatt 3: Schleifen

Thema dieser Übung ist die Programmierung einfacher Assemblerprogramme, deren Lösung auf einer Schleifenstruktur beruht. Zu diesem Zweck werden wir erneut die Assemblerentwicklungsumgebung Jasmin benutzen.

Aufgabe 1: Summe aufeinanderfolgender Zahlen

  1. Implementieren Sie in Jasmin, analog zur Lösung in der Vorlesung, die Summe der natürlichen Zahlen von 1..10 mit CMP-Befehl und probieren Sie den Algorithmus aus. Wenn nach Ausführung des Verfahrens 55 im BX-Register steht, haben Sie den Algorithmus korrekt übernommen.

  2. Schreiben Sie eine Variante des Algorithmus, bei der das Produkt der ersten 5 natürlichen Zahlen berechnet wird. Dieser Algorithmus muss 120 liefern.

  3. Setzen Sie den Algorithmus aus der Vorlesung zur Summenbildung mittels LOOP-Befehl um. Hier muss am Ende des Verfahrens 55 im AX-Register stehen.

  4. Schreiben Sie ein Assemblerprogramm, welches mit Hilfe eines einzelnen loop-Befehls für n=1..10 die geraden Zahlen im Register AX und die ungeraden Zahlen im Register BX aufsummiert. Der Wert des Registers CX wird zu Beginn initialisiert und danach nur noch durch den loop-Befehl geändert.


Aufgabe 2: Summe unterschiedlicher Zahlen

  1. Implementieren Sie das Beispiel zum Aufsummieren von Zahlen aus dem Speicher aus der Vorlesung.

  2. Schreiben Sie eine Variante des Programms zum Aufsummieren gerader und ungerader Zahlen, bei dem die Zahlenwerte nun aus dem Hauptspeicher gelesen werden.

    • Benutzen Sie wieder den LOOP-Befehl
    • Nehmen Sie die Zahlen: 1, 12, 17, 25, 32, 41, 50
    • Legen Sie die beiden Summen im Hauptspeicher in Adressen Ihrer Wahl ab
    • Summe der geraden Zahlen: 94
    • Summe der ungeraden Zahlen: 84