初学者到底是应该先学C还是汇编_第1页
初学者到底是应该先学C还是汇编_第2页
初学者到底是应该先学C还是汇编_第3页
初学者到底是应该先学C还是汇编_第4页
初学者到底是应该先学C还是汇编_第5页
已阅读5页,还剩1页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

-.z.初学者到底是应该先学C还是汇编?答:对于单片机的初学者来说,应该从汇编学起。因为汇编语言是最接近机器码的一种语言,可以加深初学者对单片机各个功能模块的了解,从而打好扎实的根底。汇编语言(AssemblyLanguage)是面向机器的程序设计语言。在汇编语合中,用助记符(Memoni)代替操作码,用地址符号(Symbol)或标号(Label)代替地址码。这样用符号代替机器语言的二进制码,就把机器语言变成了汇编语言。于是汇编语言亦称为符号语言。使用汇编语言编写的程序,机器不能直接识别,要由一种程序将汇编语言翻译成机器语言,这种起翻译作用的程序叫汇编程序,汇编程序是系统软件中语言处理系统软件。汇编程序把汇编语言翻译成机器语言的过程称为汇编。汇编语言是一种功能很强的程序设计语言,也是利用计算机所有硬件特性并能直接控制硬件的语言。汇编语言,作为一门语言,对应于高级语言的编译器,需要一个"汇编器〞来把汇编语言原文件汇编成机器可执行的代码。汇编语言的长处在于编写高效且需要对机器硬件准确控制的程序。大多数情况下Linu*程序员不需要使用汇编语言,因为即便是硬件驱动这样的底层程序在Linu*操作系统中也可以完全用C语言来实现,再加上GCC这一优秀的编译器目前已经能够对最终生成的代码进展很好的优化,确实有足够的理由让我们可以暂时将汇编语言抛在一边了。但实际情况是Linu*程序员有时还是需要使用汇编,或者不得不使用汇编,理由很简单:精简、高效和libc无关性。假设要移植Linu*到*一特定的嵌入式硬件环境下,首先必然面临如何减少系统大小、提高执行效率等问题,此时或许只有汇编语言能帮上忙了。优点汇编语言直接同计算机的底层软件甚至硬件进展交互,它具有如下一些优点:〔1〕能够直接访问与硬件相关的存储器或I/O端口;〔2〕能够不受编译器的限制,对生成的二进制代码进展完全的控制;〔3〕能够对关键代码进展更准确的控制,防止因线程共同访问或者硬件设备共享引起的死锁;〔4〕能够根据特定的应用对代码做最正确的优化,提高运行速度;〔5〕能够最大限度地发挥硬件的功能。缺点同时还应该认识到,汇编语言是一种层次非常低的语言,它仅仅高于直接手工编写二进制的机器指令码,因此不可防止地存在一些缺点:〔1〕编写的代码非常难懂,不好维护;〔2〕很容易产生bug,难于调试;〔3〕只能针对特定的体系构造和处理器进展优化;〔4〕开发效率很低,时间长且单调。特点汇编语言比机器语言易于读写、调试和修改,同时具有机器语言全部优点。但在编写复杂程序时,相对高级语言代码量较大,而且汇编语言依赖于具体的处理器体系构造,不能通用,因此不能直接在不同处理器体系构造之间移植。对于不同型号的计算机,有着不同的构造的汇编语言汇编语言是面向具体机型的,它离不开具体计算机的指令系统,因此,对于不同型号的计算机,有着不同的构造的汇编语言,而且,对于同一问题所编制的汇编语言程序在不同种类的计算机间是互不相通的。汇编语言中由于使用了助记符号,用汇编语言编制的程序输入计算机,计算机不能象用机器语言编写的程序一样直接识别和执行,必须通过预先放入计算机的"汇编程序"中进展加工和翻译,才能变成能够被计算机直接识别和处理的二进制代码程序。用汇编语言等非机器语言书写好的符号程序称为源程序,运行时汇编程序要将源程序翻译成目标程序。目标程序是机器语言程序,当它被安置在内存的预定位置上,就能被计算机的CPU处理和执行。汇编语言像机器指令一样,是硬件操作的控制信息,因而仍然是面向机器的语言,使用起来还是比拟繁琐费时,通用性也差。但是,汇编语言用来编制系统软件和过程控制软件,其目标程序占用内存空间少,运行速度快,有着高级语言不可替代的用途。应用汇编语言作为最根本的编程语言之一,汇编语言虽然应用的范围不算很广,但重要性却勿庸置疑,因为它能够完成许多其它语言所无法完成的功能。就拿Linu*内核来讲,虽然绝大局部代码是用C语言编写的,但仍然不可防止地在*些关键地方使用了汇编代码,其中主要是在Linu*的启动局部。由于这局部代码与硬件的关系非常密切,即使是C语言也会有些力不从心,而汇编语言则能够很好扬长避短,最大限度地发挥硬件的性能。1.70%以上的系统软件是用汇编语言编写的。2.*些快速处理、位处理、访问硬件设备等高效程序是用汇编语言编写的。3.*些高级绘图程序、视频游戏程序是用汇编语言编写的。汇编语言是理解整个计算机系统的最正确起点和最有效途径,人们经常认为汇编语言的应用范围很小,而无视它的重要性。其实汇编语言对每一个希望学习计算机科学与技术的人来说都是非常重要的,是不能不学习的语言。所有可编程计算机都向人们提供机器指令,通过机器指令人们能够使用机器的逻辑功能。所有程序,不管用何种语言编制,都必须转成机器指令,运用机器的逻辑功能,其功能才能得以实现。机器的逻辑功能,软件系统功能构筑其上,硬件系统功能运行于下。汇编语言直接描述机器指令,比机器指令容易记忆和理解。通过学习和使用汇编语言,能够感知、体会、理解机器的逻辑功能,向上为理解各种软件系统的原理,打下技术理论根底;向下为掌握硬件系统的原理,打下实践应用根底。学习汇编语言,向上可以理解软件,向下能够感知硬件,是我们理解整个计算机系统的最正确起点c语言C语言是一种计算机程序设计语言。它既具有高级语言的特点,又具有汇编语言的特点。它由美国贝尔研究所的于1972年推出。1978后,C语言已先后被移植到大、中、小及微型机上。它可以作为工作系统设计语言,编写系统应用程序,也可以作为应用程序设计语言,编写不依赖计算机硬件的应用程序。它的应用范围广泛,具备很强的数据处理能力,不仅仅是在软件开发上,而且各类科研都需要用到C语言,适于编写系统软件,三维,二维图形和动画。具体应用比方单片机以及嵌入式系统开发。历史C语言的祖先是BCPL语言。1967年,剑桥大学的MartinRichards对CPL语言进展了简化,于是产生了BCPL〔BasicbinedProgrammingLanguage)语言。1970年,美国贝尔实验室的KenThompson。以BCPL语言为根底,设计出很简单且很接近硬件的B语言〔取BCPL的首字母〕。并且他用B语言写了第一个UNI*操作系统。在1972年,美国贝尔实验室的在B语言的根底上最终设计出了一种新的语言,他取了BCPL的第二个字母作为这种语言的名字,这就是C语言。为了使UNI*操作系统推广,1977年DennisM.Ritchie发表了不依赖于具体机器系统的C语言编译文本"可移植的C语言编译程序"。1978年由美国电报公司(AT&T)贝尔实验室正式发表了C语言。同时由和合著了著名的"TheCProgrammingLanguage"一书。通常简称为"K&R",也有人称之为"K&R"标准。但是,在"K&R"中并没有定义一个完整的标准C语言,后来由美国国家标准化协会〔AmericanNationalStandardsInstitute〕在此根底上制定了一个C语言标准,于一九八三年发表。通常称之为ANSIC。K&R第一版在很多语言细节上也不够准确,对于pcc这个"参照编译器〞来说,它日益显得不切实际;K&R甚至没有很好表达它所要描述的语言,把后续扩展扔到了一边。最后,C在早期工程中的使用受商业和政府合同支配,这意味着一个认可的正式标准是必需的。因此〔在M.D.McIlroy的催促下〕,ANSI于1983年夏天,在CBEMA的领导下建立了*3J11委员会,目的是产生一个C标准。*3J11在1989年末提出了一个他们的报告[ANSI89],后来这个标准被ISO承受为ISO/IEC9899-1990。1990年,国际标准化组织ISO〔InternationalOrganizationforStandards〕承受了89ANSIC为ISOC的标准〔ISO9899-1990〕。1994年,ISO修订了C语言的标准。1995年,ISO对C90做了一些修订,即"1995基准增补1〔ISO/IEC/9899/AMD1:1995〕〞。1999年,ISO又对C语言标准进展修订,在根本保存原来C语言特征的根底上,针对应该的需要,增加了一些功能,尤其是对C++中的一些功能,命名为ISO/IEC9899:1999。2001年和2004年先后进展了两次技术修正。目前流行的C语言编译系统大多是以ANSIC为根底进展开发的,但不同版本的C编译系统所实现的语言功能和语法规则又略有差异。2021年12月,ISO正式公布C语言新的国际标准草案:ISO/IEC9899:2021。新的标准修提高了对C++的兼容性,并将新的特性增加到C语言中。新功能包括支持多线程,基于ISO/IECTR19769:2004标准下支持Unicode,提供更多用于查询浮点数类型特性的宏定义和静态声明功能。特点1.C是高级语言。它把高级语言的根本构造和语句与低级语言的实用性结合起来。C语言可以像汇编语言一样对位、字节和地址进展操作,而这三者是计算机最根本的工作单元。2.C是构造式语言。构造式语言的显著特点是代码及数据的分隔化,即程序的各个局部除了必要的信息交流外彼此独立。这种构造化方式可使程序层次清晰,便于使用、维护以及调试。C语言是以函数形式提供应用户的,这些函数可方便的调用,并具有多种循环、条件语句控制程序流向,从而使程序完全构造化。3.C语言功能齐全。具有各种各样的数据类型,并引入了指针概念,可使程序效率更高。而且计算功能、逻辑判断功能也比拟强大,可以实现决策目的的游戏。4.C语言适用范围大。适合于多种操作系统,如Windows、DOS、UNI*等等;也适用于多种机型。C语言对编写需要硬件进展操作的场合,明显优于其它高级语言,有一些大型应用软件也是用C语言编写的。特色指针是C语言的一大特色,可以说是C语言优于其它高级语言的一个重要原因。就是因为它有指针,可以直接进展靠近硬件的操作,但是C的指针操作不做保护,也给它带来了很多不平安的因素。C++在这方面做了改良,在保存了指针操作的同时又增强了平安性,受到了一些用户的支持,但是,由于这些改良增加语言的复杂度,也为另一局部所诟病。Java则吸取了C++的教训,取消了指针操作,也取消了C++改良中一些备受争议的地方,在平安性和适合性方面均取得良好的效果,但其本身解释在虚拟机中运行,运行效率低于C++/C。一般而言,C,C++,java被视为同一系的语言,它们长期占据着程序使用榜的前三名。入门1.一个C语言源程序可以由一个或多个源文件组成。2.每个源文件可由一个或多个函数组成。3.一个源程序不管由多少个文件组成,都有一个且只能有一个main函数,即主函数。4.源程序中可以有预处理命令(包括include命令、if命令、pragma命令),预处理命令通常应放在源文件或源程序的最前面。5.每一个说明,每一个语句都必须以分号结尾。但预处理命令,函数头和花括号"}〞之后不能加分号。6.标识符,关键字之间必须至少加一个空格以示间隔。假设已有明显的间隔符,也可不再加空格来间隔。优点简洁紧凑、灵活方便C语言一共只有32个关键字,9种控制语句,程序书写形式自由,区分大小写。把高级语言的根本构造和语句与低级语言的实用性结合起来。C语言可以像汇编语言一样对位、字节和地址进展操作,而这三者是计算机最根本的工作单元。运算符丰富C语言的运算符包含的范围很广泛,共有34种运算符。C语言把括号、赋值、强制类型转换等都作为运算符处理。从而使C语言的运算类型极其丰富,表达式类型多样化。灵活使用各种运算符可以实现在其它高级语言中难以实现的运算。数据类型丰富C语言的数据类型有:整型、实型、字符型、数组类型、指针类型、构造体类型、共用体类型等。能用来实现各种复杂的数据构造的运算。并引入了指针概念,使程序效率更高。另外C语言具有强大的图形功能,支持多种显示器和驱动器。且计算功能、逻辑判断功能强大。同时对于不同的编译器也有各种C是构造式语言构造式语言的显著特点是代码及数据的分隔化,即程序的各个局部除了必要的信息交流外彼此独立。这种构造化方式可使程序层次清晰,便于使用、维护以及调试。C语言是以函数形式提供应用户的,这些函数可方便的调用,并具有多种循环、条件语句控制程序流向,从而使程序完全构造化。语法限制不太严格,程序设计自由度大虽然C语言也是强类型语言,但它的语法比拟灵活,允许程序编写者有较大的自由度。允许直接访问物理地址,对硬件进展操作由于C语言允许直接访问物理地址,可以直接对硬件进展操作,因此它既具有高级语言的功能,又具有低级语言的许多功能,能够像汇编语言一样对位、字节和地址进展操作,而这三者是计算机最根本的工作单元,可用来写系统软件。生成目标代码质量高,程序执行效率高一般只比汇编程序生成的目标代码效率低10~20%。适用范围大,可移植性好C语言有一个突出的优点就是适合于多种操作系统,如DOS、

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论