汇编和C语言哪个好?

   汇编语言和C语言哪个更好呢?哪个更适合作为单片机程序语言呢?对于这个问题,单片机初学者都会感到很疑惑。

       现在普遍用C的比较多,因为C有很好的结构性与模块化,,C比汇编更容易阅读与维护,而C功能化的代码有更好的移植性,方便从一个工程移植到另一个工程,而且C更符合人们的思考习惯。既然你汇编与C都学过,那你一定知道汇编在编程时往往要考虑细节问题,长的程序如几百行甚至上千行的代码你在调试时由于汇编的可读性较差,会花费大量的时间来调试。往往是一个小细节问题会让你搞半天,而结构化的C往往只需要考虑算法而无需过多考虑细节问题,同时可读性好,调试时间也大大减少。特别是在编写较大工程时,C用起来比较顺。
每种单片机基本有其自身一套机器语言,有些相差不大,有些相差比较大,所以你在使用不同单片机时要先了解其汇编语言,与单片机的内部硬件结构,但C就不存在这个问题,只要了解单片机的相应功能的寄存器,就可以编程。基于上述C的优点,现在市场C的需求多些。
       我的意见是:两种语言都应该能较熟的掌握。因为汇编的优点在于语句执行时序的精确性,执行效率高,对一些时钟要求很高的系统,汇编比较容易实现。如果能做到C与汇编联合编程。市场需求会更大。
       对于单片机开发,C语言又扩充了一部分数据类型:
 sfr:特殊功能寄存器声明;
sfr16:sfr的16位数据;
sbit:特殊功能位声明;
bit:位变量声明;
      例:sfr SCON = 0X98;(SCON是串行口控制寄存器名称,这里只是举个例子,大家不明白也没关系)
             sfr16 T2 = 0xCC;(以0x开头的数据是十六进制的数A代表10,B代表11,以下类推,直至F代表15,字母大小写无所谓)
             sbit OV = PSW^2;
             C语言开发单片机时需要在开头写上有关头文件,对于头文件,学过C语言的同学都知道,相当于把一些函数或者变量已经声明好,可以直接使用,经常使用的头文件有:
            通常有:reg51.h reg52.h math.h   ctype.h   stdio.h  stdlib.h  absacc.h  intrins.h(这里不要求全记住,只要用到reg.51或者reg.52即可)
            常用有:reg51.h reg52.h
          (定义特殊功能寄存器和位寄存器);
            math.h  (定义常用数学运算);
 

猜你喜欢

转载自blog.51cto.com/14355585/2412405