Hallo zusammen!
Ich nutze z.Zt. die DEMO-Version von Bascom in Verb. mit einem ATmega16 ohne IRQ-Routinen. Für einige globale Funktionen nutze ich Bascom (LCD, CONFIGs, etc.) muß aber viele Dinge in Assembler realisieren. Mein Problem dabei: nirgendwo scheint dokumentiert welche BASCOM-Funktion nun intern welche Register belegt und welche nicht. Es ist auch schwierig, jeden BASCOM-Befehl durch den Simulator laufen zu lassen um zu sehen welche Register verwendet wurden... Dazu kommt, das der Simulator leider fehlerhaft ist: als Beispiel führt der Simulator einen BREQ-Befehl aus (verzweigt also), im µC-Register wird aber gleichzeitig Z=0 angezeigt! Bei der gemischten (zulässigen) Nutzung von BASCOM/ASM kommt es eben vor, das ich r20 nutze, dann eine BASCOM-Zeile abarbeite, und danach - bei einer weiteren Nutzung von r20 - Fehler auftreten.
Meine erste Register-Nutzungs-Untersuchung hat folgendes ergeben:
1) Definitiv BASCOM-genutzt..: R4, R5, R6, R8, R9, R23, R24.
2) BASCOM-Befehlsabhängig genutzt: R0, R10, R11, R16...R21, R25, R26, R27, R30, R31.
3) Für ASM nutzbar: R12, R13, R14, R15 sowie R19, R20, R21, R22 (R28, R29).
Meine Frage: hat jemand eine Ahnung, welche Register AUF KEINEM Fall von Bascom genutzt/verändert werden??
Ich nutze z.Zt. die unter 3) aufgelisteten Register für meine Zwecke in ASM. Dies sollte gutgehen (bei r19/r20 habe ich meine Zweifel). Jemand gleicher Meinung?
Ich möchte im jetzigen Zeitpunkt nicht auf Bascom verzichten, da ja einiges leichter von der Hand geht als bei 100% Assembler-Prog.
Dennoch bin ich recht verwirrt, das Bascom ja fast alle Register zu irgendwelchen Zeitpunkt irgenwie nutzt. Leider gibt es von MCS keine mir bekannte Liste mit den genutzten Registern.
Vielen Dank für eure Hilfe...
Mega128
Lesezeichen