本文主要是关于汇编和 C 语言的相关介绍,并着重对汇编和 C 语言的不同及其编程技巧进行了详尽的阐述。

汇编和 C 语言

C 语言和汇编语言的区别在于他们之间优缺点几乎是相反的。

C 语言和汇编语言的优缺点:以 c 来举例

优点:

c 的运行效率高;

c 可以实现硬件的直接访问;

c 代码的移植性好;

缺点:

c 的代码复用性差;

c 的代码维护性差;

c 的扩展性差,即如果想增加新功能,需要修改较多的代码;

c 语言的可读性差;

C 语言是一门通用计算机编程语言,应用广泛。C 语言的设计目标是提供一种能以简易的方式编译、处理低级存储器、产生少量的机器码以及不需要任何运行环境支持便能运行的编程语言;尽管 C 语言提供了许多低级处理的功能,但仍然保持着良好跨平台的特性,以一个标准规格写出的 C 语言程序可在许多电脑平台上进行编译,甚至包含一些嵌入式处理器(单片机或称 MCU)以及超级电脑等作业平台。

汇编语言:是一种用于电子计算机、微处理器、微控制器或其他可编程器件的低级语言,亦称为符号语言。在汇编语言中,用助记符(Mnemonics)代替机器指令的操作码,用地址符号(Symbol)或标号(Label)代替指令或操作数的地址。在不同的设备中,汇编语言对应着不同的机器语言指令集,通过汇编过程转换成机器指令。普遍地说,特定的汇编语言和特定的机器语言指令集是一一对应的,不同平台之间不可直接移植。

汇编和 C 语言相结合的 51 单片机编程技巧

c 语言和汇编语言之间主要存在:相互调用、混合编程等关系,举例来说吧:

1、C 语言调用汇编子程序

此时,汇编子程序需要申明为外部程序

#include《reg51.h》

extern void delay(void)

sbit pluse=P1^0;

main()

{

while(1)

{

pluse=0;

delay();

pluse=1;

delay();

}

}

汇编子程序:

汇编部分需要做如此处理。

PUBLIC DELAY

DELAY SEGMENT CODE

RSEG DELAY

DELAY:

MOV R2,#250

DJNZ R2,$

RET

END

2:C 语言中嵌入汇编,这个比较简单用宏指令包含进来就可以实现。

void delay(void)

{

#pragma asm

mov r2,#250

djnz r2,$

#pragma endasm

}

浅谈如何用汇编编写模块化程序

一、主程序的书写

如上图就是结构化编程的截图,里面的 .asm 即是汇编文件的扩展名,C 语言用的是 .c 。在汇编语言中,头文件的扩展名是 .inc,而在 C 语言中头文件的扩展名是 .h。

仔细观察上图,汇编包含头文件的格式是$include(头文件完整名称),而在 C 语言中是#include“头文件完整名称”,二者有着非常相似之处。ORG 0000H ; LJMP MAIN 应该不用我解释是有什么作用的吧?ORG 指令就是指定其下面一条指令或数据的首字节按 ORG 后面的地址或标号存放到相应的存储单元。_MAIN_ASM SEGMENT CODE; RSEG _MAIN_ASM 的作用上图已经标明了,也不用多讲,需要说明的是,_MAIN_ASM 不一定要写成这样,你喜欢写什么符号都可以(如:MAINFUNC、_MAIN_FUNC、ZHUHANSHU,最后一个举例有点俗了),只要符合汇编语言变量或标号的命名规则即可。如果讲求规范,最好就按以上格式书写。还有一点就是,这段动态分配程序地址的代码可以省略,如果没有这段代码,编译器就不会动态分配程序地址了。主函数的功能大家肯定都能分析了,不然看这个教程也没什么意义了。

二、子程序的书写

下面讲的是子程序如何书写,子程序是要被调用的,你必须告诉编译器其他模块可以调用子程序模块中的哪些程序,如上所示,DELAY1MS 即是可被调用的延时函数,公共变量及函数声明用关键字 PUBLIC,后面跟函数名(标号名)。动态分配程序地址可以省略,在 main.asm 中已经讲到了。注意,子程序模块最后一行要写一个 END,没有这一句,编译器不会报错,但会出现警告,容易出现问题,为了规范编程,大家还是别偷懒了。

最后一点就是头文件的作用了,这跟 C 语言的作用一样,可以对变量或函数进行声明,这个程序比较简单,可以直接放到主程序中声明,如下图:

结语

关于汇编和 C 语言的相关介绍就到这了,如有不足之处欢迎指正。

C语言作业不足之处,C语言和汇编语言的优缺点分析-控制器/处理器-与非网相关推荐

  1. 上学期c语言作业答案,C语言作业答案4

    <C语言作业答案4>由会员分享,可在线阅读,更多相关<C语言作业答案4(3页珍藏版)>请在人人文库网上搜索. 1.班级学号姓名分数2019-2020第一学期C语言程序设计第4次 ...

  2. C语言作业(软件工程),C语言作业(软件工程)

    1.习题一 C 语言基础知识1. 写出一个 C 程序的构成2. 编写一个 C 语言程序,输出以下信息:* * * * * * * * * *How are you!* * * * * * * * * ...

  3. 交通大学c语言作业,交通大学C语言第二次作业说课讲解.docx

    交通大学C语言第二次作业 题目1 正确 满分1.00 标记题目 题干 对于传值调用(By Value)的描述,哪一个正确?(?????) 选择一项: a.?实际参数和形式参数共占相同的内存位置 b.? ...

  4. html语言作业2,HTML语言寒假作业.doc

    HTML语言寒假作业 HTML:Hypertext Markup Language超文本标记语言 第一章 页面标记HTML 文件结构 网页标题 HTML 文件的正文 二背景色彩和文字色彩 bgcolo ...

  5. c语言作业查询,C语言大作业学生成绩查询系统源代码.doc

    C语言大作业学生成绩查询系统源代码 #include #include struct student { char name[20]; char speciality[10]; int C; int ...

  6. mooc哈尔滨c语言作业答案,C语言程序设计下mooc答案

    <C语言程序设计下mooc答案>由会员分享,可在线阅读,更多相关<C语言程序设计下mooc答案(45页珍藏版)>请在人人文库网上搜索. 1.2016.03.2806.30 北京 ...

  7. 扬州大学c语言作业,扬州大学c语言0600706期末试题

    路漫漫其修远兮,吾将上下而求索- 百度文库 200606 一.单选题(每小题2分,共30分) 1.下列表示中,不是C语言合法字符常量的是(1). 2. A. '\0xff' B. '\65' C. ' ...

  8. c语言作业参考文献,c语言外文参考文献_数学类的文献 外文翻译_c 语言与面向对象的设计 习题及参考解答...

    第1章 C语言程序设计概述(1) 1.1 程序设计基础知识(2) 1.2 C语言的历史沿革及特点(9) 1.3 C语言源程序的组成.书写规则与风格(11) 1.4 C语言的字符集.标识符与关键字(15 ...

  9. c语言作业答,C语言练习作业及答案

    b = !'a'; b = !0; c = 1&&2; c = a&&2; d = a||2; d = a||c; return(0); } 运行结果 0 1 1 1 ...

最新文章

  1. 可以从max中导出静态模型并渲染了。
  2. 2019ICPC(上海) - Color Graph(二分图+状态压缩)
  3. Python的魔法方法 .
  4. media recovery oracle,Oracle非归档模式Media Recovery错误之--ORA-26040
  5. 运用计算机计算包含排斥原理,离散数学包含及排斥原理.ppt
  6. LeetCode 621. 任务调度器(贪心)
  7. web系统软件测试功能点,小程序、app、web测试的区别
  8. 四款机型全面开售 海蓝色iPhone 12 Pro最受欢迎
  9. H5页面移动端IOS键盘收起焦点错位
  10. 3-1067. 试密码
  11. Javascript字符串长度返回错误的原因
  12. OpenResty(nginx)操作mysql的初步应用
  13. 单片机c语言编程入门下載,51系列单片机C语言编程入门(下)
  14. html canvas 简单体验
  15. 查看Tomcat版本
  16. linux安装ps2键盘驱动程序,VoodooPS2Controller v1.8.25 黑苹果键盘鼠标触摸板万能驱动 _ 黑苹果乐园...
  17. uniapp 封装storage缓存
  18. 华为云从入门到实战 | 云容器服务
  19. Solr与mysql数据同步
  20. 计算机机房abc标准,ABC级数据中机房建设要求.doc

热门文章

  1. c#中Dictionary、ArrayList、Hashtable和数组 Array 的区别(转)
  2. You get a dream...you gotta protect it.
  3. 光耦驱动单向可控硅_光耦是什麽?
  4. npm run dev/build/serve
  5. 2、Flutter 填坑记录篇
  6. 10kv开关柜价格_一进三出10KV负荷开关环网柜乌兰察布
  7. 关于计算机网络的未来综述,计算机网络综述
  8. 经典回溯之火柴拼正方形
  9. linux指令查看tomcat日志
  10. 异步任务,邮箱任务,定时任务