Bei Codieren einer Subroutine müssen die folgenden Regeln
eingehalten werden:
1. Die aufgerufene Routine kann die Register A X , BX, CX,
DX, SI, DI und BP zerstören.
2. Dem aufgerufenen Programm müssen die Anzahl und Länge
der übergebenen Parameter bekannt sein. Die Bezugnahmen
auf Parameter sind positive Offsets, die zu (BP) hinzuge
fügt werden (w obei davon ausgegangen wird, daß die auf
gerufene Routine den aktuellen Stapelzeiger in BP bewegt
hat, d.h. MOV, BP, SP). Dies bedeutet, daß die Adresse von
pl bei 8 (BP), p2 bei 6(BP), von p3 bei 4(BP) liegt usw.
3. Die aufgerufene Routine muß eine R E T < n > Anweisung
ausführen (wobei < n > der Anzahl von Parametern in der
Parameterliste mal zwei entspricht), um den Stapel auf den
Anfang der aufrufenden Routine auszurichten.
4. Die Werte werden an MS-BASIC zurückgegeben, indem der
Variablenname, der das Ergebnis aufnimmt, in die Para
meterliste eingefügt wird.
5. Handelt es sich bei dem Parameter um eine Zeichenfolge,
so zeigt der Relativzeiger des Parameters auf 3 Bytes, die —
als Einheit — als der " Zeichenfolgenbeschreiber" bezeichnet
werden. Byte 0 des Zeichenfolgenbeschreibers enthält die
Länge der Zeichenfolge (0 bis 255). Bei den Bytes 1 bzw. 2
handelt es sich um die unteren und oberen 8 Bits der An
fangsadresse der Zeichenfolge innerhalb der Zeichenfolge.
Ist der Parameter ein
Programm, so zeigt der Zeichenfolgenbeschreiber zu
dem Programmtext. Es muß darauf geachtet werden,
daß das Programm nicht auf diese A rt und Weise geän
dert oder zerstört wird. Um unvorhersehbare Ergebnisse
zu vermeiden, wird +" " zu dem Zeichenfolgenliteral in
dem Programm hinzugefügt. Zum Beispiel:
20 AS = " B ASIC" +" "
Dadurch wird das Zeichenfolgenliteral in die Zeichenfol
ge kopiert. Nun kann die Zeichenfolge geändert werden,
ohne daß das Programm betroffen wird.
5-4
WARNUNG
Zeichenfolgenliteral in dem