汇编语言和c51混合编程,C51与汇编语言混合编程

C51与汇编语言混合编程

C51与汇编语言混合编程

1、函数内部混合编程

若想在C语言函数内部使用汇编语言,应使用以下Cx51编译器控制命令: #pragma asm

;;; Assembly code

#pragma endasm

功能作用:

asm和endasm命令用于将其标记的汇编程序合并到.SRC文件中。这个带有asm和endasm块标记的源程序可看作是在线嵌入式汇编程序。从这点来说,此命令有些类似于#define命令。 具体实现:

(1)编译器设置及SRC文件的产生

.SRC文件在命令行编译模式下是使用SRC编译器控制命令产生的,在IDE环境中可以为需要产生SRC文件的C源文件设置特定选项:

右键单击Project Workspace下的文件标签

选择Options for file … 项,打开Options – Properties 页。

选中Generate Assembler SRC file 项

选中Assembler SRC file项

(2)添加库文件

根据选择的编译模式,把相应的库文件添加到工程下面,如在”small”模式下,需将”keil\c51\lib\c51s.lib”文件加入工程中。在Keil安装目录下的\C51\LIB\ 目录的LIB 文件如下: C51S.LIB

C51C.LIB

C51L.LIB - 没有浮点运算的 Small model - 没有浮点运算的 Compact model - 没有浮点运算的 Large model

C51FPS.LIB - 带浮点运算的 Small model

C51FPC.LIB - 带浮点运算的 Compact model

C51FPL.LIB - 带浮点运算的 Large model

若未添加此库文件,则会提示” UNRESOLVED EXTERNAL SYMBOL ”警告。

如上设置后,编译,IDE会生成汇编源文件(.SRC)并由汇编器将此文件转化成目标文件(.OBJ)。

注意事项:

(1) 此时在汇编语言中虽可以加标签,以执行一些跳转类指令,但要注意不要与编译器产

生的其他标签相同。

(2) 在遵循了Cx51参数的调用规则后,如在向该函数传递一char数时,编译器会将其编

译成通过R7传递,此时在汇编语言若直接调用R7,会出现定义的变量(形参)未调用警告。

2、 函数外部混合编程

具体实现:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值