home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Power-Programmierung
/
CD1.mdf
/
assemblr
/
library
/
lib4a86
/
doc
/
strings1.doc
< prev
next >
Wrap
Text File
|
1992-02-02
|
5KB
|
125 lines
─────────────────────────────────────────────────────────────────────────────
Dokumentation zur Datei: STRINGS1.INC
─────────────────────────────────────────────────────────────────────────────
STRINGS1.INC - Weitere Routinen zur Stringbearbeitung
(für den Assembler A86)
(c) Bernd Schemmer 1990 - 1992
Letzter Update: 02.02.1992
■ Routinen:
-----------
KomprimiereString - Komprimiert einen String durch Ersetzen
aller Folgen mit mehr als 2 Zeichen eines
Zeichens durch eine Repeat-Kennung
DeKomprimiereString - Dekomprimiert einen von KomprimiereString
komprimierten String
FormatiereASCIIString - Formatiert einen ASCII-String, d.h. alle
Zeichen mit einem ASCII-Code kleiner als
32 werden durch '#nnn' dargestellt, wobei
nnn der ASCII-Code des Zeichens ist.
DeformatiereASCIIString - Deformatiert einen ASCII-String
----------------------------
KomprimiereString
Funktion: Komprimieren eines Strings durch Ersetzen von
Folgen gleicher Zeichen durch einen Duplikator
und das Zeichen
Eingabe: DS:SI -> zu komprimierender String
Ausgabe: CF = 0 ->> okay
CF = 1 ->> Fehler, Rep-Marker kommt im Quellstring vor
Inhalt des Strings ist undefiniert
Bes.: Der Rep-Marker darf im String nicht vorkommen!
Der Rep-Marker kann vom Programm anders definiert werden!
RepMarker EQU 00h ; Byte, Marker zur Kennung einer
; Komprimierung
----------------------------
DeKomprimiereString
Funktion: DeKomprimieren eines Strings
Eingabe: DS:SI -> komprimierter String
ES:DI -> Puffer für den dekomprimierten String
Ausgabe: CF = 0 ->> okay, Puffer enthält den dekomprimierten String
CF = 1 ->> Fehler, dekomprimierter String würde zu lang
oder Format-Fehler
Puffer enthält nur einen Leerstring
----------------------------
FormatiereASCIIString
Funktion: Aufbereiten eines ASCIIStrings für die Anzeige
Eingabe: DS:SI -> ASCIIString
ES:DI -> Puffer für den konvertierten ASCIIString
Ausgabe: CF = 0 ->> okay
CF = 1 ->> Fehler, String würde zu lang werden
ES:DI enthält einen Leerstring
Bes.: Gegenstück zu DeFormatiereASCIIString
Der String wird folgendermaßen konvertiert:
Zeichen mit einem ASCII-Code größer oder gleich
MaxKonvert werden so übernommen, Zeichen mit einem
ASCII-Code kleiner als MaxKonvert werden in der
Form '#nnn' übernommen wobei nnn der 3-stellige
ASCII-Code des Zeichens ist
Das Zeichen '#' wird als '##' ausgegeben.
Die beiden folgenden Konstanten können durch Deklaration im
Programm überschrieben werden!
NummerZ EQU '#' ; Byte, Nummernzeichen für die ASCII-Codes in
; Dezimalschreibweise
MaxKonvert EQU 32xD ; Byte, Zeichen mit einem ASCII-Code kleiner als
; MaxKonvert werden durch den ASCII-Code in
; Dezimalschreibweise konvertiert
----------------------------
DeFormatiereASCIIString
Funktion: Konvertieren eines ASCIIStrings
Eingabe: DS:SI -> zu konvertierender ASCIIString
ES:DI -> Puffer für den konvertierten ASCIIString
Ausgabe: Puffer bei ES:DI gefüllt
Bes.: Gegenstück zu FormatiereASCIIString
Der ASCIIString muß folgendermaßen aufgebaut sein:
Zeichen mit einem ASCII-Code kleiner als MaxKonvert
müssen in der Form '#nnn' eingegeben werden, wobei
'nnn' der dezimale ASCII-Code des Zeichens ist.
Da die Konvertierungsroutine max. 3 folgende Ziffern
nach '#' als ASCII-Code interpretiert muß 'nnn',
falls nach diesem Zeichen eine Ziffer folgen soll,
dreistellig sein. Folgt hinter dem Zeichen keine
Ziffer, kann '#nnn' auch ohne führende Nullen
angegeben werden.
(z.B. das Zeichen mit dem ASCII-Code 12 muß, falls
eine Ziffer folgen soll mit '#012' angegeben
werden; ansonsten reicht '#12')
Zeichen mit einem ASCII-Code größer als MaxKonvert
können in der Form '#nnn' eingegeben werden oder
so wie sie sind.
(z.B. 'A' könnte als 'A', '#065', oder '#65' ange-
geben werden.)
Das Zeichen '#' muß entweder als '##' oder als '#35'
angegeben werden.