转载自:http://www.keil.com/support/docs/2308.htm
C51: GETTING INLINE ASSEMBLY TO WORK
Information in this article applies to:
- C51 All Versions
QUESTION
How do I implement inline assembly in C51 using the ASM and ENDASM directives. I have read some of the knowledgebase articles relating to this problem, but I still cannot get it to work.
ANSWER
The following example program, MAIN.C, demonstrates some simple inline assembly.
void main(void){ test(); #pragma asm JMP $ ; endless loop #pragma endasm }
The following rules apply to C51 inline assembly:
- To use #pragma ASM/ENDASM, you must set the Generate Assembler SRC File andAssemble SRC File source file compile options in µVision by right-clicking your source file name in the Project Workspace and selectingOptions for File.
- When using the Generate Assembler SRC File and Assemble SRC File options in µVision, if there are no other C modules in your project, you must manually include the C51 Run-Time Library (C51S.LIB, C51M.LIB, or C51L.LIB).
MORE INFORMATION
- Refer to ASM in the Cx51 User's Guide.
- Refer to Interfacing C to Assembler in the Cx51 User's Guide.
SEE ALSO
- C51: PROBLEMS WITH #PRAGMA ASM
- GENERAL: SRC DIRECTIVE
- BL51: WARNING L1 (UNRESOLVED EXTERNAL) USING INLINE ASSEMBLY
- C51: INLINE ASSEMBLY GENERATES TARGET OUT OF RANGE
- C51: IN-LINE ASM GIVES COMPILER WARNINGS
FORUM THREADS
The following Discussion Forum threads may provide information related to this topic.
Last Reviewed: Thursday, July 17, 2008