Herunterladen Inhalt Inhalt Diese Seite drucken
Inhaltsverzeichnis

Werbung

das Unterprogramm die Werte dieser fünf Register vermerkt, bevor es
Ihren Inhalt ändert.
Wenn das Unterprogramm Interrupts außer kraft setzt, müssen sie wie­
der in kraft gesetzt werden, bevor man auf GW-BASIC-Ebene zurück­
kehrt.

CALL

Nach Ausführung der CALL-Anweisung führt GW-BASIC folgendes aus:
Die Adresse (Offset für GW-BASIC Datenbereich) einer jeden im CALL-
Befehl angegebenen Variablen wird auf den Stapel gepusht. Mit Hilfe
dieser Adressen kann das Unterprogramm Daten vom GW-BASSIC-
Programm annehmen und Daten in das GW-BASIC-Programm zurück­
geben. Handelt es sich bei der Variablen um eine Zeichenkettenvariable,
ist die Adresse am Stapel die eines 3-Byte Zeichenketten-Descriptors.
Das erste Byte weist die Länge einer Zeichenkette (0 bis 255) auf, das
zweite Byte enthält die 8 niederwertigsten Bits des Offsets der Zeichen­
kette im GW-BASIC Datenfeld, die acht höchstwertigen Bit werden im
dritten Byte gespeichert. Das Unterprogramm darf die Länge der Zei­
chenkette nicht verändern.
Wenn Ihr Unterprogramm den Inhalt einer Zeichenvariablen beeinflus­
sen soll, ist es zweckmäßig, sich zu vergewissern, daß GW-BASIC zuerst
die Zeichenkettenvariable in ihren eigenen Arbeitsbereich kopiert,
dadurch daß es an der Zeichenkette eine Operation vornimmt. Zum Bei­
spiel, wenn Ihr Unterprogramm einen Wert an A$ zurückgeben soll, ist
der Befehl
10 A$="Zeichenkette lang genug?"+""
zu erteilen. Wenn Sie einen solchen Befehl nicht einbeziehen, zeigt der
Zeichenketten-Descriptor auf die Zeichenkette in Ihrem Programmtext.
Dies könnte zu einer unerwünschten Änderung des Programms führen.
Eine im CS-Register festgelegte Rücksprungadresse und der Offset wer­
den ebenso gePUSHt.
Unter Verwendung des Inhalts des letzten DEF SEG Befehls und des in
der CALL-Anweisung angegebenen Offset-Wertes wird die Prozessor­
steuerung dem Unterprogramm übertragen. Die Stapeleingabe für die
letzte Variable in der Parameterliste beträgt jetzt 6 Byte über den augen­
blicklichen Wert des Stapelzählers. Der Eintrag für den Parameter vor
der letzten Variablen liegt um 8 Byte über dem augenblicklichen Wert
des Stapelzeigers etc.
Die Assembler RET-Anweisung am Ende des Unterprogramms muß
einen Wert benennen, der die doppelte Anzahl an Datenelementen in
der CALL-Variablenliste enthält.
GW-BASIC
AUSFÜHRUNG VON MASCHINENCODE-PROGRAMMEN
6-5

Quicklinks ausblenden:

Werbung

Inhaltsverzeichnis
loading

Verwandte Produkte für NCR GW-BASIC

Inhaltsverzeichnis