什么是机器语言,汇编语言和高级语言
机器语言是一种指令集的体系。这种指令集,称机器码(machine code),是电脑的CPU可直接解读的数据。机器码有时也被称为原生码(Native Code),这个名词比较强调某种编程语言或库,它与运行平台相关的部份。
汇编语言是一种用于电子计算机、微处理器、微控制器或其他可编程器件的低级语言,亦称为符号语言。在汇编语言中,用助记符(Mnemonics)代替机器指令的操作码,用地址符号(Symbol)或标号(Label)代替指令或操作数的地址。
高级语言相对于机器语言,是一种指令集的体系。这种指令集,称机器码(machine code),是电脑的CPU可直接解读的数据)而言。是高度封装了的编程语言,与低级语言相对。它是以人类的日常语言为基础的一种编程语言。
扩展资料:
1、机器语言的特点
机器语言是用二进制代码表示的计算机能直接识别和执行的一种机器指令的集合。它是计算机的设计者通过计算机的硬件结构赋予计算机的操作功能。机器语言具有灵活、直接执行和速度快等特点。
不同型号的计算机其机器语言是不相通的,按着一种计算机的机器指令编制的程序,不能在另一种计算机上执行。
2、高级语言的特点
计算机语言具有高级语言和低级语言之分。而高级语言又主要是相对于汇编语言而言的,它是较接近自然语言和数学公式的编程,基本脱离了机器的硬件系统,用人们更易理解的方式编写程序。编写的程序称之为源程序。
高级语言并不是特指的某一种具体的语言,而是包括很多编程语言,如流行的java,c,c++,C#,pascal,python,lisp,prolog,FoxPro,易语言,中文版的C语言习语言等等,这些语言的语法、命令格式都不相同。
3、汇编语言的特点
汇编语言是直接面向处理器(Processor)的程序设计语言。处理器是在指令的控制下工作的,处理器可以识别的每一条指令称为机器指令。
每一种处理器都有自己可以识别的一整套指令,称为指令集。处理器执行指令时,根据不同的指令采取不同的动作,完成不同的功能,既可以改变自己内部的工作状态,也能控制其它外围电路的工作状态。
参考资料来源:百度百科--机器语言
参考资料来源:百度百科--高级语言
参考资料来源:百度百科--汇编语言
2018-01-05 · 知道合伙人数码行家
知道合伙人数码行家
向TA提问 私信TA
计算机执行的二进制命令,都是0和1表示的。
2. 汇编语言
具有一定意义的文字命令,与机器语言一一对应。汇编语言可以通过汇编得到机器语言,机器语言可以通过反汇编得到汇编语言。汇编过程还包括变量内存管理,即经过汇编之后所有的变量和函数都变成了地址,而常量也变成了对应的值。
但是汇编语言还是不够直观,一个简单的动作需要大量的语句来描述,因此又有了高级语言。
3. 高级语言
更简单,符合人们的习惯,也更容易理解和修改。高级语言经过编译器编译之后可以得到目标程序。
编译器的作用就是把高级语言的源代码转换成对应平台的目标代码。高级语言书写比较简单,但是翻译起来比较复杂,同样的高级语言语句可以有不同的机器语言实现方法。因此同一段高级语言经过不同的编译器编译之后会得到不同的目标程序,就是说高级语言与汇编/机器语言之间不再是一一对应的关系了。上面说到汇编之后源代码中的变量都变成了地址,所以用可执行文件(如exe等)进行反汇编之后得到的也是一堆地址,几乎不可能得到源代码。
另外,关于跨平台,也是针对源代码而言的。一段源代码转移到另一个平台上要经过重新编译、重新获得目标程序才能运行,前提是源代码没有依赖于平台的特性。不过即使源代码对平台有依赖性,重新编译后也可以进行一定改动再使用。
用高级语言不需要懂计算机原理和计算机结构,高级语言开发的程序经过解释程序或翻译程序自动变换成机器语言。
汇编语言则是一种符号语言,是依赖硬件的,不同型号计算机的汇编语言是不尽相同的,所以用汇编语言必须懂得计算机原理和计算机结构。汇编语言开发的程序,更能够发挥计算机的特点和功能,并且程序紧凑,资源利用率高。和高级语言类似,汇编语言计算机不能直接识别,要通过汇编程序变化成机器语言。汇编语言的每一个指令指令符号与机器语言的二进制码指令是有一一对应关系的。
机器语言就是你所说的二进制机器代码,计算机只能识别和运行机器语言。但因为二进制码对人来说不仅难记也难识别,没有很专业的计算机知识,是没办法直接用机器语言编程的。
像 MOV REG,MEN 这样的一般指令如果用二进制表示的话是当然是“0”“1”数码,因为指令的寻址方式不同,他们在指令码中的编码也不完全一样,具体请参考相关指令系统的资料。
CPU不同,汇编指令系统是有所不同的,如果是同一系列的片子,也会因为型号不同而在具体功能上有所增减,所以会出现有些简单程序能运行,而有些较复杂程序就不一定能互用的情况。
机器语言 计算机直接能够接受和应用的语言,是二进制的编程语言,是人应该都看不懂
汇编语言就是用助记符来表示计算机操作命令的一种编程语言。它主要是面向硬件,比c语言等高级语言要低级点,比机器语言(就是计算机能直接执行的程序,我们编的程序都要翻译成机器语言才能执行)要高级点
高级语言是编一些应用软件,与硬件不直接打交道的语言,比较直接,医懂,一般人都用高级语言编写程序
指令通常由几个字节组成,第一个字节是操作码,它规定了计算机要执行的基本操作;后面的字节是操作数,它规定了操作对象或操作对象的地址。
机器语言是直接用二进制代码指令表达的计算机语言,指令是用0和1组成的一串代码,它们有一定的位数,并分成若干段,各段的编码表示不同的含义,例如某台计算机字长为16位,即有16个二进制数组成一条指令或其它信息。16个0和1可组成各种排列组合,通过线路变成电信号,让计算机执行各种不同的操作。
如某种计算机的指令为1011011000000000,它表示让计算机进行一次加法操作;而指令1011010100000000则表示进行一次减法操作。它们的前八位表示操作码,而后八位表示地址码。从上面两条指令可以看出,它们只是在操作码中从左边第0位算起的第6和第7位不同。这种机型可包含256(=28)个不同的指令。
机器语言或称为二进制代码语言,计算机可以直接识别,不需要进行任何翻译。每台机器的指令,其格式和代码所代表的含义都是硬性规定的,故称之为面向机器的语言,也称为机器语言。它是第一代的计算机语言。机器语言对不同型号的计算机来说一般是不同的。
使用机器语言编写程序是一种相当烦琐的工作,既难于记忆也难于操作,编写出来的程序全是由0和1的数字组成,直观性差、难以阅读。不仅难学、难记、难检查、又缺乏通用性,给计算机的推广使用带来很大的障碍。
最早的程序设计语言都采用机器语言来编写。当时,要在计算机上运行的所有算法都必须直接用机器语言来表达,计算机才能接受。算法的运算序列包括运算对象和运算结果都必须转换为指令序列。其中的每一条指令都以编码(指令码和地址码)的形式出现。与算法语言表达的算法,相差十万八千里。对于没受过程序设计专门训练的人来说,一份程序恰似一份"天书",让人看了不知所云,可读性极差。
用机器语言表达算法的运算、数据和控制十分繁杂琐碎,因为机器语言所提供的指令太初等、原始。机器语言只接受算术运算、按位逻辑运算和数的大小比较运算等。对于稍复杂的运算,都必须一一分解,直到到达最初等的运算才能用相应的指令替代之。机器语言能直接表达的数据只有最原始的位、字节、和字三种。算法中即使是最简单的数据如布尔值、字符、整数、和实数,也必须一一地映射到位、字节和字中,还得一一分配它们的存储单元。对于算法中有结构的数据的表达则要麻烦得多。机器语言所提供的控制转移指令也只有无条件转移、条件转移、进入子程序和从子程序返回等最基本的几种。用它们来构造循环、形成分支、调用函数和过程得事先做许多的准备,还得靠许多的技巧。
直接用机器语言表达算法有许多缺点。
大量繁杂琐碎的细节牵制着程序员,使他们不可能有更多的时间和精力去从事创造性的劳动,执行对他们来说更为重要的任务。如确保程序的正确性、高效性。
程序员既要驾驭程序设计的全局又要深入每一个局部直到实现的细节,即使智力超群的程序员也常常会顾此失彼,屡出差错,因而所编出的程序可靠性差,且开发周期长。
由于用机器语言进行程序设计的思维和表达方式与人们的习惯大相径庭,只有经过较长时间职业训练的程序员才能胜任,使得程序设计曲高和寡。
因为它的书面形式全是"密"码,所以可读性差,不便于交流与合作。
因为它严重地依赖于具体的计算机,所以可移植性差,重用性差。
为了克服机器语言上述的缺点,出路在于程序设计语言的抽象,让它尽可能地接近于算法语言。为此,人们首先注意到的是可读性和可移植性,因为它们相对地容易通过抽象而得到改善。于是,很快就出现汇编语言。这种语言对机器语言的抽象,首先表现在将机器语言的每一条指令符号化:指令码代之以记忆符号,地址码代之以符号地址,使得其含义显现在符号上而不再隐藏在编码中,可让人望"文"生义。其次表现在这种语言摆脱了具体计算机的限制,可在不同指令集的计算机上运行,只要该计算机配上汇编语言的一个汇编程序。这无疑是机器语言朝算法语言靠拢迈出的一步。但是,它离算法语言还太远,以致程序员还不能从分解算法的数据、运算和控制到汇编才能直接表达的指令等繁杂琐碎的事务中解脱出来。
用能反映指令功能的助记符表达的计算机语言叫汇编语言。它是符号化了的机器语言。用汇编语言编写的程序叫汇编语言源程序,计算机无法执行。必须用汇编程序把它翻译成机器语言目标程序,计算机才能执行。这个翻译过程称为汇编过程。
汇编语言是用助记符表示指令功能的计算机语言。与机器语言相比,汇编语言具有以下的几个特点:第一,它使用符号来表示操作码和地址码,这种符号便于记忆,称为记忆码。第二,汇编程序自动处理存储分配,毋需程序员做存储分配工作。第三,程序员可以直接书写十进制数`
例如,要计算c=7+8,可以用如下几条汇编命令:
标号 指令 说明
START GET 7; 把7送进累加器ACC中
ADD 8; 累加器ACC+8送进累加器ACC中
PUT C; 把累加器ACC送进C中
END STOP; 停机
其中(ACC)表示累加器中的值,等等。
如此简单的汇编语言,只是符号形式的机器语言,但用它来编写程序或阅读已经编写好的程序比起机器语言来要简单和方便多了。这就是计算机语言发展中的第二代语言—汇编语言。人们使用这种助记符编写程序后,要是计算机能够接受,还必须把编好的程序逐条翻译成二进制编码的机器语言。当然,这个工作并不是有程序员来完成,而是有称为“汇编程序”的程序自动完成的。汇编程序的功能就是把由汇编语言编写的程序(称为汇编语言源程序)翻译成机器语言程序,计算机才能执行该程序。这个翻译过程称为汇编。
汇编语言比起机器语言在很多方面都有很大的优越性,如编写容易、修改方便、阅读简单、程序清楚等,但在计算机语言系统中,把汇编语言仍然列入“低级语言”的范畴,它仍然是属于面向机器的语言,也就是说,不同的计算机可以有不同的指令集。
汇编语言与机器有关,是低级语言。当然要进行编译才能让机器运行。
高级语言诸如c语言这类的,与机器无关,大多数人都能编写,但是效率等等不如汇编。