Keil软件“C语言”与“汇编”混编

相关知识整理

用Keil在C中嵌入汇编1

在Keil中嵌入汇编2

介绍直接嵌入汇编代码的方法4

采用汇编可能会有的好处5

Keil C语言与汇编语言混合编程7

深入剖析Keil C51 —— 从汇编到C519

C语言和汇编语言的变量以及函数的接口问题14

汇编与C语言混合编程的关键问题15

KEIL段重定位16

用Keil在C中嵌入汇编

早前公布了C和汇编混编的温度控制器程序,收到一些朋友的询问,他们无法在自己程序中使用我的18B20的汇编子程序或无法正常通过混编后的程序编译。

其实在KEIL中嵌入汇编的方法很简单。如图一,在C文件中要嵌入汇编的地方用#pragma asm和#pragma endasm分隔开来,这样编译时KEIL就知道这中间的一段是汇编了。

图1 在有加入汇编的文件中,还要设置编译该文件时的选项

图2 Generate Assembler SRC File 生成汇编SRC文件

Assemble SRC File 封装汇编文件

(如图三的状态为选中)

选上这两项就可以在C中嵌人汇编了,设置后在文件图示中多了三个红色的小方块。

图3 为了能对汇编进行封装还要在项目中加入相应的封装库文件, 在笔者的项目中编译模式是小模式所以选用C51S.LIB。这也是最常用的。这些库文件是中KEIL安装目录下的LIB目录中。 加好后就可以顺利编译了。(注:我只在7.0以上版本使用过)

图4

在Keil中嵌入汇编

1、其实在KEIL中嵌入汇编的方法很简单。如图1,在C文件中要嵌入汇编的地方用#pragma asm和#pragma endasm分隔开来,这样编译时KEIL就知道这中间的一段是汇编了。

2、在有加入汇编的文件中,还要设置编译该文件时的选项,如图2所示。

3、Generate Assembler SRC File 生成汇编SRC文件

Assemble SRC File 封装汇编文件

(如图3的状态为选中)

? 选上这两项就可以在C中嵌人汇编了,设置后在文件图示中多了三个红色的小方块

4、为了能对汇编进行封装还要在项目中加入相应的封装库文件, 在笔者的项目中编译模式是小模式所以选用C51S.LIB。这也是最常用的。这些库文件是中KEIL安装目录下的LIB目录中。 加好后就可以顺利编译了

1、在 C 文件中要嵌入汇编代码片以如下方式加入汇编代码:

#pragma ASM

; Assembler Code Here

#pragma ENDASM

2、在 Project 窗口中包含汇编代码的 C 文件上右键,选择“Options for ...”,点击右边的“Generate Assembler SRC File”和“Assemble SRC File”,使检查框由灰色变成黑色(有效)状态;

3、根据选择的编译模式,把相应的库文件(如 Small 模式时,是 Keil\C51\Lib\C51S.Lib)加入工程中, 该文件必须作为工程的最后文件;

C51编译器能对C语言程序进行高效率的编译,生成高效简洁的代码,在大多数的应用场合,采用C语言编程即可完成预期的任务,但是,在有些场合还是会用到汇编,例如在下面的几种情况下,采用汇编可能会有很多好处:电子园51单片机学习网|;eWu]E

1、已有程序的移植:在单片机领域工作很久的工程人员可能会保留有很多的早期用汇编语言编制的程序模块,并且这些模块已经经过实际应用的验证,如果重新用C编程,可能工作量很大,这时就可以用嵌入汇编的方式把以前的汇编模块植入新的应用,可以明显的加快开发的进度。

^5WhX)Ouq3g446062、局部功能需要足够短的执行时间:在有些应用中,部分的功能模块需要有很高的执行效率,而有些汇编的指令在C中没有对应的指令,这给我们对单片机的高效操作带来困难,嵌入汇编可是我们的程序执行更有效率。

&K0u.g.{S(Q446063、对一些特定地址进行操作:在C中我们要对特定地址进行读写,一般用以下两种方式:用_AT_指令定义变量;定义指向外部端口或数据地址的指针;在汇编中只需要使用MOVX A,@DPTR或MOVX @DPTR,A就可以了,这样可以增强程序的可读性。

?&B{&oY]D)x6x'x&x446064、其他的需要汇编的应用:在这里我们不可能举出所有可能要用汇编的例子,在你的应用中,你可能在一个或多个应用中感到C语言的不足,而需要用到汇编指令,请你记住,可以在C中嵌入汇编子程序,这对你的程序非常有用。

9h3{;`oVO$F$QUN6{)s4460

keil C对lib封装库反汇编成C语言,Keil软件“C语言”及“汇编”混编 —— 相关知识整理.doc...相关推荐

  1. keil c语言pdf,Keil软件“C语言”与“汇编”混编 —— 相关知识整理.pdf

    Keil软件"C语言"与"汇编"混编 -- 相关知识整理.pdf Keil 软件软件C 语言语言与与汇编汇编混编混编 相关知识整理相关知识整理 用 Keil 在 ...

  2. bazel 链接第三方动态库_C/C++编程知识:Linux 动态库相关知识整理

    动态库和静态库在C/C++开发中很常见,相比静态库直接被编译到可执行程序,动态库运行时加载使得可执行程序的体积更小,更新动态库可以不用重新编译可执行程序等诸多好处.作者是一个Linux后台开发,这些知 ...

  3. 将如下c语言代码汇编成s文件,gcc编译c语言程序

    编译:当前源代码编译成二进制目标文件(.obj文件) 链接(link):将生成的.obj文件与库文件.lib等文件链接,生成可执行文件(.exe文件). 一个现代编译器的主要工作流程如下: 源程序(s ...

  4. kicad 自动生成封装库_【工具】KiCad版本嘉立创SMT贴片库及问题说明

    原理图库由工具直接生成,封装库先在AD中转换成PCAD ASCII格式,再通过工具转成KiCad格式 KiCad立创贴片库特点: 1. 原理图库支持AD集成库中所有元件,并且包含元件中所有文字字段,原 ...

  5. Keil C 里面Lib库文件的生成与调用

    附件里是制作方法介绍,还有LCD1602的例子,有视频教程,呵呵,自己做的. Keil C里面 lib文件生成方法 包含关系 LCD1602.C里面包含LCD1602.H LCD1602.H的文件格式 ...

  6. lib库反编译C语言,C语言静态链接库(lib)与动态链接库(dll)

    今天看到了之前的笔记,看到之前写的笔记,感觉自己都不认得了~~一.静态链接库(lib) 首先创建    "在VC6中创建项目:Win32 Static Library" 在项目中创 ...

  7. mqttjar包_GitHub - a-voyager/MqttLib: Mqtt 通信封装库.

    lib.Connector --MQTT 封装库 lib.Connector 是基于 MQTT 协议的客户端/服务端通信库, 主要解决恶劣网络环境通信和数据帧格式的问题, 适用于物联网设备间通信. 特 ...

  8. C++中.lib静态库、.dll动态库的生成及调用1

    一.前言 1.动态链接库(dll)与静态链接库(lib): 动态链接库(dll)是一个可以被其他应用程序共享的程序模块,其中封装了一些可以被共享的例程和资源.在链接步骤中,连接器将从库文件取得所需的代 ...

  9. Kicad如何导入封装库、符号库(元件库)以及3D模型文件?

    简介 Kicad自带了一些基础的符号库,但是如果我们想使用的一些指定类型的元器件不在其中怎么办? 我们可以去一些开源的符号官网中去下载并导入到Kicad中就可以了,如果你使用的是指定厂家的元器件那么理 ...

最新文章

  1. C语言经典例100-将学生成绩写入文件
  2. Python(1) 整型与浮动型
  3. Programming Computer Vision with Python (学习笔记四)
  4. torch版ResNet50(带有多输出)转c++ tensorrt
  5. dev控件调用html页面,Chrome开发工具 扩展 DevTools
  6. 10 月全国程序员工资统计,一半以上的职位 5 个月没招到人!
  7. 【Computer Organization笔记06】浮点数的数据表示,浮点数加减运算
  8. Java多线程——同步容器类
  9. http2-协议协商过程
  10. failed to load ldlinux.c32
  11. python怎么通过手机号定位_基于Python的免费手机号码归属地查询
  12. 【数据库】Hive SQL 正则表达式进阶二(regexp_extract函数进阶使用)
  13. QtChart使用教程
  14. 批量合并工作簿,包含三种合并方式,Excel技能演示
  15. [极客大挑战 2019]Http 1(修改HTTP请求包)
  16. java.lang.IllegalArgumentException: There is no PasswordEncoder mapped for the id null at org.spr
  17. swift 设置启动页
  18. 基于JAVA EE的临床科室管理系统
  19. eclipse连接雷电模拟器,夜神模拟器,逍遥安卓模拟器,天天模拟器,海马玩模拟器,网易MUMU模拟器
  20. sklearn决策树--泰坦尼克号幸存者预测

热门文章

  1. 数据中心 48 V 直流供电,Vicor 如何解决“最后一英寸”电源设计难题?
  2. 十大类疫情服务紧缺 阿里广发英雄帖抗疫小程序开发者最高可获50万元奖励
  3. 云+X案例展 | 民生类:肯耐珂萨入围腾讯SaaS加速器首期成员名单
  4. 学计算机就业靠谱吗,2018年计算机专业就业怎么样?
  5. python map zip_Python学习笔记(九) map、zip和filter函数
  6. PHP读取qq群成员,js获取QQ群成员的经典代码
  7. docker sonarqube:7.7-community
  8. Elasticsearch7.15.2 mysql8.0.26 logstash-input-jdbc 数据增量索引构建
  9. list和对象数据复制CopyUtil工具类
  10. PMP考试必看的答题技巧分享