C do 8051 pytanie - Przekazywanie argumentów z kodu C do ASM

M

mcoster

Guest
Witam, jestem opracowanie programu i postanowiłem zbudować interfejs użytkownika w języku C, ponieważ łatwiej jest, a głównym kodu w ASM, ponieważ jest to czas krytyczny. Teraz jestem w obliczu problemu! Nie wiem jak przejść formie argument część kodu C do części ASM kodu. Na przykład chcę umieścić wartości w jednym z rejestrów lub dowolnej części pamięci z wykorzystaniem C, a następnie uzyskać tę wartość za pomocą ASM. Wykonanie części ASM jest łatwe to tylko kilka poleceń MOV, ale jak zapisać wartość wewnątrz pamięci RAM lub rejestru przy użyciu C jest częścią i nie mogę zrozumieć to! Czy ktoś może mi pomóc? Głównym przykładem Code () {kod, który przechowuje wartości R0 0xC0} # pragma ASM MOV P0, # R0 Dzięki ENDASM pragma!
 
Jest to kompilator szczegółowych. Niektóre kompilatory przekazać parametry na stosie, niektóre to zrobić w rejestrach. Musisz sprawdzić w dokumentacji kompilatora, którego używasz. Istnieje inny sposób na sprawdzenie tego również. Możesz napisać transmitancji w C jako extern void ASMfunction (unsigned char), a następnie połączenia tego z C ASMfunction (parametr); Następnie można sprawdzić kod asm generowany przez kompilator C, w jaki sposób jest przekazywany parametr
 
Popatrz na przykład http://www.keil.com/support/man/docs/c51/c51_ap_at.htm char xdata tekstu [256] _at_ 0xe000 / * tablicy w xdata 0xe000 * / wewnątrz funkcji Main: tekst [0] = 'a'; Później część kodu w asm można to zrobić: MOV dptr, # E000h MOVX, @ dptr Acc teraz uzyskać "a" napisał w C Próbowałem tej samej procedury, układ wymienionych przez Ciebie jako przykład. Tak jak pan napisał: "jak przekazać argument z części kodu C do części ASM kod" i "Jak przechowywać wartości wewnątrz pamięci RAM lub rejestru przy użyciu C" Przez wiele głębokości wyjaśnienie przeczytać Cx51 instrukcji: [url [http://www.keil.com/support/man/docs/c51/c51_ap_ctoasm.htm] / url]
 
Nie można uzyskać dostępu do rejestrów bezpośrednio w C. Można jednak to zrobić za pomocą wskaźników. Bezpośredni dostęp do pamięci RAM jest również z wykorzystaniem wskaźników. Ale dostęp do rejestrów przez wskaźniki jest niebezpieczne. Ke * il ma dość dobrą dokumentację przekazywania paramters. Myślę, że to idzie tak. Na jeden bajt, że odbywa się to poprzez R7 i tak dalej.
 

Welcome to EDABoard.com

Sponsor

Back
Top