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 <