AUSFÜHRUNG VON MASCHINENCODE-PROGRAMMEN
der Wert des CS Registers, der nach dem Laden der .EXE-Datei ver
merkt wurde, im DEF SEG Befehl befindet. Der DEF USR oder
CALL-Befehl sollte sich auf die im Befehlszähler enthaltene
Adresse beziehen, die nach dem Laden der .EXE-Datei vermerkt
wurde.
5. Im Direktmodus ist DEF SEG entsprechend dem CS Wert, der nach
dem Laden der .EXE-Datei vermerkt wurde, zu setzen. Dann ist das
Unterprogramm mit BSAVE zu speichern und der Inhalt des
Befehlszählers, den Sie nach Laden der .EXE-Datei vermerkt
haben, ist als Offset anzugeben.
6. Der BLOAD-Befehl in Ihrem GW-BASIC Programm, der das Unter
programm ladet, braucht den Offset, an den es sich befinden soll,
nicht anzugeben. GW-BASIC nimmt den Offset-Wert an, den es im
BSAVE-Befehl für die betreffende Datei verwendet hat.
Es besteht die Möglichkeit, Hire Unterprogramme in Maschinensprache
im GW-BASIC- Speicher unterzubringen. In Frage kommende Speicher
plätze sind ein nicht verwendeter Dateipuffer bzw. Bildschirmpuffer oder
eine Zeichenkettenvariable. Die Speicherstelle eines Dateipuffers oder
einer Zeichenkettenvariablen lassen sich mit Hilfe der Befehle
VARPTR# bzw. VARPTR auffinden.
WIE GW-BASIC UNTERPROGRAMME AUFRUFT
Ihr GW-BASIC-Programm kann Unterprogramme in Maschinen
sprache mit Hilfe des CALL-Befehls und der USR-Funktion aufrufen.
Ganz gleich welche Methode Sie anwenden, alle
sorregister sind auf die Adresse des GW-BASIC-Datenbereiches bei der
Eingabe des Unterprogramms gesetzt. Das CS-Register enthält den
Wert, der im zuletzt ausgeführten DEF SEG-Befehls angegeben ist.
Wenn nichts ausgeführt wurde oder DEF SEG wurde ohne festgelegten
Wert ausgeführt, wird das C-Register auf die gleiche Adresse gesetzt wie
die anderen Segmentregister.
Den für das Unterprogramm verfügbare Stapel kann man bis zu 8 mal
pushen. Wird ein größerer Stapel benötigt, muß ein eigener Stapel ange
legt werden.
GW-BASIC betrachtet alle in Maschinensprache geschriebenen Pro
gramme als FAR-Routinen, daher sollte eine intersegmentäre RET-
Anweisung das Unterprogramm abschließen. Bevor man wieder auf GW-
BASIC-Ebene zurückkehrt, muß der alte Zustand der Segmentregister
und des Stapelzählers wieder hergestellt sein. Es ist daher wichtig, daß
6-4
ES, und SS Prozes
DS,
GW-BASIC