Z80 CPU (in der DDR U880) FLAG-Funktion history menue Letztmalig dran rumgefummelt: 12.07.21 16:54:48

Z80-CPU

Übersicht des FLAG-Registers - Korrektur siehe unten

... Überprüfung der FLAG-Ergebnisse, da der LC-80 immer eine Byte-Gruppe im Ergebnis anzeigt

das Programm mit augenblicklichen Arbeitsstand als ausführbare EXE-Datei

das Gesamtprojekt im ZIP-Format

... logische Bedingungen, in deren Entscheidung vom Geradeauslauf von Programmen abgewichen werden kann:
  • ein Wert von "Null" ist erreicht worden
  • Null ist unterschritten worden
  • ein Wert ist um genau "Eins" größer geworden, als der darstellbare Inhalt eines Register-Komplexes
  • die letzte vorangegangenen Operation war eine "logisch/mathematische" oder eben auch dies nicht
  • die Hälfte eines Bytes ist durch die letzte "wirksame Operation" über- bzw. unterschritten worden

Im Ergebnis der Befehlsausführung werden - bis auf einige Befehle, die die Flags nicht beeinflussen - je nach Operation alle oder ein Teil der im F-Register (F'-Register) des Mikroprozessors U880 als Statusindikatoren zusammengefassten Flagbits aktualisiert.
Bei der Programmabarbeitung können vier dieser Bits (C, Z, P/V und C) durch die Verwendung bedingungsabhängiger (TRUE/FALSE) Sprung-, Call- und Returnbefehle abgetastet werden. Dadurch wird ein vom Ergebnis der Operation abhängiger Programmablauf organisiert. Zwei Flags (H und N) dienen zur Realisierung der BCD-Arithmetik und zwei Bitpositionen (D3 und D5) im F (und auch im F')-Register sind nicht besetzt.

Bibel der Flagsteuerung beim Z80 nach FUNKAMATEUR Heft 7/85 S. 358

Vielen Elektronikamateuren hat das Mikroprozessorsystem U 880 D ein neues, interessantes Tätigkeitsgebiet eröffnet. Viele Einzelheiten dazu sind schon veröffentlicht worden, aber manchmal nicht mit der ausreichenden Korrektheit. So musste beim Überprüfen der Setz-Bedingungen am U 880 D festgestellt werden, dass gegenüber der einschlägigen Literatur [1], [2], [3], [4], [5] alle 8 Bit des Registers F als Bedingungsregister nach festen Regeln gesetzt werden. Der in [1], [2],14], (5] publizierte Aufbau des F-Registers

S Z O H O P/V N C

ist aber falsch, da das Bit 3 und das Bit 5  nicht konstant C sind, sondern in den meisten Fällen nach den Bedingungen 3) und 4) in Tabelle 2 gesetzt werden. Es ergibt sich somit folgender Aufbau für das F-Register

S Z U H T P/V N C
  Breite FLAG
Befehle 1-Byte-Register C N P/V T H U Z S
SBC, SUB, CP 1) H 7) 4) 6) 3) 2) 5)
ADD, ADC L 9)
DEC   H 7)
INC L 9)
AND L 10) H
OR, XOR L
Register A Schiebebefehle 11) · · ·
CB-Schiebebefehle   H 2) 5)
NEG   12) L 6) 2) 12)
CPL   · H · H · ·
INF   L H 13) L L H 13)
SCF   H · · · · ·
CCF   14) ·
RLD, RRD   · 10) 4) L 3) 2) 5)
BIT   16) H 15) L
LDIR, LDDR, LDDI, LDD   18) 17) L 17) · ·
CPIR, CPDR, CPI, CPD   20) H · · · 19)
ADD, ADC 2-Byte-Register 1) L · 4) 6) 3) ·
SBC, INC, DEC · · · · ·
SET, RES, LD, DJNZ, EX, EXX

Tabelle 1: Flag-Bedingungen pro Befehl

In der Literatur [1], [3], [5] werden die Setzbedingungen für Bedingungsregister nur global beschrieben. Das heißt, es wird nur angegeben, dass das Register sich ändert oder einen undefinierten Zustand einnimmt. Für die Programmierung von Assembler-Programmen, oder von Programmen im direkten Befehlskode ist die Kenntnis der Setzbedingungen der Flags, pro Befehl unbedingt erforderlich, da die Inhalte einiger Flags erhalten bleiben. In der Tabelle 1 wird für die wesentlichsten Befehle dargelegt unter welchen Bedingungen ein Flag „1" gesetzt wird. Dabei bedeuten in Tabelle 1

In der Tabelle 2 sind die Bedingungen genannt, mit denen die Flags in der Tabelle 1 gesetzt werden. Mittels der bedingten Operationen können die Register S/Z/P/C direkt ausgewertet werden: `

Abarbeitungsbedingung wenn Flaginhalt ... ist
Z                                  Z = 1
NZ Z = 0
C C = 1
NC C = 0 
PE P = 1 
PO P = 0 
M S = 1

Alle anderen Bedingungsregister können nur durch weitere Hilfsoperationen ausgewertet werden. Zum Beispiel Auswerten des Bedingungsregisters U:

F5 PUSH AF  ;Inhalt von F steht nun auf dem Stack
E1 POP HL ;Inhalt von vormals F steht nun in L
CB 6D BIT 5, L ;Test, ob Bit gesetzt
30 e JR NZ, bru ;Behandlungsroutine, wenn U = 1
28 e JR Z, nobru ;Behandlungsroutine, wenn U = 0

Die Tabellen 1 und 2 sind somit unentbehrliche Hilfsmittel bei des direkten Programmierung von U-880-D-Programmen. Tabelle 2: Setzbedingungen für die Tabelle 1

Literatur

[1] Herrmann, W.: Technik der Mikrorechner, radio-fernsehen-elektronik 28 (1979) H.1, S.28 und 28 (1979) H:2, S.93
[2] Burkhardt, S., Hübner, U., Troll, A.: „Poly-Computer 880" (Arbeitsbuch), VEB Kombinat Polytechnik und Präzisionsgeräte, Karl-Marx-Stadt 1983, S.74
[3] wie. [2], (Systemhandbuch), 5.18...26
[41 Lampe, B., Jorke, G. Wengei, N.: Algorithmen der Mikrorechentechnik; VEB Verlag Technik, Berlin 1983, S.12
[5] Schwarz, W., Meyer, G., Eckhard, D.: Mikrorechner - Wirkungsweise, Programmierung, Applikation, VEB

... Details zu den FLAG-Bits Befehlsbasis - benötigt man, um die FLAG-Wirkung zu kennen

... das ZERO-FLAG

die beliebte alphabetisch sortierte Schnell-Liste

die beliebte numerisch sortierte Schnell-Liste

Alphabetisch sortierte Dokumentation

FLAG-Wirkung auf OP-Code-Gruppen

FLAG Teile I

FLAG Teile 2

... das Carry-FLAG

 
 
 


zur Hauptseite
© Samuel-von-Pufendorf-Gymnasium Flöha © Frank Rost im Oktober 1998

... 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