3000 6059 0000 I ... ASM.COM DOC7
;
72
.mt 8
.mb 8
.fm 1  
.hm 1
.pc 32
.pn 103
9.7._____Cross-Referenz


Das  Cross-Referenz-Programm verarbeitet eine speziell  ueber-
setzte  Druckdatei zu einer Liste aller Adressverweise  inner-
halb  des Moduls einschliesslich der Speicherplaetze,  wo  sie 
definiert sind.
Die  Cross-Referenz  kann als  Hilfsmittel  beim  Programmtest 
genutzt werden.
Das  Cross-Referenz-Programm  erlaubt  dem  Programmierer  das 
Verarbeiten  einer  vom  Assembler  erzeugten  Cross-Referenz-
Datei.
Diese Datei enthaelt Steuerzeichen, die waehrend der Ueberset-
zung mit dem Assembler eingesetzt wurden.

Das Cross-Referenz-Programm erzeugt eine Liste,  die der .PRN-
Datei gleicht und zwei zusaetzliche Merkmale besitzt:

1. Jede  Quellanweisung wird mit  einer  Cross-Referenz-Nummer    
   versehen.

2. Am  Listenende erscheinen die Variablennamen in  alphabeti-
   scher Reihenfolge.
   Jedem  Namen werden die Nummer der Zeilen in  aufsteigender 
   Folge zugeordnet,  wo er auftritt. Die Nummer der Zeile, wo 
   er definiert wurde, ist durch # gekennzeichnet.

Die Cross-Referenz-Liste ersetzt die .PRN-Datei des Assemblers 
und erhaelt auch den Dateityp .PRN.


9.7.1.___Erzeugen_einer_Cross-Referenz-Liste


Das   Erzeugen  einer  Cross-Referenz-Liste  erfolgt  in  zwei 
Schritten:

1. Erzeugen einer Cross-Referenz-Datei (.CRF)
2. Generieren einer Cross-Referenz-Liste (.PRN)

Der erste Schritt wird im Assembler ausgefuehrt; der zweite im 
Cross-Referenz-Programm.


9.7.1.1._Erzeugen_einer_Cross-Referenz-Datei


Fuer  das Erzeugen einer Cross-Referenz-Datei muss in der Kom-
mandozeile des Assemblers der /C-Schalter gesetzt werden.

Beispiel: ASM =PROG/C

damit wird PROG.MAC uebersetzt und PROG.REL (Objektdatei)  und 
PROG.CRF (Cross-Referenz-Datei) erzeugt.


9.7.1.2._Generieren_der_Cross-Referenz-Liste


Die  Cross-Referenz-Liste wird beim Durchlaufen der .CRF-Datei 
durch das Cross-Referenz-Programm erzeugt.

Der Aufruf erfolgt mit

     REF

Das Programm meldet sich mit einem Stern (*).
Nun ist der Name der .CRF-Datei einzugeben:

     =dateiname

Beispiel:
     
     REF =PROG

es wird die Datei PROG.PRN erzeugt.

Diese  .PRN-Datei kann unter Nutzung der Betriebssystemkomman-
dos gedruckt oder auf dem Bildschirm angezeigt werden.
Zusaetzlich  unterstuetzt REF die gleichen Ausgabegeraete  wie 
der Assembler.

Beispiel:

     REF LST:=PROG

gibt  die Liste auf den Drucker aus.  Es wird keine Disketten-
datei erzeugt.

     REF TTY:=PROG

Die Ausgabe erfolgt nur auf dem Bilschirm.

Es  ist auch moeglich,  ein anderes Laufwerk fuer die  Ausgabe 
anzugeben.

Beispiel:
     
     REF B:=A:PROG

Die  Diskette  mit  PROG.CRF  befindet  sich  im  Laufwerk  A; 
PROG.PRN soll auf die Diskette gebracht werden,  die im  Lauf-
werk B liegt.

Nach  Beenden meldet sich REF mit einem Stern (*) zurueck,  es 
kann ein neuer Dateiname eingegeben werden.

Die Rueckkehr zum Betriebssytem erfolgt mittels ^C.

Die Druckdatei kann auch einen anderen Namen und einen anderen 
Dateityp erhalten, dann sind diese anzugeben.

Beispiel:
     
     REF  PROG.CRL=PROG
bzw.
     REF  PROGREF=PROG

Die obere Kommandozeile erzeugt eine Druckdatei mit dem  Namen 
PROG.CRL;  die untere generiert eine Datei mit der Bezeichnung 
PROGREF.PRN.
Dateitypen  koennen angegeben werden,  um die  Cross-Referenz-
Liste von der Druckdatei des Assemblers zu unterscheiden.


9.7.2.___Pseudooperationen_zur_Listensteuerung


Die  Option fuer das Erzeugen einer Cross-Referenz  kann  fuer 
Programmabschnitte aber nicht fuer das ganze Programm angewen-
det werden.
Zum  Steuern des Auflistens oder Weglassens der Cross-Referenz 
sind  in der Quelldatei die Pseudooperationen .CREF und .XCREF 
anzugeben.  Sie koennen an jeder beliebigen Stelle im Programm 
in das Operationsfeld geschrieben werden.

 .CREF und .XCREF haben keine Argumente.

Pseudooperation    Bedeutung
--------------------------------------------------------------

 .CREF             Erzeugen der Cross-Referenz
                   .CREF ist die Standardbedingung:  .CREF ist 
                   zu  verwenden,  wenn nach einem .XCREF  das 
                   Erzeugen  der Cross-Referenz wieder gestat-
                   tet werden soll.
                   .CREF wirkt, bis ein .XCREF erscheint.

                   Bemerkung:
                   .CREF wirkt nur,  wenn in der Kommandozeile 
                   des Assemblers der /C-Schalter gesetzt 
                   wurde.


 .XCREF            Unterdruecken der Cross-Referenz  
                   .XCREF schaltet die Wirkung von .CREF aus.
                   .XCREF unterdrueckt die Cross-Referenz fuer 
                   Programmabschnitte.
                   Weil weder .CREF noch .XCREF Wirkung haben, 
                   wenn   nicht   der   /C-Schalter   in   der 
                   Assembler-Kommandozeile  gesetzt  ist  muss 
                   .XCREF  nicht verwendet werden,  wenn  eine 
                   normale  Liste  (ohne  Cross-Referenz)  ge-
                   wuenscht wird.  Das wird auch erreicht ein-
                   fach  durch Weglassen des  /C-Schalters  in 
                   der Kommandozeile.


9.8._____Uebersicht_ueber_die_Pseudooperationen_des_Assemblers


Bemerkung:

*            Z80 - Pseudooperationen
kein Stern   8080 -  Pseudooperationen


9.8.1._Einzelfunktions-Pseudooperationen

                                                           
Pseudooperationen zur Auswahl der Anweisungsliste

                                                         Seite
         .Z80                                              23
         .8080                                             23

Pseudooperationen zur Daten- und Symboldefinition

                                                         Seite
         <name> ASET <exp>                                 28
         BYTE EXT <symbol>                                 26
         BYTE EXTRN <symbol>                               26
         BYTE EXTERNAL <symbol>                            26
         DB <exp>[,<exp>...]                               24
         DB <string>[,<string>...]                         24
         DC <string>                                       24
    *    DEFB <exp>[,<exp>...]                             24
    *    <name> DEFL <exp>                                 28
    *    DEFM <string>[,<string>...]                       24
    *    DEFS <exp>[,<exp>...]                             25
    *    DEFW <exp>[,<exp>...]                             26
         DS <exp>[,<val>]                                  25
         DW <exp>[,<exp>...]                               26
         ENTRY <name>[,<name>...]                          27
         <name> EQU <exp>                                  26
         EXT <name>,[<name>...]                            26
         EXTRN <name>[,<name>...]                          26
         EXTERNAL <name>[,<name>...]                       26
         GLOBAL <name>[,<name>...]                         27
         PUBLIC <name>[,<name>...]                         27
         <name> SET <exp>  (Nicht fuer Z80-Anweisungs-
                           liste!)                         28

Pseudooperationen zur Zuweisung des Speicherzuordnungs-
zaehlers

                                                         Seite
         ASEG                                              29
         CSEG                                              29
         DSEG                                              30
         COMMON /<blockname>/                              31
         ORG                                               32
         .PHASE <exp>                                      32
         .DEPHASE                                          32
Dateibezogene Pseudooperationen

                                                         Seite
         .COMMENT <delim><text><delim>                     33
         END [<exp>]                                       34
         INCLUDE <filename>                                35
         $INCLUDE <filename>                               35
         MACLIB <filename>                                 35
         NAME ("modulname")                                35
         .RADIX <exp>                                      36
         .REQUEST <filename>[,<filename>...]               36


9.8.2._Pseudooperationen_zur_Listensteuerung


Pseudooperationen zur Formatsteuerung

                                                         Seite
    *    *EJECT [<exp>]  (ein * ist Teil der 
                         Pseudooperation)                  38
         $EJECT                                            38
         PAGE <exp>                                        38
         SUBTTL [<text>]                                   38
         TITLE <text>                                      38
         $TITLE [<text>]                                   38
                                                           38
Allgemeine Pseudooperationen zur Listensteuerung

                                                         Seite
         .LIST                                             39
         .XLIST                                            39
         .PRINTX <delim><text><delim>                      40

Pseudooperationen zur bedingten Listensteuerung

                                                         Seite
         .SFCOND                                           40
         .LFCOND                                           40
         .TFCOND                                           41

Pseudooperationen zur Listensteuerung der Makroerweiterung

                                                         Seite
         .LALL                                             41
         .SALL                                             41
         .XALL                                             41

Pseudooperationen zur Steuerung der Cross-Referenz

                                                         Seite
         .XCREF                                            42
         .CREF                                             42



9.8.3._Pseudooperationen_zur_Makrofaehigkeit


Pseudooperationen zur Makrodefinition

                                                         Seite
         <name> MACRO <parameter>[,<parameter>...]         43
         ENDM                                              48
         EXITM                                             48
         LOCAL <parameter>[,<parameter>...]                49

Wiederholungspseudooperationen

                                                         Seite
         REPT <exp>                                        46
         IRP <dummy>,<parameter in spitze Klammern
                      eingeschlossen>                      46
         IRPC <dummy>,<string>                             47

Pseudooperationen zur bedingten Assemblierung

                                                         Seite
    *    COND <exp>                                        52
         ELSE                                              54
    *    ENDC                                              54
         ENDIF                                             54
         IF <exp>                                          52
         IF <arg>                                          52
         IFB <arg>                                         53
         IFDEF <symbol>                                    53
         IFDIF <arg1>,<arg2>                               53
         IFE <exp>                                         53
         IFF <exp>                                         53
         IFIDN <arg1>,<arg2>                               53
         IFNB <arg>                                        53
         IFNDEF <symbol>                                   53
         IFT <exp>                                         52
         IF1                                               53
         IF2                                               53