Teil 3: Anzeige der Werte:
Programmcode (0210CH-02150H)
Register:
HL - Adressregister
IX - Startadresse für DAK1
DE - Adressregister für Werte
E - Register; Beinhaltet die Position des Wert
Sprungmarken:
M5 - Marke für Codierung/Speicherung des Anzeigeinhalts
M6 - Begin des Anzeigealgorithmus
Bubble - Begin des Sortieralgorithmus
Stopp - Ende des Programms
Anz1 - Marke für Anzeigen der Werte
Plus - Marke für nächsten Wert
Minus - Marke für vorherigen Wert
Weiter - Marke für Verlassen des Algorithmus
Marke | Code | Kommentar |
M6: | LD DE,02200H | ;Lade DE mit 2200H |
M5: | LD A,(DE) | ;Lade den Wert aus 2200H in A |
LD HL,022F2H | ;Speichere 022F2H in HL | |
CALL 008D9H | ;Rufe TWOSEG | |
LD A,E | ;Lade A mit E | |
LD HL,022F5H | ;Speichere 022F5H in HL | |
CALL 008D9H | ;Rufe TWOSEG | |
LD IX,022F2H | ;Lade IX mit 22F2H | |
ANZ1: | CALL 085AH | ;Rufe DAK1 |
CP 010H | ;ob "+" gedrückt wurde | |
JR Z,PLUS | ;Springe wenn "+" zu PLUS | |
CP 011H | ;ob "-" gedrückt wurde | |
JR Z,MINUS | ;Springe wenn "-" zu MINUS | |
CP 012H | ;ob "EXE" gedrückt wurde | |
JR Z,WEITER | ;Springe wenn "EXE" zu WEITER | |
JR ANZ1 | ;Springe zu ANZ1 | |
PLUS: | LD A,(021FFH) | ;Lade A mit Anzahl der Zahlen |
CP E | ;Vergleiche A mit E | |
JR Z,M5 | ;Wenn gleich springe zurück | |
INC DE | ;Inkrementiere DE | |
JR M5 | ;Springe auf M5 | |
MINUS: | LD A,E | ;Lade A mit E |
CP 000H | ;Vergleiche Position mit 00H | |
JR Z,M5 | ;Wenn Zero dann springe zu M5 | |
DEC DE | ;Dekrementiere DE | |
JR M5 | ;Springe zu M5 | |
WEITER: | LD A,(021FEH) | ;Lade A mit Status aus 021FEH |
CP 000H | ;Vergleiche Status mit 00H | |
JP Z,BUBBLE | ;Wenn dann springe zu BUBBLE | |
CP 0FFH | ;Vergleiche Status mit FFH | |
JR Z,STOP | ;Wenn dann springe zu STOP | |
JR ANZ1 | ;Springe zu ANZ1 |
Die Hauptschleife
Dieser Abschnitt dient zur Umcodierung der Werte und deren Position
mittels der "TWOSEG" - Subroutine. Danach folgt die Nebenschleife.
Die Nebenschleife
Diese Schleife ist in die Hauptschleife integriert. Grundsächlich
dient sie zur Anzeige des aktuellem Wert und dessen Position, sowie die
Kontrolle ob eine, der 3 möglichen, Tasten gedrückt würde um im Fall die
entsprechend Reaktionen zuaktivieren. Bei der Taste "+" wird auf die
Adresserhöhung gesprungen, während dessen bei der Taste "-" auf die
Adresssenkung gesprungen wird. Wenn die Taste "EXE" gedrückt wird kommt man
zum Ende des Algorithmus.
Die
Adresserhöhung
Hier wird nur kontrolliert ob eine Adresserhöhung möglich ist und im
entsprechend Fall wird sie um eins erhöht. Ansonsten springt er direkt wieder
zur Hauptschleife.
Die
Vergleichanzahlcodierung
Hier wird nur kontrolliert ob eine Adresssenkung möglich ist und im
entsprechend Fall wird sie um eins gesenkt. Ansonsten springt er direkt wieder
zur Hauptschleife.
Der Ende des
Anzeigealgorithmus
Hier wird jetzt entschieden ob man zum Sortieralgorithmus oder zum Ende des
Programms springt. Abhängig ist dies, ob es das erste Mal aufrufen dieses
Algorithmus ist und somit die Werte noch unsortiert sind, dann folgt der
Sortieralgorithmus, oder ob es das zweite Mal ist und die Werte schon sortiert
sind, dann folgt das Ende des Programms.
Strukturgram:
Um das Verstehen zu unterstützen gibt es dies hier in der Form eines Strukturgrames:
Download:
>
StruktEd32 - Download <