| Einsendeaufgaben zur Kurseinheit 2 |  | Einsendeaufgaben zur Kurseinheit 4 |

# Einsendeaufgaben zur Kurseinheit 3

- Aufgabe 3-1
- Aufgabe 3-2
- Aufgabe 3-3
- Aufgabe 3-4

## Aufgabe 3-1 (25 Punkte, Vorlagedatei: 1_VORL.ASM, Lösungsdatei: 1_EA.ASM)

Schreiben Sie ein Programm, welches in der anfänglich gelöschten Anzeige ein einzelnes aktiviertes Segment nach folgendem "Fahrplan" im Gegenuhrzeigersinn rotieren läßt:

Dabei soll jedes selektierte Segment für ca. ¼ Sekunde aktiviert werden. Die Bewegung des aktivierten Segments soll solange gestoppt werden können, wie die Taste "+" gedrückt wird.

Im einzelnen soll das Programm,

1. die Anzeige löschen,
2. das "alte" Segment löschen und ein neues Segment aktivieren,
3. ¼ Sekunde Pause einlegen,
4. die Tastatur abfragen und nach Drücken der
   - Taste "+": mit 4)
   - jeder anderen Taste: mit 2) fortfahren.

Hinweise:

- Außer der Routine DLY1MS dürfen Sie für die Lösung dieser Aufgabe keine der anderen Hilfsroutinen verwenden. (Die Vorlagendatei 1_VORL.ASM enthält entsprechend weniger Definitionen als bei den bisherigen Aufgaben.)
- Im Simulator können Sie das Drücken einer Taste ohne Loslassen dadurch simulieren, daß Sie die Umschalttaste (shift) drücken und die gewünschte Taste mit der Maus selektieren.

## Aufgabe 3-2 (25 Punkte; Vorlagedatei: 2_VORL.ASM, Lösungsdatei: 2_EA.ASM)

Schreiben Sie ein Programm, mit welchem man durch gleichzeitiges Drücken von zwei Tasten ein beliebiges Segment in der Anzeige selektieren kann, welches dann aktiviert wird.

Im einzelnen soll das Programm,

1. die Tastatur abfragen und folgendermaßen reagieren:
   - die Funktionstasten haben keine Wirkung;
   - durch die Taste i mit 0 £ i £ 7 wird die Anzeigestelle Si selektiert;
   - durch die Taste j mit 8 £ j £ F wird das Segment j nach untenstehender Zuordnung in der Anzeigestelle Si selektiert.
2. das selektierte Segment solange eingeschaltet lassen, wie die Tasten i und j gedrückt sind. (Dabei soll es nicht möglich sein, mehrere Segmente gleichzeitig zu selektieren. Falls eine ungültige Selektion vorliegt, soll die gesamte Anzeige gelöscht sein.)

Hinweise:

- Sie dürfen keine Hilfsroutinen verwenden. (Daher fehlen die Definitionen in der Vorlagedatei. Zum Löschen der Anzeige können sie die entsprechende Unterroutine aus der Aufgabe 3-1 nutzen.)
- Im Simulator können Sie das Drücken einer Taste ohne Loslassen dadurch simulieren, daß Sie die Umschalttatste (shift) betätigen und die gewünschte Taste mit der Maus selektieren.

## Aufgabe 3-3 (25 Punkte, Lösungsdatei: 3_EA.ASM)

Schreiben Sie ein Programm, welches einen einzugebenden Speicherabschnitt wortweise aufsteigend sortiert. Zu Testzwecken soll dieser Speicherbereich mit Zufallszahlen gefüllt werden können.

Im einzelnen soll das Programm,

1. die Anzeige löschen,
2. in den Anzeigestellen S7..S6 die Kennung "AA" (für Anfangsadresse) ausgeben und in den Stellen S5..S2 diese Anfangsadresse des zu sortierenden Speicherbereichs einlesen,
3. in den Stellen S7..S6 die Kennung "EA" (für Endadresse) ausgeben und in den Stellen S5..S2 diese Endadresse des zu sortierenden Speicherbereichs einlesen,
4. die Tastatur abfragen und falls die Eingabe der Endadresse mit der
   - Taste "R" abgeschlossen wird, den Prozeß Random-Fill starten, d.h.
     - in den Anzeigestellen S7..S6 die Kennung "CD" (für Code) ausgeben und in den Stellen S5..S2 den Startcode für RANDOM einlesen,
     - den Speicherbereich von Anfangs- bis Endadresse mit Zufallszahlen füllen
   - ansonsten aber mit 5) fortfahren,
5. den angegebenen Speicherbereich wortweise aufsteigend sortieren.

Hinweise:

- Die einzugebenden Adressen müssen nicht überprüft werden, d.h. der Benutzer ist dafür verantwortlich, keine Adressen zu nehmen, die im ROM liegen oder das Programm oder wichtige Systemwerte umfassen. Sie können auch davon ausgehen, daß Anfangs- und Endadresse gerade sind und mindestens zwei Worte dazwischen liegen. Falls Sie es benötigen, können Sie auch davon ausgehen, daß höchstens 256 Worte zu sortieren sind. Beim Testen müssen Sie natürlich darauf achten, gültige Werte einzugeben.
- Zum Sortieren eignet sich z.B. der Bubblesort. Die Idee hierbei ist, daß eine Tabelle genau dann sortiert ist, wenn alle benachbarten Elemente in der richtigen Reihenfolge vorliegen. Bei jedem Sortierdurchlauf werden je zwei benachbarte Elemente miteinander verglichen und getauscht, falls sie nicht in der richtigen Reihenfolge stehen. Die Tabelle ist sortiert, sobald ein Durchlauf ohne Tausch durchgeführt wurde.

## Aufgabe 3-4: (25 Punkte, Lösungsdatei: 4_EA.ASM)

Schreiben Sie ein Programm, welches bis zu 256 zweistellige Hexdezimal-Zahlen (Bytes) abfragt und dann umgekehrt zur Eingabereihenfolge im Sekundentakt ausgibt.

Im einzelnen soll das Programm,

1. die Anzeige löschen,
2. zur Eingabe des i-ten Bytes den Index i hexadezimal in den Anzeigestellen S7..S6 anzeigen, das Byte einlesen und in den Stellen S1..S0 darstellen,
3. nach Beendigung jeder Eingabe durch die
   - Taste "+": das Byte übernehmen und in einen Userstack ab $1000 spei- chern; danach den Index auswerten und falls i=256, mit 4), sonst mit 2) fortfahren,
   - Taste "S": das Byte übernehmen und mit 4) fortfahren,
4. die Bytes i..0 umgekehrt zur Eingabereihenfolge wieder ausgeben, dabei den Index i in den Stellen S7..S6 und das Byte in den Stellen S1..S0 darstellen. Nach einer Sekunde soll das nächste Zeichen angezeigt werden.

| Einsendeaufgaben zur Kurseinheit 2 |  | Einsendeaufgaben zur Kurseinheit 4 |