Bestimmen der größten einer Reihe von Hexadezimalzahlen |
![]() |
![]() |
Letztmalig dran rumgefummelt: 13.07.20 11:38:44 |
![]() |
|
Aufgabe 5: Die größte einer Reihe von Zahlen ist zu bestimmen. Die Anzahl der Daten ist auf Adresse 2041H angegeben, die Zahlenfolge beginnt auf Adresse 2042H und auf dem Speicherplatz 2040H ist die größte abzulegen. Die Zahlen sollen als vorzeichenlose BCD-Zahl vorliegen!!
Lösungsalgorithmus: Unter der Annahme, die erste Zahl sei schon die größte wird solange mit dem jeweils folgenden Element verglichen. Findet sich ein Element, welches größer ist, so wird dieses zum angenommenen größten, bis sich evtl. ein weiteres findet. Ist dies für alle Elemente der Menge durchgeführt, wird abschließend das größte auf den Speicherplatz entsprechend der Aufgabenstellung geschrieben.
Anmerkungen zur Steuerung: es müssen keine Registerinhalte gerettet werden
Marke | Adresse | Hex-Code | Assembler-Code | Kommentar |
ORG 2000H | ;Adresse Programmbeginn | |||
2000H | 21 40 20 | LD HL, 2040H | ;Adresse erster Operand | |
2003H | 46 | LD B, (HL) | ;erster Operand in A | |
2004H | 96 | SUB A | ;A loeschen - 00H setzen ;-) | |
NEXT: | 2005H | 23 | INC HL | ;Adresse naechste Zahl |
2006H | BE | CP (HL) | ;neue Zahl Maximum | |
2007H | D2 0B 20 | JPNC ZAEHL | ;Sprung, wenn nicht CARRY | |
200AH | 7E | LD A, (HL) | ;neue Zahl nach A | |
FERTIG: | 200BH | 10 F8 | DJNZ NEXT | ;Wiederholung bis Anzahl |
200DH | 32 40 20 | LD (2040H), A | ;groesste auf 2040H ablegen | |
200CH | 76 | HALT | ;Programm STOPP | |
EQUATE | ||||
2041H | ORG 2041H | ;DATEN Adresse | ||
2041H | 05 | DEFB 005H | ;Anzahl der Zahlen | |
2042H | 67 | DEFB 067H | ;erste Zahl | |
2043H | 79 | DEFB 079H | ;zweite Zahl | |
2044H | 15 | DEFB 015H | ;dritte Zahl | |
2045H | E3 | DEFB 0E3H | ;vierte Zahl | |
2046H | 72 | DEFB 072H | ;fuenfte Zahl |
Beispiel für eine kleine Anweisungstabelle in vollständiger Mnemoic-Codierung
Durch den COMPARE-Befehl, welcher die FLAGs beeinflusst, können die folgenden Vergleichsoperationen durchgeführt werden, wobei ‚A’ den Inhalt des Akkumulators und ‚X’ den Vergleichsoperanden darstellt.
gleich | X | ist Z = 1 | (Z entspricht ZERO-FLAG) | |
A | ungleich | X | ist Z = 0 | (Z entspricht ZERO-FLAG) |
A | kleiner | X | ist CY = 1 | (CY entspricht CARRY-FLAG) |
A | größer, gleich | X | ist CY = 0 | (C entspricht CARRY-FLAG |
Projekt als A-Side Assembler Datei (Achtung - das Projekt ist am 9.2.2016 noch nicht vorhanden)
![]() zur Hauptseite |
© Samuel-von-Pufendorf-Gymnasium Flöha | © Frank Rost im Januar 2006 |
... dieser Text wurde nach den Regeln irgendeiner Rechtschreibreform verfasst - ich hab' irgendwann einmal beschlossen, an diesem Zirkus nicht mehr teilzunehmen ;-) „Dieses Land braucht eine Steuerreform, dieses Land braucht eine Rentenreform - wir schreiben Schiffahrt mit drei „f“!“ Diddi Hallervorden, dt. Komiker und Kabarettist |