混合编程形式
发布时间:2016/7/14 20:15:49 访问次数:571
混合编程主要有C51内嵌汇编代码和C51调用汇编函数两种形式。
因为Keil是应用非常普遍的编译软件,下面就EPL2014-332MLC以实际操作为例进行说明。要实现在C51函 数中直接加汇编代码,需要注意以下几个方面。
①将要嵌入的汇编语句以如下方式加入:
#pragma AsM
;Asscmblcr Codc Hcrc
#pragma ENDAsM
②在P咱ect窗口中右击包含汇编代码的C文件,选择“options for。¨”选项,然后单击右边的“Generate Asselubler sRC∏lc”禾口“Assclublc sRCFile”选项,使选择框由灰色变成黑色状态。
表6.9 库文件和编译模式的选择表
没有浮点运箅的sm删modd
C51C LIB
没有浮点运算的Compact modd
C51L LIB
没有浮点运算的Large mode1
C51FPs LIB
带浮点运算的small modd
C51FPC LIB
带浮点运算的Conlpact modd
C51FPL LIB
带浮点运算的Largc modcl
③根据选择的编译模式,把Kcil\C51XLib\路径下相应的库文件加入工程中,若未添加此库文件,则会提示“tINmBOLVED EXTERNAL SYMBOL”警告。具体库文件和编译模式的选择见表6.9。
通过以上三步设置,即可编译生成目标代码。
注意事项:
①在汇编语言中可以加标签以执行跳转指令,但标签不要与编译器产生的其他标签相同;
②在遵循了C51参数的调用规则后,当要传递char参数时,编译器会将其编译成通过R7传递,此时若在汇编语言中直接调用R7,会出现定义的变量(形参)未调用警告。
混合编程主要有C51内嵌汇编代码和C51调用汇编函数两种形式。
因为Keil是应用非常普遍的编译软件,下面就EPL2014-332MLC以实际操作为例进行说明。要实现在C51函 数中直接加汇编代码,需要注意以下几个方面。
①将要嵌入的汇编语句以如下方式加入:
#pragma AsM
;Asscmblcr Codc Hcrc
#pragma ENDAsM
②在P咱ect窗口中右击包含汇编代码的C文件,选择“options for。¨”选项,然后单击右边的“Generate Asselubler sRC∏lc”禾口“Assclublc sRCFile”选项,使选择框由灰色变成黑色状态。
表6.9 库文件和编译模式的选择表
没有浮点运箅的sm删modd
C51C LIB
没有浮点运算的Compact modd
C51L LIB
没有浮点运算的Large mode1
C51FPs LIB
带浮点运算的small modd
C51FPC LIB
带浮点运算的Conlpact modd
C51FPL LIB
带浮点运算的Largc modcl
③根据选择的编译模式,把Kcil\C51XLib\路径下相应的库文件加入工程中,若未添加此库文件,则会提示“tINmBOLVED EXTERNAL SYMBOL”警告。具体库文件和编译模式的选择见表6.9。
通过以上三步设置,即可编译生成目标代码。
注意事项:
①在汇编语言中可以加标签以执行跳转指令,但标签不要与编译器产生的其他标签相同;
②在遵循了C51参数的调用规则后,当要传递char参数时,编译器会将其编译成通过R7传递,此时若在汇编语言中直接调用R7,会出现定义的变量(形参)未调用警告。
上一篇:C51函数参数传递和返回
上一篇:C51调用汇编函数