没有合适的资源?快使用搜索试试~ 我知道了~
资源推荐
资源详情
资源评论
*4. 8 汇编语言和C语言的混合编程
本节介绍不同的模块,不同的语言相结合的编程方
法。�
通常情况下以高级语言编写主程序,用汇编语言编
写与硬件有关的子程序。不同的编译程序 高级语言对
汇编的调用方法不同,在Franklin C51中,是将不同的
模块(包括不同语言的模 块)分别汇编或编译,再通过连
接生成一个可执行文件。�
C语言程序调用汇编语言程序要注意以下几点:�
1. 被调函数要在主函数中说明,在汇编程序中,要
使用伪指令使CODE选项有效并声明为可再 定位段类型
,并且根据不同情况对函数名作转换,见表4.6。
�
说 明 符 号 名 解 释
void func(void) FUNC
无参数传递或不含寄存器参数的
函数名不作改变转入目标文件中
,名字只是简单的转为大写形
式。
void func(char) _FUNC
含寄存器参数的函数名加入“_”字
符前缀以示区别,它表明这类函
数包含寄存器内的参数传递。
void func(void)
reentrant
_? FUNC
对于重入函数加上“_?”字符前缀
以示区别,它表明这类函数包含
栈内的参数传递。
2.对为其他模块使用的符号进行PUBLIC声明,对外来符
号进行EXTRN声明。�
3.参数的传递。�
在混合语言编程中,关键是入口参数和出口参数的传
递,Franklin C编译器可使用寄存器传递参数,也可
以使用固定存贮器或使用堆栈,由于8XX51的堆栈深
度有限,因此多用寄存器 或存贮器传递。用寄存器传
递最多只能传递三个参数,选择固定的寄存器,见表
4.7 。�
参数类型 char int long ,float
一般指针
第一个参数
第二个参数
第三个参数
R7
R5
R3
R6,R7
R4,R5
R2,R3
R4~R7
R4~R7
无
R1,R2,R3
R1,R2,R3
R1,R2,R3
例如 func1(int a) “a”是第一个参数,在R6,R7传递,
func2(int b, int c, int *d) “b”在R6,R7中传递,“c”
在R4,R5中传递,“d”在R1,R2 ,R3中传递。
如果传递参数寄存器不够用,可以使用存贮器传送,
通过指针取得参数。�
汇编语言通过寄存器或存贮器传递参数给C语言程序
,返回值见表4.8。�
返回值 寄存器 说明
bit
(unsigned)char
(unsigned)int
(unsigned)long
Float
指针
C
R7
R6,R7
R4~R7
R4~R7
R1,R2,R3
进位标志
高位在R6,低位在R7
高位在R4,低位在R7
32位IEEE格式,指数和符号位R7
R3放存储器类型,高位在R2,低位R1
剩余18页未读,继续阅读
资源评论
passionSnail
- 粉丝: 469
- 资源: 7836
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 【岗位说明】食品卫生管理员职责.doc
- 【岗位说明】食品供应人员职责.doc
- 【岗位说明】食品采购验收员职责.doc
- 【岗位说明】园长工作职责.doc
- 【岗位说明】园长助理职责.doc
- 【岗位说明】夜班工作人员职责.doc
- 【岗位说明】食堂主任岗位职责.doc
- 【岗位说明】消毒人员岗位职责.doc
- 【岗位说明】幼师岗位职责.doc
- 【岗位说明】园长岗位职责.doc
- 【岗位说明】值午睡人员岗位职责.doc
- 【岗位说明】主配班老师岗位职责.doc
- 【岗位说明】总教研组长岗位职责.doc
- 097-PR-宣传片案例剪辑技巧.mp4
- 【岗位说明】房地产办公文员岗位职责.doc
- 【岗位说明】房地产策划岗位职责.doc
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功