home *** CD-ROM | disk | FTP | other *** search
- TURBO ASSEMBLER 1.0: ZUSÄTZE UND KORREKTUREN IM HANDBUCH
- --------------------------------------------------------
-
- Allgemeine Vorbemerkung: Die Groß- und Kleinschreibung der
- vordefinierten Symbole (diejenigen, die mit dem Zeichen (@)
- anfangen) sind in den Handbüchern nicht korrekt, wenn zwischen
- Groß- und Kleinschreibung (wie bei der Option /ML)
- unterschieden wird. Sie müssen durchgängig klein geschrieben
- werden.
-
- Die korrekten Bezeichnungen lauten:
-
- @code
- @data
- @fardata
- @fardata?
- @curseg
-
- Turbo Assembler Benutzerhandbuch
- --------------------------------
-
- Damit Sie die Beispiele einfacher nachvollziehen können, wurden
- viele der Beispielprogramme auf die Originaldisketten kopiert.
- Sehen Sie sich dazu die Liste der Dateinamen am Ende der
- README-Datei durch. Dort finden Sie die Dateinamen mit den
- Seitenzahlen, in denen das Beispiel abgedruckt ist.
-
- Seite
-
- 47 - Das Beispiel am unteren Rand der Seite muß heißen
-
- 10000h
- + 201h
- ------
- 10201h
-
- 52 - Die Tabelle im Handbuch enthält keine 80287- und 80387-
- Befehle. In der folgenden Tabelle finden Sie die
- fehlenden Befehle:
-
- Befehl Prozessor Befehl Processor
- ------------------------------------------------------
- FSETPM 287-387 FCOS 387
- FPREM1 387 FPREMI 387
- FSIN 387 FSINCOS 387
- FUCOM 387 FUCOMP 387
- FUCOMPP 387
-
-
- 66 - Der erste Satz des letzten Absatzes muß folgendermaßen
- lauten: "Wenn Sie mehrere Dateien in einem
- Kommandozeilenaufruf assemblieren wollen, können Sie die
- Dateinamen mit dem Pluszeichen (+) voneinander trennen:"
-
- Streichen Sie das erste Beispiele, das hinter diesem
- Absatz steht.
-
- 81 - In der Tabelle zur Kommandozeilenoption /W fehlen einige
- Einträge. Fügen Sie die folgenden Optionen ein:
-
- RES - Warnung bei der Verwendung reservierter Wörter
- TPI - Warnung, daß Turbo Pascal nicht zulässig ist
- PQK - Warnung, wenn bei [const] eine Konstante
- angenommen wird
- ALN - Segmentausrichtung
-
- 82 - Der erste Satz muß folgendermaßen lauten:
-
- "Beim Start des Turbo Assemblers sind standardmäßig alle
- Warnungen außer den Warnungen bezüglich ineffizienten
- Codes (ICG) und dem Schreiben in Code-Segmenten im
- Protected-Mode (PRO) aktiviert.
-
- 85 - Im vierten Absatz muß es heißen...
-
- "Der Turbo Assembler sucht zuerst die Datei TASM.CFG in
- Ihrem aktuellen Verzeichnis. Wenn Sie mit MS-DOS 3.X oder
- einer späteren Version arbeiten, wird zusätzlich das
- Verzeichnis durchsucht, aus dem der Turbo Assembler
- geladen wurde. Wenn der Turbo Assembler diese Datei..."
-
- 106 - Die Befehle des folgenden Beispiels funktionieren nur im
- Ideal-Modus:
-
- mov al, [100+8]
- und
- mov al, [108]
-
- Die entsprechenden Befehle im MASM-Modus lauten:
-
- mov al, ds:[100+8]
- und
- mov al, ds:[108]
-
- 148 - Im ersten Absatz des Abschnitts "Bezeichnungen für
- Speicherstellen" muß der letzte Satz wie folgt lauten:
- "Die LABEL-Anweisung stellt eine weitere sehr praktische
- Methode dar, um Speicherstellen zu bezeichnen, ohne daß
- man Speicherplatz reservieren muß."
-
- 157 - Der erste Satz sollte folgendermaßen lauten: "Es ist auch
- bei der Umwandlung verschiedener Datentypen und bei der
- Ausführung von Sprungbefehlen von Bedeutung."
-
- 197 - Löschen Sie aus dem ersten Satz des zweiten Absatzes den
- folgenden Text: "und weitaus weniger flexibel als die
- Registerübergabe."
-
- 233 - Fügen Sie die folgenden Datentypen in die Tabelle mit den
- EXTRN-Datentypen am Anfang der Seite ein:
-
- DATAPTR Ein NEAR oder FAR-Zeiger auf Daten,
- entsprechend dem verwendeten
- Speichermodell.
-
- UNKNOWN Ein unbekannter Datentyp.
-
- <Strukturname> Der Name eines vom Benutzer
- definierten STRUC-Datentyps.
-
- 241 - Löschen Sie den vierten Absatz auf der Seite: "Sie haben
- vielleicht bemerkt .... Daten nicht abgeschnitten werden".
-
- 249 - Löschen Sie den dritten Absatz auf dieser Seite: "Sie
- sollten .... Symboltabelle aufgeführt."
-
- 252 - In der letzten Zeile des zweiten Absatzes muß
- "aktiviert" durch "ausgeschaltet" ersetzt werden.
-
- 254 - Im letzten Satz des zweiten vollständigen Absatzes muß es
- heißen: "Mit der Voreinstellung werden Felder, die die
- maximale Länge überschreiten, nicht abgeschnitten
- (%NOTRUNC)."
-
- 265 - Fügen Sie die folgenden bedingten Fehleranweisungen am
- Anfang der Seite ein:
-
- .ERRE, .ERRNZ, .ERRDIFI, .ERRIDNI
-
- 310,315,318,330 - Ersetzen Sie die Schreibweise der Option -b
- jeweils mit -B.
-
- 332 - Die Kommentarzeile in der Mitte der Seite sollte wie folgt
- lauten:
-
- ; ?debug L 15
-
- 348 - In der letzten Zeile des ersten Absatzes in der Mitte muß
- es heißen: "...DATEI2.ASM liegt und nicht in einem FARDATA-
-
- Segment."
-
- 358 - Der letzte Satz des zweiten Absatzes muß folgendermaßen
- lauten: "Ein weiterer Vorteil ergibt sich daraus, daß die
- mit ARG definierten Labels auf den Gültigkeitsbereich der
- Prozedur, in der sie mit der LOCAL-Anweisung deklariert
- wurden (siehe den Befehl LOCALS im Referenzhandbuch),
- beschränkt sind, so daß man sich keine Sorgen ...."
-
- 487 - Im zweiten Satz des ersten Paragraphen muß folgendes
- stehen: "Im folgenden Beispiel wird nur das erste Byte des
- Strukturelements A mit 1 und nur das erste Byte des
- Strukturelements B mit 2 initialisiert, während das zweite
- beider Strukturelemente mit 20h (einem Leerzeichen)
- initialisiert wird."
-
- 497 - Die zweite Anweisung "jnz SchleifenAnfang" im Beispiel
- muß "jnz KurzeSchleife" heißen.
-
- 517 - Der Befehl "mov ax, [InitWert]" solte hinter dem Befehl
- "mov es, ax" stehen.
-
- 589 - Der letzte Satz im letzten Absatz muß heißen: "Der
- Operator liefert eine Zahl, in der der Datentyp der
- verschiedenen Symbole codiert ist, mit Ausnahme bei nicht
- definierten Bezeichnern:"
-
- 599 - In den letzten deri Sätze des ersten Absatzes müssen
- Ideal und MASM vertauscht werden. Es sollte also heißen,
- "Im Ideal-Modus werden .... Im MASM-Modus, ....".
-
-
- Turbo Assembler Referenzhandbuch
- --------------------------------
-
- Seite
-
- 5 - Der Unterpunkt am unteren Ende der Seite sollte lauten:
- "Der erste Buchstabe jedes Worts, das in einem Symbolnamen
- vorkommt, muß ein Großbuchstabe sein, außer bei
- Segmentsymbolen, die klein geschrieben werden müssen. Der
- Rest des Wortes wird klein geschrieben.
-
- @FileName
- @WordSize
- @curseg
- @fardata
-
- Ändern Sie das vordefinierte Symbol @Code in @code, so daß
- das Beispiel folgendermaßen lautet:
-
- mov ax,@code
- mov dx,ax
- ASSUME ds:@code
-
- 8 - Ändern Sie das vordefinierte Symbol @Data in @data, so daß
- das Beispiel wie folgt aussieht:
-
- mov ax,@data
- mov ds,ax
- ASSUME ds:@data
-
- Im ersten Satz des Anmerkungsabschnitts von @Datasize muß
- ergänzt werden, daß das Speichermodell TINY ebenfalls den
- Wert 0 liefert.
-
- 9 Das Beispiel für ??Date muß lauten:
- ASMDATE db ??Date
-
- Ersetzen Sie das vordefinierte Symbol @FarData in @fardata
- und das Beispiel wie folgt:
-
- mov ax,@fardata
- mov ds,ax
- ASSUME ds:@fardata
-
- 10 Ändern Sie das vordefinierte Symbol @FarData? in @fardata?
- sowie das entsprechende Beispiel:
-
- mov ax,@fardata?
- mov ds,ax
- ASSUME ds:@fardata?
-
- 15 - In Tabelle 2.2 muß der Operator SYMTYPE am Ende eingefügt
- werden.
-
- 16 - Fügen Sie den folgenden Satz im Abschnitt Anmerkungen für
- Operator * ein: "Der Operator * kann auch zwischen einem
- Register und einer Konstante verwendet werden, wenn die
- Adressierungsarten des 80386-Prozessor unterstützt werden.
-
- 24 - Das Beispiel für DWORD lautet:
-
- call dword fptr
-
- 28- Das Beispiel für HIGH lautet:
-
- ; MASM- und Ideal-Modus
- Magic equ 1234h
- mov cl, HIGH Magic
- Ideal
- ; Nur im Ideal-Modus
- Big DD 12345678h
- mov ax, [word HIGH Big] ; lädt 1234h in AX
-
- 31 - Das Beispiel für LOW lautet:
-
- ; MASM- und Ideal-Modus
- Magic equ 1234h
- mov bl, LOW Magic
- Ideal
- ; Ideal mode only
- Big DD 12345678h
- mov ax, [word LOW Big] ; lädt 5678h in AX
-
- 32 - Das Beispiel für MASK lautet:
-
- stat record a:3,b:4,c:5
- neustat stat <0,2,1>
-
- mov al, neustat
- and al, MASK b
- mov al, MASK stat
-
- 34 - Das Beispiel für NEAR lautet:
-
- Ideal
- proc farproz far
- ; Funktionsbefehle
- endp farproz
-
- ; noch im gleichen Segment
- push cs
- call NEAR farproz
-
- 36 - Das Beispiel für PROC lautet:
-
- .model large
- .code
- Ideal
- call proc Test1
-
- proc Test1
-
- 37 - Fügen Sie DATAPTR in die Liste der beim PTR-Operator
- zugelassenen Datentypen. Im MASM kann der Ausdruck rechts
- von PTR auch eine Konstante ergeben.
-
- 41 - Im letzten Absatz der Anmerkungen zum SIZE-Operator muß es
- heißen: "Im Ideal-Modus, liefert SIZE die Anzahl der Bytes
- innerhalb einer DUP-Anweisung. Un die Anzahl der Bytes der
- DUP-Anweisung zu ermitteln, sollten Sie den Befehl LENGTH
- verwenden."
-
- 43 - Löschen Sie MASM aus dem Abschnitt Modus in SYMTYPE.
-
- 44 - Fügen Sie DATAPTR in der Liste der Datentypen beim THIS-
- Operator ein.
-
- 45 - Das Beispiel für den Operator .TYPE lautet:
-
- if (.type ABC) and 3
- assume ds:seg abc
- mov ax, seg abc
- mov ds, ax
- endif
-
- 52 - Beim %-Operator fügen Sie diese Zeilen am Ende des ersten
- Absatzes ein: "Der ausgewertete Ausdruck wird als
- numerischer String in der AKTUELLEN ZAHLENBASIS
- dargestellt. Hinter % kann auch ein Textmakro angegeben
- werden, wobei das Makro-Argument vollständig durch das
- Textmakro erstzt wird."
-
- 53 - Fügen Sie einen Abschnitt für die %-Anweisung ein,
- die als einzeiliges Makro alle aktuellen Textmakros
- als Argumente verwendet.
-
- 62 - Fügen Sie den folgenden Satz am Ende der Anmerkungen zur
- Anweisung ALIGN an: "ALIGN erzeugt eine Warnung, wenn die
- Segmentausrichtung nicht streng genug erfolgt."
-
- 63 - Fügen Sie DATAPTR in der Liste der zulässigen Datentypen
- im dritten Absatz ein.
-
- 65 - Das Beispiel für die Anweisung ARG sollte wie folgt
- lauten:
-
- fp PROC FAR
- ARG SRC:WORD,DEST:WORD = ARGLEN
- push bp
- mov bp,sp
- mov di,DEST
- mov si,SRC
- ;<Prozedur-Befehle>
- pop bp
- ret ARGLEN
- fp ENDP
-
- 70 - Die Syntaxbeschreibung für COMMENT muß wie folgt lauten:
-
- COMMENT Trennzeichen [Text]
- [Text]
- Trennzeichen
-
- 72 - Entfernen Sie den zweiten Absatz der Anmerkungen zur
- Anweisung .CREF; .CREF wird nämlich in der Voreinstellung
- nicht verwendet.
-
- Der dritte Absatz muß wie folgt lauten: "Der Turbo Assembler
- schreibt Cross-Referenz-Informationen sowohl in die
- Listing-Datei als auch in eine getrennte .XRF-Datei."
-
- 75- Im ersten Satz des Abschnitts Anmerkungen für die Anweisung
- %CTLS sollte stehen, daß die Anweisungen zur Listing-
- Steuerung normalerweise NICHT erscheinen.
-
- 79 - Fügen Sie DATAPTR in Liste der zulässigen Datentypen im
- ersten Absatz dieser Seite ein.
-
- Ändern Sie die Zahl im ersten Unterpunkt von
- 4.294,967.295 auf 2.147.483.647 .
-
- 81 - Fügen Sie DATAPTR in die Liste der zulässigen Datentypen
- in den zweiten Absatz des Abschnitts Anmerkungen unter DF
- ein.
-
- 82 - Die Anweisung DISPLAY ist sowohl im MASM-Modus als auch im
- Ideal-Modus verfügbar.
-
- Sie können den Substitutionsoperator innerhalb eines
- Strings verwenden, der in einer DISPLAY-Anweisung
- übergeben wird. Zum Beispiel:
-
- MAKE_DATEN macro WERT
- display "Initialisiere ein Byte mit: &WERT&"
- db WERT
- endm
-
- 84 - In DQ muß der Wertebereich im ersten Unterpunkt von
- -2^64+1 bis 2^64-1.
-
- 86 - Fügen Sie DATAPTR in die Liste der gültigen Datentypen im
- ersten Absatz auf der Seite ein. Beim Wertebereich im
- ersten Unterpunkt muß es 32767 und nicht 65536 heißen.
-
- 93 - Die EQU-Anweisung ist sowohl im MASM- als auch im Ideal-
- Modus verfügbar.
-
- 105 - Fügen Sie folgenden Satz hinter den Anmerkungen zur EVEN-
- Anweisung ein: "Bei der EVEN-Anweisung wird eine Warnung
- erzeugt, wenn die Ausrichtung nicht streng genug erfolgt".
-
- 106 - Hinter den Anmerkungen zu EVENDATA fügen Sie ein: "Die
- Ausrichtung auf geradzahlige Adressen erfolgt durch
- Erhöhung des Positionszeigers, ohne daß Daten ausgegeben
- werden. Das ist besonders für Segmente mit nicht
- initialiserten Daten wichtig. Sie erhalten ebenfalls eine
- Warnung, wenn die Segmentausrichtung nicht streng genug
- ist."
-
- 107 - Fügen Sie DATAPTR in die Liste der Datentypen unter den
- Anmerkungen von EXTRN ein. Jedes Argument von EXTRN
- kann auch mit der selben Syntax wie in ARG oder LOCAL
- angegeben werden.
-
- 111 - Fügen Sie DATAPTR in die Liste der Datentypen unter den
- Anmerkungen von GLOBAL ein. Jedes Argument von EXTRN
- kann auch mit der selben Syntax wie in EXTRN, ARG oder
- LOCAL angegeben werden.
-
- 126 - Fügen Sie DATAPTR in die Liste der Datentypen unter den
- Anmerkungen von LABEL ein.
-
- 129 - Löschen Sie den ersten Teil des Satzes, "Wenn Sie die
- speziellen Eigenschaften des MASM51 aktiviert haben...",
- lassen Sie aber, "Sie können alternativ auch folgende
- Syntax für jede lokale Definition verwenden.", stehen.
-
- 130 - Fügen Sie DATAPTR in die Liste der zulässigen Datentypen
- im zweiten Unterpunkt ein.
-
- 134 - Löschen Sie den dritten Unterpunkt bei den Anmerkungen zur
- Anweisung MASM51. Im letzten Unterpunkt muß es heißen:
- "PROC-Anweisungen für erweiterte Sprachmodelle werden alle
- PUBLIC mit einem führenden Unterstrich deklariert, wenn
- als Sprache C verwendet wird."
-
- 135 - Fügen Sie am Ende des letzten Satzes folgende
- Einschränkung ein: "..., wenn Sie 16-Bit-Segmente
- verwenden wollen."
-
- 149 - Sie können den Substitutionsoperator &Text& auch innerhalb
- eines Strings der %OUT-Anweisung verwenden. Zum Beispiel:
-
- MAKE_DATEN macro WERT
- %out Initialisiere ein Byte mit: &WERT&
- db WERT
- endm
-
- 157 - Im Beispiel von PROC muß es heißen:
-
- ZeileLesen proc near
- ; Befehle in der Prozedur
- ZeileLesen endp
-
- call ZeileLesen
-
- 159 - Bei den Anmerkungen zu %PUSHLCTL, muß %WCL durch %INCL
- und %NOWCL durch %NOINCL ersetzt werden.
-
- 170 - Im Beispiel für die STRUC-Anweisung muß es heißen
-
- Ideal
- model small
- dataseg
- struc B
- B1 DD 0
- B2 DB ?
- ends
-
- struc A
- A1 DW ?
- A2 DD ?
- binst B <>
- struc
- D DB "XYZ"
- E DQ 1.0
- ends
- ends
-
- ainst A <>
- cinst A ?
- dinst A
-
- codeseg
- mov al, [ainst.binst.b2]
- mov al, [ainst.d]
- mov ax, [word cinst.binst.b1]
- end
-
- 175 - Entfernen Sie den letzten Absatz unter den Anmerkungen zu
- %TRUNC. Beachten Sie bitte, daß %NOTRUNC die
- standardmäßige Voreinstellung beim Aufruf des Turbo
- Assemblers ist.
-
- 179 - Aus der Tabelle der 32-Bit-Register des 80386 müssen Sie
- EDS und EES entfernen.
-
- 180 - Fügen Sie fogende Warnungen ein:
-
- RES - Warnung bei der Verwendung reservierter Wörter
- TPI - Warnung, daß Turbo Pascal nicht zulässig ist
- PQK - Warnung, wenn bei [const] eine Konstante
- angenommen wird
- ALN - Segmentausrichtung
-
- 188 - Im Abschnitt mit MAusdr9 muß folgendes eingefügt werden:
-
- o MAusdr10
-
- 207 - Streichen Sie den ersten Satz des zweiten Absatzes:
- "Beachten Sie...".
-