home *** CD-ROM | disk | FTP | other *** search
- ─────────────────────────────────────────────────────────────────────────────
- Dokumentation zur Datei: MENGEN.INC
-
- ─────────────────────────────────────────────────────────────────────────────
-
- MENGEN.INC - Routinen zur Arbeit mit Mengen
- (für den Assembler A86)
-
- (c) Bernd Schemmer 1990 - 1992
- Letzter Update: 12.02.1992
-
- ■ Beschreibung:
- ---------------
- Eine Menge ist gegeben durch einen Array von 16 Worten.
- Jedes Mengen-Element wird durch ein Bit dargestellt, d.h. eine Menge
- kann maximal 256 Elemente á einem Byte enthalten (16 Worte = 256 Bit).
- Ein gesetztes Bit bedeutet, daß das Element vorhanden ist; ein nicht
- gesetztes Bit signalisiert das Nichtvorhandensein eines Elementes.
- Die Zuordnung zwischen Bit-Nummer und Mengen-Element muß implizit
- (z.B. bei Buchstaben ist die zugehörige Bit-Nummer jeweils der ASCII-
- code) oder explizit im Programm (z.B. bei Mengen wie 'Apfel, Birne,
- Pflaume, etc' = Obst) durchgeführt werden.
- Jedes Element kann in einer Menge entweder vorhanden sein oder nicht.
- Die Anzahl eines Elementes in einer Menge ist also nicht speicher-
- bzw. ermittelbar.
-
- Alle Routinen benutzen das Register AX als Arbeitsregister.
-
-
- ■ Variablen:
- ------------
- Menge_Der_Grossbuchstaben - Menge
- Menge_Der_KleinBuchstaben - Menge
- Menge_Der_Buchstaben - Menge
-
-
- ■ Routinen:
- -----------
- Bilde_Menge - Erstellt eine Menge
- Subb_ELement - Löscht ein Element aus einer Menge
- Add_Element - Fügt einer Menge ein neues Element zu
- Element_Vorhanden? - Überprüft, ob ein Element vorhanden ist
- Card_Menge - Ermittelt die Anzahl der Elemente in einer
- Menge
- XOR_Mengen - VerXORt zwei Mengen, d.h. bildet die Menge
- aller Elemente die entweder in der ersten
- Menge oder in der zweiten Menge aber nicht
- in beiden Mengen vorkommen
- Schneide_Mengen - Bildet die Schnittmenge zweier Mengen
- Kopiere_Menge - Kopiert eine Menge in eine andere Menge
- Loesche_Menge - Löscht eine Menge
- Vereinige_Mengen - Bildet die Vereinigungsmenge zweier Mengen
- Negiere_Menge - Bildet die Komplement-Menge zu einer Menge
- d.h. die Menge aller Elemente die nicht in
- der Menge enthalten sind
-
-
- ----------------------------
- DefiniereMenge
-
- Funktion: Macro zum definieren einer Menge mit dem namen #1 als
- leere Menge
-
- Aufruf: DefiniereMenge NameDerMenge
-
-
- ----------------------------
- Bilde_Menge
-
- Funktion: Aufbau einer Menge
-
- Eingabe: DS:BX -> Menge
- ES:DI -> Byte-Array mit den Mengen-Elementen
- CL = Anzahl der Mengen-Elemente
-
- Ausgabe: Die Menge bei DS:BX wurde eingerichtet.
-
- Bes.: Falls CL gleich 0 ist, wird eine leere Menge erstellt.
-
- ----------------------------
- Element_Vorhanden?
-
- Funktion: Feststellen, ob das Element mit der Nummer aus AL in
- einer Menge vorhanden ist
-
- Eingabe: AL = Nummer des Elements
- DS:BX -> Menge
-
- Ausgabe: ZF = 0 ->> Element enthalten
- ZF = 1 ->> Element nicht enthalten
-
- ----------------------------
- Add_Element
-
- Funktion: Hinzufügen des Elementes mit der Nummer aus AL zu
- eine Menge
-
- Eingabe: AL = Nummer des Elementes
- DS:BX -> Menge
-
- -----------------------------
- Subb_Element
-
- Funktion: Entfernen des Elementes mit der Nummer aus AL aus
- einer Menge
-
- Eingabe: AL = Nummer des Elementes
- DS:BX -> Menge
-
- ----------------------------
- Loesche_Menge
-
- Funktion: Löschen einer Menge
-
- Eingabe: DS:BX -> zu löschende Menge
-
- ----------------------------
- Kopiere_Menge
-
- Funktion: Kopiert eine Menge in eine andere Menge
-
- Eingabe: DS:BX -> Quellmenge
- ES:DI -> Zielmenge
-
- Ausgabe: Die Menge bei ES:DI entspricht der Menge
- bei DS:SI
-
- ----------------------------
- Card_Menge
-
- Funktion: Ermittle die Anzahl der Elemente einer Menge
-
- Eingabe: DS:BX -> Menge
-
- Ausgabe: AL = Anzahl der Elemente
-
- ----------------------------
- Negiere_Menge
-
- Funktion: Bilde die Menge aller nicht in der Quellmenge
- vorkommenden Elemente
-
- Eingabe: DS:BX -> Quellmenge
- ES:DI -> Zielmenge
-
- Ausgabe: Die Menge bei ES:DI ist die Menge mit allen
- Elementen die nicht in der Quellmenge enthalten sind
-
- ----------------------------
- Vereinige_Mengen
-
- Funktion: Bilde die Vereinigungs-Menge zweier Mengen (OR)
-
- Eingabe: DS:BX -> Menge1
- ES:DI -> Menge2
-
- Ausgabe: Die Menge bei ES:DI ist die Vereinigungs-Menge
- der beiden Mengen
-
- ----------------------------
- Schneide_Mengen
-
- Funktion: Bilde die Schnittmenge zweier Mengen (AND)
-
- Eingabe: DS:BX -> Menge1
- ES:DI -> Menge2
-
- Ausgabe: Die Menge bei ES:DI ist die Schnittmenge der
- beiden Mengen
-
- ----------------------------
- XOR_Mengen
-
- Funktion: Ermittle die Menge aller Elemente die
- nur in Menge1 oder nur in Menge2 vor-
- kommen
-
- Eingabe: DS:BX -> Menge1
- ES:DI -> Menge2
-
- Ausgabe: Die Menge bei ES:DI ist die exklusiv veroderte
- Menge der beiden Mengen
-
-