home *** CD-ROM | disk | FTP | other *** search
/ Turbo Toolbox / Turbo_Toolbox.iso / tasm / manual.doc < prev    next >
Text File  |  1988-08-28  |  17KB  |  515 lines

  1. TURBO ASSEMBLER 1.0: ZUSÄTZE UND KORREKTUREN IM HANDBUCH
  2. --------------------------------------------------------
  3.  
  4.   Allgemeine Vorbemerkung: Die Groß- und Kleinschreibung der
  5.   vordefinierten Symbole (diejenigen, die mit dem Zeichen (@)
  6.   anfangen) sind in den Handbüchern nicht korrekt, wenn zwischen
  7.   Groß- und Kleinschreibung (wie bei der Option /ML)
  8.   unterschieden wird. Sie müssen durchgängig klein geschrieben
  9.   werden.
  10.  
  11.   Die korrekten Bezeichnungen lauten:
  12.  
  13.     @code
  14.     @data
  15.     @fardata
  16.     @fardata?
  17.     @curseg
  18.  
  19.   Turbo Assembler Benutzerhandbuch
  20.   --------------------------------
  21.  
  22.   Damit Sie die Beispiele einfacher nachvollziehen können, wurden
  23.   viele der Beispielprogramme auf die Originaldisketten kopiert.
  24.   Sehen Sie sich dazu die Liste der Dateinamen am Ende der
  25.   README-Datei durch. Dort finden Sie die Dateinamen mit den
  26.   Seitenzahlen, in denen das Beispiel abgedruckt ist.
  27.  
  28.   Seite
  29.  
  30.   47 - Das Beispiel am unteren Rand der Seite muß heißen
  31.  
  32.        10000h
  33.        + 201h
  34.        ------
  35.        10201h
  36.  
  37.   52 - Die Tabelle im Handbuch enthält keine 80287- und 80387-
  38.        Befehle. In der folgenden Tabelle finden Sie die
  39.        fehlenden Befehle:
  40.  
  41.        Befehl       Prozessor         Befehl        Processor
  42.        ------------------------------------------------------
  43.        FSETPM         287-387         FCOS             387
  44.        FPREM1         387             FPREMI           387
  45.        FSIN           387             FSINCOS          387
  46.        FUCOM          387             FUCOMP           387
  47.        FUCOMPP        387
  48.  
  49.  
  50.   66 - Der erste Satz des letzten Absatzes muß folgendermaßen
  51.        lauten: "Wenn Sie mehrere Dateien in einem
  52.        Kommandozeilenaufruf assemblieren wollen, können Sie die
  53.        Dateinamen mit dem Pluszeichen (+) voneinander trennen:"
  54.  
  55.        Streichen Sie das erste Beispiele, das hinter diesem
  56.        Absatz steht.
  57.  
  58.   81 - In der Tabelle zur Kommandozeilenoption /W fehlen einige
  59.        Einträge. Fügen Sie die folgenden Optionen ein:
  60.  
  61.          RES - Warnung bei der Verwendung reservierter Wörter
  62.          TPI - Warnung, daß Turbo Pascal nicht zulässig ist
  63.          PQK - Warnung, wenn bei [const] eine Konstante
  64.                angenommen wird
  65.          ALN - Segmentausrichtung
  66.  
  67.   82 - Der erste Satz muß folgendermaßen lauten:
  68.  
  69.        "Beim Start des Turbo Assemblers sind standardmäßig alle
  70.        Warnungen außer den Warnungen bezüglich ineffizienten
  71.        Codes (ICG) und dem Schreiben in Code-Segmenten im
  72.        Protected-Mode (PRO) aktiviert.
  73.  
  74.   85 - Im vierten Absatz muß es heißen...
  75.  
  76.        "Der Turbo Assembler sucht zuerst die Datei TASM.CFG in
  77.        Ihrem aktuellen Verzeichnis. Wenn Sie mit MS-DOS 3.X oder
  78.        einer späteren Version arbeiten, wird zusätzlich das
  79.        Verzeichnis durchsucht, aus dem der Turbo Assembler
  80.        geladen wurde. Wenn der Turbo Assembler diese Datei..."
  81.  
  82.  106 - Die Befehle des folgenden Beispiels funktionieren nur im
  83.        Ideal-Modus:
  84.  
  85.        mov al, [100+8]
  86.           und
  87.        mov al, [108]
  88.  
  89.        Die entsprechenden Befehle im MASM-Modus lauten:
  90.  
  91.        mov al, ds:[100+8]
  92.           und
  93.        mov al, ds:[108]
  94.  
  95.  148 - Im ersten Absatz des Abschnitts "Bezeichnungen für
  96.        Speicherstellen" muß der letzte Satz wie folgt lauten:
  97.        "Die LABEL-Anweisung stellt eine weitere sehr praktische
  98.        Methode dar, um Speicherstellen zu bezeichnen, ohne daß
  99.        man Speicherplatz reservieren muß."
  100.        
  101.  157 -Der erste Satz sollte folgendermaßen lauten: "Es ist auch
  102.        bei der Umwandlung verschiedener Datentypen und bei der
  103.        Ausführung von Sprungbefehlen von Bedeutung."
  104.  
  105.  197 - Löschen Sie aus dem ersten Satz des zweiten Absatzes den
  106.        folgenden Text: "und weitaus weniger flexibel als die
  107.        Registerübergabe."
  108.  
  109.  233 - Fügen Sie die folgenden Datentypen in die Tabelle mit den
  110.        EXTRN-Datentypen am Anfang der Seite ein:
  111.  
  112.        DATAPTR           Ein NEAR oder FAR-Zeiger auf Daten,
  113.                          entsprechend dem verwendeten 
  114.                          Speichermodell.
  115.  
  116.        UNKNOWN           Ein unbekannter Datentyp.
  117.  
  118.        <Strukturname>    Der Name eines vom Benutzer
  119.                          definierten STRUC-Datentyps.
  120.  
  121.  241 - Löschen Sie den vierten Absatz auf der Seite: "Sie haben
  122.        vielleicht bemerkt .... Daten nicht abgeschnitten werden".
  123.  
  124.  249 - Löschen Sie den dritten Absatz auf dieser Seite: "Sie
  125.        sollten .... Symboltabelle aufgeführt."
  126.  
  127.  252 - In der letzten Zeile des zweiten Absatzes muß
  128.        "aktiviert" durch "ausgeschaltet" ersetzt werden.
  129.  
  130.  254 - Im letzten Satz des zweiten vollständigen Absatzes muß es
  131.        heißen: "Mit der Voreinstellung werden Felder, die die
  132.        maximale Länge überschreiten, nicht abgeschnitten
  133.        (%NOTRUNC)."
  134.  
  135.  265 - Fügen Sie die folgenden bedingten Fehleranweisungen am
  136.        Anfang der Seite ein:
  137.  
  138.        .ERRE, .ERRNZ, .ERRDIFI, .ERRIDNI
  139.  
  140.  310,315,318,330 - Ersetzen Sie die Schreibweise der Option -b
  141.        jeweils mit -B.
  142.  
  143.  332 - Die Kommentarzeile in der Mitte der Seite sollte wie folgt
  144.        lauten:
  145.  
  146.        ; ?debug L 15
  147.  
  148.  348 - In der letzten Zeile des ersten Absatzes in der Mitte muß
  149.        es heißen: "...DATEI2.ASM liegt und nicht in einem FARDATA-
  150.       
  151.        Segment."
  152.  
  153.  358 - Der letzte Satz des zweiten Absatzes muß folgendermaßen
  154.        lauten: "Ein weiterer Vorteil ergibt sich daraus, daß die
  155.        mit ARG definierten Labels auf den Gültigkeitsbereich der
  156.        Prozedur, in der sie mit der LOCAL-Anweisung deklariert
  157.        wurden (siehe den Befehl LOCALS im Referenzhandbuch),
  158.        beschränkt sind, so daß man sich keine Sorgen ...."
  159.  
  160.  487 - Im zweiten Satz des ersten Paragraphen muß folgendes
  161.        stehen: "Im folgenden Beispiel wird nur das erste Byte des
  162.        Strukturelements A mit 1 und nur das erste Byte des
  163.        Strukturelements B mit 2 initialisiert, während das zweite
  164.        beider Strukturelemente mit 20h (einem Leerzeichen)
  165.        initialisiert wird."
  166.  
  167.  497 - Die zweite Anweisung "jnz SchleifenAnfang" im Beispiel
  168.        muß "jnz KurzeSchleife" heißen.
  169.  
  170.  517 - Der Befehl "mov ax, [InitWert]" solte hinter dem Befehl
  171.        "mov es, ax" stehen.
  172.  
  173.  589 - Der letzte Satz im letzten Absatz muß heißen: "Der
  174.        Operator liefert eine Zahl, in der der Datentyp der
  175.        verschiedenen Symbole codiert ist, mit Ausnahme bei nicht
  176.        definierten Bezeichnern:"
  177.  
  178.  599 - In den letzten deri Sätze des ersten Absatzes müssen
  179.        Ideal und MASM vertauscht werden. Es sollte also heißen,
  180.        "Im Ideal-Modus werden .... Im MASM-Modus, ....".
  181.  
  182.  
  183.   Turbo Assembler Referenzhandbuch
  184.   --------------------------------
  185.  
  186.   Seite
  187.  
  188.    5 - Der Unterpunkt am unteren Ende der Seite sollte lauten:
  189.        "Der erste Buchstabe jedes Worts, das in einem Symbolnamen
  190.        vorkommt, muß ein Großbuchstabe sein, außer bei
  191.        Segmentsymbolen, die klein geschrieben werden müssen. Der
  192.        Rest des Wortes wird klein geschrieben.
  193.  
  194.          @FileName
  195.          @WordSize
  196.          @curseg
  197.          @fardata
  198.  
  199.        Ändern Sie das vordefinierte Symbol @Code in @code, so daß
  200.        das Beispiel folgendermaßen lautet:
  201.  
  202.          mov  ax,@code
  203.          mov  dx,ax
  204.          ASSUME ds:@code
  205.  
  206.    8 - Ändern Sie das vordefinierte Symbol @Data in @data, so daß
  207.        das Beispiel wie folgt aussieht:
  208.  
  209.          mov  ax,@data
  210.          mov  ds,ax
  211.          ASSUME ds:@data
  212.    
  213.        Im ersten Satz des Anmerkungsabschnitts von @Datasize muß
  214.        ergänzt werden, daß das Speichermodell TINY ebenfalls den
  215.        Wert 0 liefert.
  216.  
  217.    9   Das Beispiel für ??Date muß lauten:
  218.          ASMDATE db ??Date
  219.  
  220.        Ersetzen Sie das vordefinierte Symbol @FarData in @fardata
  221.        und das Beispiel wie folgt:
  222.  
  223.          mov  ax,@fardata
  224.          mov  ds,ax
  225.          ASSUME ds:@fardata
  226.  
  227.   10   Ändern Sie das vordefinierte Symbol @FarData? in @fardata?
  228.        sowie das entsprechende Beispiel:
  229.  
  230.          mov  ax,@fardata?
  231.          mov  ds,ax
  232.          ASSUME ds:@fardata?
  233.  
  234.   15 - In Tabelle 2.2 muß der Operator SYMTYPE am Ende eingefügt
  235.        werden.
  236.  
  237.   16 - Fügen Sie den folgenden Satz im Abschnitt Anmerkungen für
  238.        Operator * ein: "Der Operator * kann auch zwischen einem
  239.        Register und einer Konstante verwendet werden, wenn die
  240.        Adressierungsarten des 80386-Prozessor unterstützt werden.
  241.  
  242.   24 - Das Beispiel für DWORD lautet:
  243.  
  244.          call dword fptr
  245.  
  246.   28- Das Beispiel für HIGH lautet:
  247.  
  248.          ; MASM- und Ideal-Modus
  249.          Magic  equ  1234h
  250.                 mov  cl, HIGH Magic
  251.                 Ideal
  252.          ; Nur im Ideal-Modus
  253.          Big    DD   12345678h
  254.                 mov  ax, [word HIGH Big] ; lädt 1234h in AX
  255.  
  256.   31 - Das Beispiel für LOW lautet:
  257.  
  258.          ; MASM- und Ideal-Modus
  259.          Magic  equ  1234h
  260.                 mov  bl, LOW Magic
  261.                 Ideal
  262.          ; Ideal mode only
  263.          Big    DD   12345678h
  264.                 mov  ax, [word LOW Big] ; lädt 5678h in AX
  265.  
  266.   32 - Das Beispiel für MASK lautet:
  267.  
  268.          stat record a:3,b:4,c:5
  269.          neustat stat <0,2,1>
  270.  
  271.          mov al, neustat
  272.          and al, MASK b
  273.          mov al, MASK stat
  274.  
  275.   34 - Das Beispiel für NEAR lautet:
  276.  
  277.          Ideal
  278.     proc farproz far
  279.     ; Funktionsbefehle
  280.          endp farproz
  281.  
  282.     ; noch im gleichen Segment
  283.          push cs
  284.          call NEAR farproz
  285.  
  286.   36 - Das Beispiel für PROC lautet:
  287.  
  288.          .model large
  289.          .code
  290.          Ideal
  291.     call proc Test1
  292.  
  293.          proc Test1
  294.  
  295.   37 - Fügen Sie DATAPTR in die Liste der beim PTR-Operator
  296.        zugelassenen Datentypen. Im MASM kann der Ausdruck rechts
  297.        von PTR auch eine Konstante ergeben.
  298.  
  299.   41 - Im letzten Absatz der Anmerkungen zum SIZE-Operator muß es
  300.        heißen: "Im Ideal-Modus, liefert SIZE die Anzahl der Bytes
  301.        innerhalb einer DUP-Anweisung. Un die Anzahl der Bytes der
  302.        DUP-Anweisung zu ermitteln, sollten Sie den Befehl LENGTH
  303.        verwenden."
  304.  
  305.   43 - Löschen Sie MASM aus dem Abschnitt Modus in SYMTYPE.
  306.  
  307.   44 - Fügen Sie DATAPTR in der Liste der Datentypen beim THIS-
  308.        Operator ein.
  309.  
  310.   45 - Das Beispiel für den Operator .TYPE lautet:
  311.  
  312.          if (.type ABC) and 3
  313.            assume ds:seg abc
  314.            mov  ax, seg abc
  315.            mov  ds, ax
  316.          endif
  317.  
  318.   52 - Beim %-Operator fügen Sie diese Zeilen am Ende des ersten
  319.        Absatzes ein: "Der ausgewertete Ausdruck wird als
  320.        numerischer String in der AKTUELLEN ZAHLENBASIS
  321.        dargestellt. Hinter % kann auch ein Textmakro angegeben
  322.        werden, wobei das Makro-Argument vollständig durch das
  323.        Textmakro erstzt wird."
  324.  
  325.   53 - Fügen Sie einen Abschnitt für die %-Anweisung ein, 
  326.        die als einzeiliges Makro alle aktuellen Textmakros 
  327.        als Argumente verwendet.
  328.  
  329.   62 - Fügen Sie den folgenden Satz am Ende der Anmerkungen zur
  330.        Anweisung ALIGN an: "ALIGN erzeugt eine Warnung, wenn die
  331.        Segmentausrichtung nicht streng genug erfolgt."
  332.  
  333.   63 - Fügen Sie DATAPTR in der Liste der zulässigen Datentypen
  334.        im dritten Absatz ein.
  335.  
  336.   65 - Das Beispiel für die Anweisung ARG sollte wie folgt
  337.        lauten:
  338.   
  339.          fp   PROC FAR
  340.               ARG SRC:WORD,DEST:WORD = ARGLEN
  341.               push bp
  342.               mov  bp,sp
  343.               mov  di,DEST
  344.               mov  si,SRC
  345.          ;<Prozedur-Befehle>
  346.               pop  bp
  347.               ret  ARGLEN
  348.           fp  ENDP
  349.  
  350.   70 - Die Syntaxbeschreibung für COMMENT muß wie folgt lauten:
  351.  
  352.          COMMENT Trennzeichen [Text]
  353.          [Text]
  354.          Trennzeichen
  355.  
  356.   72 - Entfernen Sie den zweiten Absatz der Anmerkungen zur
  357.        Anweisung .CREF; .CREF wird nämlich in der Voreinstellung
  358.        nicht verwendet.
  359.  
  360.        Der dritte Absatz muß wie folgt lauten: "Der Turbo Assembler
  361.        schreibt Cross-Referenz-Informationen sowohl in die
  362.        Listing-Datei als auch in eine getrennte .XRF-Datei."
  363.  
  364.   75-  Im ersten Satz des Abschnitts Anmerkungen für die Anweisung
  365.        %CTLS sollte stehen, daß die Anweisungen zur Listing-
  366.        Steuerung normalerweise NICHT erscheinen.
  367.  
  368.   79 - Fügen Sie DATAPTR in Liste der zulässigen Datentypen im
  369.        ersten Absatz dieser Seite ein.
  370.  
  371.        Ändern Sie die Zahl im ersten Unterpunkt von
  372.        4.294,967.295 auf 2.147.483.647 .
  373.  
  374.   81 - Fügen Sie DATAPTR in die Liste der zulässigen Datentypen
  375.        in den zweiten Absatz des Abschnitts Anmerkungen unter DF
  376.        ein.
  377.  
  378.   82 - Die Anweisung DISPLAY ist sowohl im MASM-Modus als auch im
  379.        Ideal-Modus verfügbar.
  380.  
  381.        Sie können den Substitutionsoperator innerhalb eines
  382.        Strings verwenden, der in einer DISPLAY-Anweisung
  383.        übergeben wird. Zum Beispiel:
  384.  
  385.          MAKE_DATEN macro WERT
  386.                     display "Initialisiere ein Byte mit: &WERT&"
  387.                     db WERT
  388.                     endm
  389.  
  390.   84 - In DQ muß der Wertebereich im ersten Unterpunkt von 
  391.        -2^64+1 bis 2^64-1.
  392.  
  393.   86 - Fügen Sie DATAPTR in die Liste der gültigen Datentypen im
  394.        ersten Absatz auf der Seite ein. Beim Wertebereich im
  395.        ersten Unterpunkt muß es 32767 und nicht 65536 heißen.
  396.  
  397.   93 - Die EQU-Anweisung ist sowohl im MASM- als auch im Ideal-
  398.        Modus verfügbar.
  399.  
  400.  105 - Fügen Sie folgenden Satz hinter den Anmerkungen zur EVEN-
  401.        Anweisung ein: "Bei der EVEN-Anweisung wird eine Warnung
  402.        erzeugt, wenn die Ausrichtung nicht streng genug erfolgt".
  403.  
  404.  106 - Hinter den Anmerkungen zu EVENDATA fügen Sie ein: "Die
  405.        Ausrichtung auf geradzahlige Adressen erfolgt durch
  406.        Erhöhung des Positionszeigers, ohne daß Daten ausgegeben
  407.        werden. Das ist besonders für Segmente mit nicht
  408.        initialiserten Daten wichtig. Sie erhalten ebenfalls eine
  409.        Warnung, wenn die Segmentausrichtung nicht streng genug
  410.        ist."
  411.  
  412.  107 - Fügen Sie DATAPTR in die Liste der Datentypen unter den
  413.        Anmerkungen von EXTRN ein. Jedes Argument von EXTRN
  414.        kann auch mit der selben Syntax wie in ARG oder LOCAL
  415.        angegeben werden.
  416.  
  417.  111 - Fügen Sie DATAPTR in die Liste der Datentypen unter den
  418.        Anmerkungen von GLOBAL ein. Jedes Argument von EXTRN
  419.        kann auch mit der selben Syntax wie in EXTRN, ARG oder
  420.        LOCAL angegeben werden.
  421.  
  422.  126 - Fügen Sie DATAPTR in die Liste der Datentypen unter den
  423.        Anmerkungen von LABEL ein.
  424.  
  425.  129 - Löschen Sie den ersten Teil des Satzes, "Wenn Sie die
  426.        speziellen Eigenschaften des MASM51 aktiviert haben...",
  427.        lassen Sie aber, "Sie können alternativ auch folgende
  428.        Syntax für jede lokale Definition verwenden.", stehen.
  429.  
  430.  130 - Fügen Sie DATAPTR in die Liste der zulässigen Datentypen
  431.        im zweiten Unterpunkt ein.
  432.  
  433.  134 - Löschen Sie den dritten Unterpunkt bei den Anmerkungen zur
  434.        Anweisung MASM51. Im letzten Unterpunkt muß es heißen:
  435.        "PROC-Anweisungen für erweiterte Sprachmodelle werden alle
  436.        PUBLIC mit einem führenden Unterstrich deklariert, wenn
  437.        als Sprache C verwendet wird."
  438.  
  439.  135 - Fügen Sie am Ende des letzten Satzes folgende
  440.        Einschränkung ein: "..., wenn Sie 16-Bit-Segmente
  441.        verwenden wollen."
  442.  
  443.  149 - Sie können den Substitutionsoperator &Text& auch innerhalb
  444.        eines Strings der %OUT-Anweisung verwenden. Zum Beispiel:
  445.  
  446.          MAKE_DATEN macro  WERT
  447.                     %out Initialisiere ein Byte mit: &WERT&
  448.                     db WERT
  449.                     endm
  450.  
  451.  157 - Im Beispiel von PROC muß es heißen:
  452.  
  453.           ZeileLesen proc near
  454.             ; Befehle in der Prozedur
  455.           ZeileLesen endp
  456.  
  457.           call ZeileLesen
  458.  
  459.  159 - Bei den Anmerkungen zu %PUSHLCTL, muß %WCL durch %INCL
  460.        und %NOWCL durch %NOINCL ersetzt werden.
  461.  
  462.  170 - Im Beispiel für die STRUC-Anweisung muß es heißen
  463.  
  464.          Ideal
  465.          model small
  466.          dataseg
  467.          struc B
  468.            B1  DD  0
  469.            B2  DB  ?
  470.          ends
  471.  
  472.          struc A
  473.            A1  DW  ?
  474.            A2  DD  ?
  475.            binst  B  <>
  476.            struc
  477.              D  DB  "XYZ"
  478.              E  DQ  1.0
  479.            ends
  480.          ends
  481.  
  482.          ainst  A  <>
  483.          cinst  A  ?
  484.          dinst  A
  485.  
  486.          codeseg
  487.            mov  al, [ainst.binst.b2]
  488.            mov  al, [ainst.d]
  489.            mov  ax, [word cinst.binst.b1]
  490.          end
  491.  
  492.  175 - Entfernen Sie den letzten Absatz unter den Anmerkungen zu
  493.        %TRUNC. Beachten Sie bitte, daß %NOTRUNC die
  494.        standardmäßige Voreinstellung beim Aufruf des Turbo
  495.        Assemblers ist.
  496.  
  497.  179 - Aus der Tabelle der 32-Bit-Register des 80386 müssen Sie
  498.        EDS und EES entfernen.
  499.  
  500.  180 - Fügen Sie fogende Warnungen ein:
  501.  
  502.          RES - Warnung bei der Verwendung reservierter Wörter
  503.          TPI - Warnung, daß Turbo Pascal nicht zulässig ist
  504.          PQK - Warnung, wenn bei [const] eine Konstante
  505.                angenommen wird
  506.          ALN - Segmentausrichtung
  507.  
  508.  188 - Im Abschnitt mit MAusdr9 muß folgendes eingefügt werden:
  509.  
  510.        o MAusdr10
  511.  
  512.  207 - Streichen Sie den ersten Satz des zweiten Absatzes:
  513.        "Beachten Sie...".
  514.  
  515.