F A C H H O C H S C H U L E F Ü R D I E W I R T S C H A F T F H D W , H A N N O V E R ERGOMETER A UFG ABEN IM A SSEMBLER -P ROJEKT 2002/01 Studiengang: Informatik Studienquartal: III. Theoriequartal Dozent: Michael Löwe TREIBER Aufgabe 1 (3): Schreiben Sie eine Treiber-Routine für die Ausgabe an das Buttons-Device im HardwareSimulator. Der Treiber sorgt für die Beschriftung der einzelnen Knöpfe. Die Parameter sollen über Register übergeben werden. Die Routine soll drei Parameter haben: (1) Nummer des Devices, das angesprochen werden soll, (2) Nummer des zu beschriftenden Knopfes und (3) Startadresse des Beschriftungstextes. Der erste Parameter sorgt dafür, dass wir denselben Code für mehrere Devices vom selben Typ (also zur Zeit mehrere Devices mit vier Knöpfen) verwenden können. Das Ende des Beschriftungstextes soll durch ein Null-Byte (0x00) markiert werden. Ausgabetermin: 21. 1. 2002; Abgabe: 28. 1. 2002 Aufgabe 2 (3): Schreiben Sie einen Treiber für den internen „Timer“. Es soll möglich sein, insgesamt 8 „Soft-Timer“ (Nummern 0 – 7) über dem einen „Hardware-Timer“ zu realisieren. Für jeden dieser „Timer“ soll ein eigenes Intervall als Vielfaches ( 5000) des „Hardware-Intervalls“ einstellbar sein. Ist das Zeitintervall abgelaufen, soll eine Routine angesprungen werden, deren Anfangsadresse dynamisch hinterlegt werden kann. Außerdem soll jeder dieser Timer einzeln an und abgeschaltet werden können, und es soll wählbar sein, ob der „Timer“ nur einmal abläuft und sich dann ausschaltet oder wieder auf das eingestellte Intervall gesetzt wird und erneut abläuft. Realisieren Sie die Parameterübergabe zunächst über Register. Dokumentieren Sie Ihre Entwurfsentscheidungen. Testen Sie ausführlich! Ausgabetermin: 28. 1. 2002; Abgabe: 7. 2. 2002 BA S I S F U N K T I O N E N Aufgabe 3 (3): Schreiben Sie Programme für die Multiplikation, Division und Restberechnung in den vorzeichenbehafteten ganzen Zahlen! Übergeben Sie die Parameter in Registern. Behandeln Sie Ausnahmen, die durch Überlauf entstehen noch nicht; fangen Sie aber die Division und Restberechnung bei Divisor = 0 durch eine geeignete Fehlerbehandlung ab. Ausgabetermin: 4. 2. 2002; Abgabe: 21. 2. 2002 Aufgabe 4 (3): Schreiben Sie den Kern einer Stapelspeichermaschine entsprechend der Vorgaben aus der Vorlesung, siehe Anhang. Sie soll zumindest die Operationen SADD (Stapeladdition), SSUB (Stapelsubtraktion), SMUL (Stapelmultiplikation), SDIV (Stapeldivision), SMOD (Restberechnung auf dem Stapel), INVOKE (Aufruf von Prozeduren), RETURN (Rückkehr aus Prozeduren ohne Wertrückgabe), VRETURN (Rückkehr aus Prozeduren mit Wertrückgabe), CLOAD (Konstante auf den Stapel legen), GLOAD (globale Variable auf den Stapel legen) LLOAD (lokale Variable auf den Stapel legen), GSTORE (oberstes Element des Stapels entfernen und in globaler Variable speichern) LSTORE(oberstes Element des Stapels entfernen und in lokaler Variable speichern) enthalten. Testen Sie anhand einer rekursiven Version der Fakultätsfunktion! Ausgabetermin: 11. 2. 2002; Abgabe: 28. 2. 2002 Aufgabe 5 (3): Schreiben Sie als Erweiterung der Stapelspeichermaschine die Operationen für den lesenden und schreibenden Zugriff auf ein „Array“ (ALOAD und ASTORE), und zwar entsprechend der Vor- M ETHODEN DER S OFTWARETECHNIK K LAUS UR gaben aus der Vorlesung. Testen Sie Ihre Implementierung dadurch, dass Sie den Treiber aus Aufgabe 1 soweit wie möglich auf die abstrakteren Operationen aus Aufgabe 4 und dieser Aufgabe umstellen! Ausgabetermin: 21. 2. 2002; Abgabe: 7. 3. 2002 A N W E N D U N G : E R S T E AU S B AU S T U F E Aufgabe 6 (5): Fassen Sie alle Ihre Vorarbeiten zu einer ersten kleinen Ausbaustufe der Anwendung „Ergometer“ zusammen. Diese Anwendung soll nicht mehr als die Erfassung und Darstellung von Pulsfrequenzen (angegeben durch Pulsschläge pro Minute) sein. Binden Sie dazu einen Impulsgenerator, ein kleines „Display“ (Vorschlag 16 Spalten und 6 Zeilen) und ein Knopf-„Device“ ein. Auf dem Display soll in der ersten Zeile stets der Momentanpuls dargestellt werden, etwa so: PULSE: 70. Zusätzlich soll und ein Durchschnittspuls dargestellt werden, etwa so: AVERAGE PULSE:70. Das Knopf-„Device“ soll durch einen „RESET“-Knopf die Messung des Durchschnitts erneut starten. Es soll am „Display“ jederzeit erkennbar sein, ob der Puls-Sensor „angeschlossen“ ist oder nicht, das heißt, ob überhaupt Impulse von ihm empfangen werden. Ausgabetermin: 28. 2. 2002; Abgabe: 14. 3. 2002