ArticleDirectory
- Question
- Answer
- More information
- See also
- Forum threads
1. How to embed Assembly commands in C language:
Reprinted from: http://www.keil.com/support/docs/2308.htm
C51: Getting inline assembly to work
Information in this article applies:
Question
How do I implement inline assembly in C51 usingASMAnd
EndasmDirectives. 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 setGenerate aggreger SRC FileAndAssemble SRC FileSource File compile options in µvision by right-clicking your source file name in the project workspace and selectingOptions
For file.
- When usingGenerate aggreger SRC FileAndAssemble SRC FileOptions 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
- ReferASMIn the cx51 user's guide.
- ReferInterfacing C to AssemblerIn 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 followingDiscussion ForumThreads may provide information related to this topic.
Last reviewed: Thursday, July 17,200 8
-- Reprinted from: http://blog.21ic.com/user1/6088/archives/2010/68469.html
Method: (assume that there is only oneCCodeFile)
The1Step: Create a project and addCFile, compiled through
The2Step: Right-clickKeilInterfaceProject WorkspaceInCFile Name, select'Option
For...'
The3Step: click'Generate aggreger SRC File''Assemble
SRC File'Check the two three-state check boxes to make them highlighted and checked. click confirm.
The4Step: SetKeilUnder the installation directoryC51/lib/c51s. Lib(If yesSmallMode) copy the file to the project directory
The5Step: Add a library fileC51s. LibFile to project, right-click'Source
Group 1', Select'Add files to group...', Select under the project directoryC51s. Lib, Click to open
(Because3Step. If no library file is added here, compileHEXThe file cannot be correctly executed by the microcontroller, and a warning will appear during compilation:
Warning L1: unresolved external symbol
Symbol:? C_startup
Unrecognized? C_startupThis label, which is defined in the library file
)
The6Step: Open the project directory and you can see that the new extension is. SRCFile, change its extension. A51
The7Step: add this. A51File to the project (this time the project containsC51s. LibLibrary file, otherwise the compilation will generate5The warning described in step and the generatedHEXFiles cannot be correctly run by single-chip microcomputer)
The8Step: recompile and generateHEXFile, loaded into the microcontroller, can be foundCThe language runs in the same way.