![]() ![]() INFO - FAQ - CC2-Forum - CCPro-Forum |
|
Hallo zusammen. > weiß jemand - Dietmar sicherlich-, wieviel Stapelspeicher mit dem Befehl PSHA(X,H) innerhalb eines Assemblerprogramms benutzt werden können ? Wieviel Stackspeicher wirklich frei ist, läßt sich nicht so ohne weiteres sagen. Es hängt davon ab, ob und welche Assembler-Interruptroutinen der Anwender in das System eingebunden hat und welche BASIC-Befehle der Anwender verwendet. Jede Routine im OM-Betriebssystem hat unterschiedlichen Stackbedarf. Am meisten wird wohl von den PRINT-, PRINT#- und CLOSE#-Befehlen benötigt. Der Stack wird bekanntlich immer von oben nach unten beschrieben. Bei der Open-Micro und Open-Mini: Der Stack beginnt auf Adresse $00ff. Die letzte vom Betriebssystem verwendete RAM-Speicherzelle liegt auf Adresse $00e5. Danach kommt das vom Anwender in Assemblerprogrammen benutzbare FREERAM auf Adresse $00e6. Der Stack darf deshalb nicht größer als $0100-$00e6 = 26 Byte sein. Unter der Voraussetzung, der Anwender benutzt FREERAM nicht. Bei der Open-Midi: Der Stack beginnt auf Adresse $013f. Davor steht das USER-RAM, also der RAM-Speicher, in dem die vom Anwender benutzten Variablen abgelegt werden. Bei 160 verwendeten Variablen bleiben für den Stack $0140-$0080-160 = 32 Byte. Bei der Open-Macro: Der Stack beginnt schon auf Adresse $0136, weil dahinter 9 Byte folgen, die für den Buffer der ESCI-Schnittstelle verwendet werden. Außerdem wird der Stack um 17 Byte nach vorne geschoben, wenn eine BASIC-IRQ-Interruptroutine gestartet wird. Der Stack beginnt während der BASIC-IRQ-Interruptroutine also auf Adresse $013f-(9+16+1) = $0125. Davor steht das USER-RAM, also der RAM-Speicher, in dem die vom Anwender benutzten Variablen abgelegt werden. Bei 140 verwendeten Variablen bleiben für den Stack $0126-$0080-140 = 26 Byte. Das ist alles aus Sicht des Betriebssystems. Wenn eine Anwender-Assemblerroutine per SYS aufgerufen wird, stehen wegen der Rücksprungadresse 2 Byte weniger Stack zur Verfügung. Außerdem benötigen natürlich auch die Interruptroutinen des Betriebssystems einigen Stackspeicher. Bei Bedarf sollte der Anwender in eigenen Assemblerroutinen, die einen hohen Stackbedarf haben, also ein STI (bzw. SEI) und CLI verwenden. Viel Spaß mit den OM-Mikrocontrollern Dietmar Meine Homepage: http://ccintern.dharlos.de |
Antwort schreiben |