我们平时做单片机编程,最常使用的是C语言和汇编语言两种,但是最终下载到单片机内部的,却是HEX文件里的二进制机器代码,很多同学不懂这个过程是如何转换的。
我们的程序开发环境,比如KEIL和伟福等等,都是可以使用C或者汇编语言来编程的。对于C语言来讲,一旦我们编程完毕,就可以点击编译,编译的过程,实际上首先通过
“编译器”将C语言翻译成汇编语言,再通过“汇编器”将汇编语言转化成机器代码,最终可以下载到单片机中的是机器代码。
细心的同学能够看出,我写的“C到汇编”,是“翻译”,"汇编到机器代码",是“转化”。对于编译器来讲,将C转化成汇编的时候,不是一一对应的关系,也就是说几行C代码,可能翻译成几十行。而汇编语言和机器代码,从某种意义来讲,是一个东西,两者是一一对应的关系。因此,如果我们直接使用汇编语言写的程序,就可以直接跳过“编译器”,通过汇编器将我们写的汇编语言转化成机器代码。
我们早期的程序员,大多使用汇编代码。通常程序员自己写的汇编代码,比编译器转化的汇编代码效率要高,执行速度快,占用空间也小。随着高级语言的诞生,CPU速度的提升和程序存储空间的不断增大,我们开始使用高级语言C来编写程序代码。C语言开发的优势在于开发方便,移植容易,可维护性强,有类似的项目,直接移植过来,不需要重复开发了。
但是这并不意味着汇编代码被淘汰了,汇编语言的意义,更重要在于可以通过汇编语言,可以清楚的理解CPU内部的结构及其程序运行模式。熟练掌握汇编语言对于今后学