Das Open-Control-Projekt - Die Alternative zur C-Control-I


Das Forum zur C-Control-1
Welche C-Control-Varianten existieren?
Übersicht - Suchen - Neueste 50 Beiträge - Neuer Beitrag - Login - Registrieren
INFO - FAQ - CC2-Forum - CCPro-Forum 

 Re: ASM-Anzahl der Stapelspeicher Kategorie: Open-Micro/Open-Mini/Open-Midi/Open-Macro/Open-Maxi (von Dietmar, Homepage - 4.10.2011 20:13)
 Als Antwort auf ASM-Anzahl der Stapelspeicher von GeKue - 4.10.2011 12:51
Dietmar nutzt:  Open-Micro, Open-Mini, Open-Midi, Open-Macro, Open-Mini M-Unit, Open-Mini Station, sonstige
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

Bisherige Antworten:

Re: ASM-Anzahl der Stapelspeicher (von GeKue - 11.10.2011 10:33)