首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

Keil嵌入汇编的源码分析

Keil嵌入汇编的源码分析

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
返回列表