- UID
- 852722
|
Keil嵌入汇编的源码分析
将此源文件加入要编译的工程文件,将光标指向此文件,选择右键菜单Option For File Asm.C”,将属性单“Properties”中的“Generate Assembler SRC File”“Assemble SRC File”两项设置成黑体的“√”将“Link Public Only”的“√”去掉,再编译即可。用此方法可以在C源代码的任意位置用#Pragma Asm和#Pragma Endasm嵌入汇编语句。但要注意的是在直接使用形参时要小心,在不同的优化级别下产生的汇编代码有所不同,可以察看对应的.Lst文件看一看,得到正确的优化级别后,#Pragma OT(X,Speed)锁定优化级别(这里的值是0-9)。
//<Asm.H>
#Ifdef ASM
Unsigned Long ShiftR1(Register Unsigned Long);
#Else
Extern Unsigned Long ShiftR1(Register Unsigned Long);
#Endif
//End Of Asm.H
//<Asm.C>
#Define ASM
#Include <Asm.H>
#Include <Reg52.H>
#Pragma OT(4,Speed)
Unsigned Long ShiftR1(Register Unsigned Long X)
{
#Pragma Asm
Clr C
Mov A,R4
Rrc A
Mov R4,A
Mov A,R5
Rrc A
Mov R5,A
Mov A,R6
Rrc A
Mov R6,A
Mov A,R7
Rrc A
Mov R7,A
#Pragma Endasm
Return(X);
}
//End Of Asm.C
|
|