Funktionsaufruf mit Variable in Assembler aus C
-
Hallo zusammen,
ich arbeite mit einem PIC24h von Microchip, MATLAB IDE v8.00 und einem C30-Compiler. Das aber nur nebenbei.
Ich möchte aus einem C-Programm eine Variable an eine Assembler-Routine weitergeben, die mit dieser Variablen wiederum eine vorimplementierte Routine aufruft. Inline assembling möchte ich ausschließen, ausser es geht wirklich nicht anders. Wenn Euch beim ersten drübergucken über den Code etwas direkt auffällt, wäre ich euch für Tips und Hinweise sehr dankbar. Ich habe leider noch nicht wirklich viel Erfahrung mit C und Assembler, ist also möglicherweise nur ein ganz dummer Fehler
header-Datei
extern int asm_read_word (int); int PROG_ADDR;
main.c
PROG_ADDR=0xff//0xff ist nur ein Beispiel asm_read_word(PROG_ADDR);
assembler
.text .global _asm_read_word ; ;Read Word Mode ; _asm_read_word: ;Set up the address pointer to program space MOV #tblpage(#PROG_ADDR),W0 ; get table page value MOV W0,TBLPAG ; load TBLPAG register MOV #tbloffset(#PROG_ADDR),W0 ; load address LS word ; Read the program memory location TBLRDH [W0],W3 ; Read high byte to W3 TBLRDL [W0],W4 ; Read low word to W4 return .end
der Aufruf #tblpage() und #tbloffset() ist vordefiniert.