怎么理解机器语言
A. 机器语言是如何在计算机内部被执行的呢
你该看看这个:
一、引言
在计算机科学中,编程语言是用来编写可被计算机运行的一系列指令(计算机程序)的人工语言。与英语等自然语言相类似,编程语言具有词汇、语法和句法。然而,自然语言不适合计算机编程,因为它们能引起歧义,也就是说它们的词汇和语法结构可以用多种方式进行解释。用于计算编程的语言必须具有简单的逻辑结构,而且它们的语法、拼写和标点符号的规则必须精确。
编程语言在复杂性和通用程度上大相径庭。有些编程语言是为了处理特定类型的计算问题或为了用于特定型号的计算机系统而编写的。例如,FORTRAN和COBOL等编程语言是为解决某些普遍的编程问题类型而编写的——FORTRAN为了科学领域的应用,而COBOL为了商业领域的应用。尽管这些语言旨在处理特定类型的计算机问题,但是它们具有很高的可移植性,也就是说它们可以用来为多种类型的计算机编程。其他的语言,譬如机器语言,是为一种特定型号的计算机系统,甚至是一台特定的计算机,在某些研究领域使用而编写的。最常用的编程语言具有很高的可移植性,可以用于有效地解决不同类型的计算问题。像C、PASCAL和BASIC这样的语言就属于这一范畴。
二、语言类型
编程语言可划分为低级语言和高级语言。低级编程语言或机器语言,是编程语言中最基础的类型,能被计算机直接理解。机器语言的区别取决于制造商和计算机的型号。高级语言是在计算机能够理解和处理之前必须首先翻译成机器语言的编程语言。C、C++、PASCAL和FORTRAN都是高级语言的例子。汇编语言是中级语言,非常接近于机器语言,没有其他高级语言所表现出的语言复杂程度,但仍然得翻译成机器语言。
1、机器语言
在机器语言中,指令被写成计算机能够直接理解的被称之为比特的1和0的序列。机器语言中的一条指令通常告诉计算机4件事情:(1)到计算机主存储器(随机访问存储器)的哪个位置去找一或两个数字或者简单的数据段;(2)要执行的一个简单操作,例如将两个数字加起来;(3)将这个简单操作的结果存放在主存储器的什么位置;以及(4)到哪里找要执行的下一条指令。虽然所有的可执行程序最终都是以机器语言的形式被计算机读取,但是它们并非都是用机器语言编写的。直接用机器语言编程极端困难,因为指令是1和0的序列。机器语言中的一条典型的指令可能是10010 1100 1011,意思是将存储寄存器A的内容加到存储寄存器B的内容中。
2、高级语言
高级语言是利用人类语言中的词和句法的一套相对复杂的语句。它们比汇编语言和机器语言更类似于正常的人类语言,因此用来编写复杂的程序更容易。这些编程语言允许更快地开发更庞大和更复杂的程序。然而,在计算机能够理解之前,高级语言必须被称之为编译器的另外一种程序翻译成机器语言。因为这个原因,与用汇编语言编写的程序比较起来,用高级语言编写的程序可能运行的时间更长,占用的内存更多。
3、汇编语言
计算机编程人员使用汇编语言使机器语言程序编写起来更简单一些。在汇编语言中,每条语句大致对应一条机器语言指令。汇编语言的语句是借助易于记忆的命令编写的。在典型的汇编语言的语句中,把存储寄存器A的内容加到存储寄存器B的内容中这一命令,可以写成ADD B, A。汇编语言与机器语言具有某些共同特征。例如,对特定的比特进行操作,用汇编语言和机器语言都是可行的。当尽量减少程序的运行时间很重要时,程序员就使用汇编语言,因为从汇编语言到机器语言的翻译相对简单。当计算机的某个部分必须被直接控制时,如监视器上的单个点或者流向打印机的单个字符,这时也使用汇编语言。
三、高级语言的分类
高级语言通常分为面向过程的、函数式的、面向对象的或逻辑的语言。当今最常见的高级语言是面向过程的语言。在这种语言中,执行某个完整功能的一个或多个相关的语句块组成一个程序模块或过程,而且被给予诸如“过程A”的名称。如果在程序的其他地方需要同样的操作序列,可以使用一个简单的语句调回这个过程。实质上,一个过程就是一个小型程序。一个大程序可以通过将执行不同任务的过程组合在一起而构成。过程语言使程序变得比较短,而且更易于被计算机读取,但是要求程序员将每个过程都设计得足够通用,能用于不同的情况。
函数式语言像对待数学函数一样对待过程,并允许像处理程序中的任何其他数据一样处理它们。这就使程序构造在更高、更严密的水平上得以实现。函数式语言也允许变量——在程序运行过程中可以被用户指定和更改的数据符号——只被赋值一次。这样,通过减少对语句执行的确切顺序给予关注的必要性,就简化了编程,因为一个变量没有必要每次在一个程序语句中用到,都重新定义或重新赋值。函数式语言的许多观点已经成为许多现代过程语言的关键部分。
面向对象的语言是函数式语言的发展结果。在面向对象的语言中,用来编写程序的代码和程序处理的数据,组合成叫做对象的单元。对象进一步组合成类,而类则定义对象必须具有的属性。类的一个简单例子就是书这个类。这个类中的对象可能是小说和短篇小说。对象还有某些与其相关的功能,称为方法。计算机通过使用对象的某种方法来使用这个对象。方法对对象中的数据执行某个操作,然后将值返回给计算机。对象的类也可更进一步组合成层,而在层中一个类的对象可继承另一个类的方法。面向对象的语言中所提供的这种结构,使面向对象的语言对于复杂的编程任务非常有用。
逻辑语言将逻辑用作其数学基础。一个逻辑程序由一系列的事实与“如果……则”规则组成,来具体说明一系列事实如何可以从其他实事中推断出来,例如:
如果X语句为真,则Y语句为假。
在这样一个程序的执行过程中,一条输入语句可以按照逻辑从程序中的其他语句推断出来。许多人工智能程序使用这种语言编写。
四、语言的结构与成分
编程语言使用特定类型的语句或指令,来给程序提供功能结构。程序中的一条语句是表达一个简单意思的基本句子,其目的是给计算机一条基本指令。语句对允许的数据类型、数据如何处理以及过程和函数的工作方式进行定义。程序员利用语句来操作编程语言的常见成分,如变量和宏(程序中的小型程序)。
数据声明语句给予称为变量的程序元素以名称和属性。变量在程序中可以赋予不同的值。变量可以具有的属性被称作类型,它们包括:变量中可能存储什么样的值,值中使用何种程度的数值精度,以及一个变量可以如何以有组织结构的方式——如以表或数组的形式——代表一组比较简单的值等等。在许多编程语言中,一种关键的数据类型是指示字。指示字变量本身没有值;相反,它们含有计算机可以用来查找某个其他变量的信息——也就是说,它们指向另一个变量。
表达式是语句的一段,描述要对一些程序变量执行的一系列运算,如X+Y/Z,其中X、Y和Z为变量,运算方法为加和除。赋值语句给一个变量赋予得自某个表达式的值,而条件语句则指定要被测试、然后用于选择接下来应该执行的其他语句的表达式。
过程与函数语句将某些代码块定义为以后可在程序中返回的进程或函数。这些语句也规定程序员可以选择的变量与参数种类,以及当一个表达式使用过程或函数时代码将返回的值的类型。许多编程语言也容许叫做宏的小型翻译程序。宏把使用程序员定义的语言结构编写的代码段翻译成编程语言可以理解的语句。
五、历史
编程语言几乎可以追溯到20世纪40年代数字计算机发明之时。最早的汇编语言,随着商业计算机的推出,出现于20世纪50年代末。最早的过程语言是在20世纪50年代末到20世纪60年代初开发的:FORTRAN语言由约翰•巴克斯创造,然后由格雷斯•霍珀创造了COBOL语言。第一种函数式语言是LISP,由约翰•麦卡锡于20世纪50年代末编写。这3种语言今天仍在广泛使用,但经历过大量修改。
20世纪60年代末,出现了最早的面向对象的语言,如SIMULA语言。逻辑语言在20世纪70年代中期随着PROLOG语言的推出而变得广为人知;PROLOG语言是一种用于编写人工智能软件的语言。在20世纪70年代,过程语言继续发展,出现了ALGOL、BASIC、PASCAL、C和Ada等语言。SMALLTALK语言是一种具有高度影响力的面向对象的语言,它导致了面向对象的语言与过程语言在C++和更近期的JAVA语言中的结合。尽管纯粹的逻辑语言受欢迎的程度有所下降,但其变体以现代数据库所使用的关系语言——如结构化查询语言——的形式,变得至关重要。
B. 机器语言是怎样工作的
这个问题要说的可就多了,因为现在的计算机有好多种结构体系的,就以我们最常见的X86结构的计算机来简单的说说。
首先我们按下开机键,计算机通电,电源部分给各个部件加电,这是个脉冲升压过程,很快的。然后每个部件都返回一条指令给主板的负责自检的模块BIOS(BASIC Input Output System)表示加电成功,准备就绪。
然后,BIOS进行系统自检,详细的检查如内存、cpu等部件的工作是否正常。自检通过后,启动的所有权交给磁盘上的启动扇区,启动扇区的数据将引导计算机执行最基本的启动指令,然后启动磁盘上已有的操作系统(OS,operating system),操作系统启动成功后,将出现人机交互界面,这时计算机会接受操作员给出的指令,并进行处理,最后返回给操作员结果。
工作完毕后,操作员给出关机指令,计算机关闭。
计算机语言的种类非常的多,总的来说可以分成机器语言,汇编语言,高级语言三大类。
电脑每做的一次动作,一个步骤,都是按照以经用计算机语言编好的程序来执行的,程序是计算机要执行的指令的集合,而程序全部都是用我们所掌握的语言来编写的。所以人们要控制计算机一定要通过计算机语言向计算机发出命令。
计算机所能识别的语言只有机器语言,即由0和1构成的代码。但通常人们编程时,不采用机器语言,因为它非常难于记忆和识别。
目前通用的编程语言有两种形式:汇编语言和高级语言。
汇编语言的实质和机器语言是相同的,都是直接对硬件操作,只不过指令采用了英文缩写的标识符,更容易识别和记忆。它同样需要编程者将每一步具体的操作用命令的形式写出来。汇编程序通常由三部分组成:指令、伪指令和宏指令。汇编程序的每一句指令只能对应实际操作过程中的一个很细微的动作,例如移动、自增,因此汇编源程序一般比较冗长、复杂、容易出错,而且使用汇编语言编程需要有更多的计算机专业知识,但汇编语言的优点也是显而易见的,用汇编语言所能完成的操作不是一般高级语言所能实现的,而且源程序经汇编生成的可执行文件不仅比较小,而且执行速度很快。
高级语言是目前绝大多数编程者的选择。和汇编语言相比,它不但将许多相关的机器指令合成为单条指令,并且去掉了与具体操作有关但与完成工作无关的细节,例如使用堆栈、寄存器等,这样就大大简化了程序中的指令。同时,由于省略了很多细节,编程者也就不需要有太多的专业知识。
高级语言主要是相对于汇编语言而言,它并不是特指某一种具体的语言,而是包括了很多编程语言,如目前流行的VB、VC、FoxPro、Delphi等,这些语言的语法、命令格式都各不相同。
高级语言所编制的程序不能直接被计算机识别,必须经过转换才能被执行,按转换方式可将它们分为两类:
解释类:执行方式类似于我们日常生活中的“同声翻译”,应用程序源代码一边由相应语言的解释器“翻译”成目标代码(机器语言),一边执行,因此效率比较低,而且不能生成可独立执行的可执行文件,应用程序不能脱离其解释器,但这种方式比较灵活,可以动态地调整、修改应用程序。
编译类:编译是指在应用源程序执行之前,就将程序源代码“翻译”成目标代码(机器语言),因此其目标程序可以脱离其语言环境独立执行,使用比较方便、效率较高。但应用程序一旦需要修改,必须先修改源代码,再重新编译生成新的目标文件(* .OBJ)才能执行,只有目标文件而没有源代码,修改很不方便。现在大多数的编程语言都是编译型的,例如Visual C++、Visual Foxpro、Delphi等。
C. 机器语言该怎么学有人会嘛
机器语言?厉害。0和1俗称是唯一两个能被计算机识别的机器语言,因为很容易专用高低电平或者接通/断开属状态表示。如果你想用类似于机器语言的机制,去设计卡发什么,无疑要精通数字逻辑,电路分析,信号处理,计算机组成原理以及微机原理等这类知识。
D. 怎么把C语言转化为相应对机器语言
以GCC编译器为例,可以分为四步。
第一步是预处理,包括语法检查等工作。
gcc -P abc.c
第二内步由源程序容生产汇编语言代码。
gcc -S abc.c
会生成abc.s文件,这个文件里就是汇编代码。
第三步编译器生成目标代码,一个源文件生成一个目标代码。
gcc -c abc.c
会生成abc.o
第四步连接器从目标代码生成可执行文件。
gcc abc.o
目标代码包括机器码和符号表(函数及变量名)。连接器的主要作用是通过符号表在库文件和其他模块中找到在目标代码中引入或未定义的符号(函数及变量名),将几个目标代码合成可执行文件。
E. 机器语言该怎么学有人会嘛
属于机器语言的可读的文字形式你可以去学对深刻理解计算机体系有极大帮助建议,看汇编语言编程的艺术 王爽的 汇编语言这两本书追问: 学了C后,我发现我的兴趣已不仅限于可以编程了,我听说机器语言古老,所以打算去学!是不是先要学好数学和物理?回答: 89 76 23 14 这些是机器语言的组成,都是数字补充: 实际些吧,大哥。 愿意学,去学汇编,研究汇编原理, 那个真的能研究一辈子的。 很复杂,对你胃口的补充: 学机器语言,你连程序都运行不起来,exe程序,很复杂的文件头,你手工写?我服你追问: 我不打算考学机器语言赚钱生活,只是打算长期研究,只到会!我不能也不甘心让它连放到博物管的机会都没了吧回答: 问题是你老哥连啥是机器语言都没搞懂啊。补充: 机器语言是编译程序把高级语言翻译为机器可以理解的二进制序列。 或者汇编程序把汇编翻译成机器可以理解的二进制序列 注意,是一些二进制数字的序列。 目前,光是序列还不能执行,还要加上程序头,资源,等等的 然后才组成一个完整程序。 目前,任何计算机,都不支持纯机器语言的手工生成了,一切语言包括汇编都是 机器编译生成的,人工很难,那要涉及到复杂的操作。 包括CPU的设计也是一种程序设计语言了。 也不是人手工设计电路,电路都是编程自动生成的了。补充: 换句话说,你先穿越到50年代,才有工具可以去学机器语言追问: 就是不会才学,会了我会再去浪费时间,那真是傻!人生还有三四十年,不信到死我都学不会?回答: 你这好比不用计算机格式化磁盘,自己用小磁铁去刻磁盘,然后要硬盘启动XP 知道多难了么?补充: 呵呵…你懂机器语言嘛?我挺想找人教我的!你是那老师?我今年高考看管靠近你点不!好想学机器语言啊!回答: 我说的很清楚了,用二进制码(0和1)表示电路信号,让计算机实现相应的功能,那些是必备知识。
F. 汇编语言是一种机器语言吗怎么有的说不是有的说是啊
汇编不是机器语言。
汇编语言(Assembly Language)是面向机器的程序设计语言.汇编语言是一种功能很强的程序设计语言,也是利用计算机所有硬件特性并能直接控制硬件的语言。汇编语言”作为一门语言,对应于高级语言的编译器,需要一个“汇编器”来把汇编语言原文件汇编成机器可执行的代码。高级的汇编器如MASM, TASM等等为我们写汇编程序提供了很多类似于高级语言的特征,比如结构化、抽象等。在这样的环境中编写的汇编程序,有很大一部分是面向汇编器的伪指令,已经类同于高级语言。现在的汇编环境已经如此高级,即使全部用汇编语言来编写windows的应用程序也是可行的,但这不是汇编语言的长处。汇编语言的长处在于编写高效且需要对机器硬件精确控制的程序。
在汇编语言中,用助记符(Mnemonic)代替操作码,用地址符号(Symbol)或标号(Label)代替地址码。这样用符号代替机器语言的二进制码,就把机器语言变成了汇编语言。因此汇编语言亦称为符号语言。
使用汇编语言编写的程序,机器不能直接识别,要由一种程序将汇编语言翻译成机器语言,这种起翻译作用的程序叫汇编程序,汇编程序是系统软件中语言处理系统软件。汇编语言编译器把汇编程序翻译成机器语言的过程称为汇编。
汇编语言比机器语言易于读写、调试和修改,同时具有机器语言全部优点。但在编写复杂程序时,相对高级语言代码量较大,而且汇编语言依赖于具体的处理器体系结构,不能通用,因此不能直接在不同处理器体系结构之间移植。
汇编语言的特点:
1.面向机器的低级语言,通常是为特定的计算机或系列计算机专门设计的。
2.保持了机器语言的优点,具有直接和简捷的特点。
3.可有效地访问、控制计算机的各种硬件设备,如磁盘、存储器、CPU、I/O端口等。
4.目标代码简短,占用内存少,执行速度快,是高效的程序设计语言。
5.经常与高级语言配合使用,应用十分广泛。
汇编语言的应用:
1.70%以上的系统软件是用汇编语言编写的。
2.某些快速处理、位处理、访问硬件设备等高效程序是用汇编语言编写的。
3.某些高级绘图程序、视频游戏程序是用汇编语言编写的。
汇编语言是我们理解整个计算机系统的最佳起点和最有效途径
人们经常认为汇编语言的应用范围很小,而忽视它的重要性。其实汇编语言对每一个希望学习计算机科学与技术的人来说都是非常重要的,是不能不学习的语言。
所有可编程计算机都向人们提供机器指令,通过机器指令人们能够使用机器的逻辑功能。
所有程序,不论用何种语言编制,都必须转成机器指令,运用机器的逻辑功能,其功能才能得以实现。
机器的逻辑功能,软件系统功能构筑其上,硬件系统功能运行于下。
汇编语言直接描述机器指令,比机器指令容易记忆和理解。通过学习和使用汇编语言,能够感知、体会、理解机器的逻辑功能,向上为理解各种软件系统的原理,打下技术理论基础;向下为掌握硬件系统的原理,打下实践应用基础。
学习汇编语言,向上可以理解软件,向下能够感知硬件,是我们理解整个计算机系统的最佳起点和最有效途径。
G. 机器语言
学习汇编语言编程有助于编写用于增强高级语言程序的高效代码。这也是如今高级编程语言层出不穷的时代、汇编语言依然保持他那元老的风采的原因之一。
在学习汇编语言之前,必须先了解计算机本身的机器语言,机器语言都是由二进制数0和1来表示的,且一位二进制数字习惯称之为一个位(bit),机器语言程序的表达式就由这些位串组成,这些位串被之为位模式(bit pst-terns)。如:
101110000000010100000000
这些机器语言位模式代表指令、数据和指令数据的地址。上面位模式的前8位代表8088机器语言指令,后16位代表一个数据值。如下面的指示:
101110000000010100000000
位模式的前8位命令计算机把指令后面的16位数字送到名叫AX的存储单元(这些存储单元叫寄存器registers),机器语言指令命令CPU在AX寄存器中存放数值3。虽然机器语言很吸引人,但是大家可以通过上面的例子看到,太难以理解了,即使最优秀的程序员恐怕也会感到困难,于是渐渐地就产生了汇编语言。
在汇编语言中,机器语言指令的专用名称为助记符(mnemonics)。另外,数据可以用数字值(例如:3,8,11,666,0bdh)或者符号名称(例如:MAX,count,line,RESULT)表示,下面我们来看一看汇编语言是怎样表达机器语言位模式的:
mov ax,3
上面的汇编语言语句要比机器语言
101110000000010100000000
好记得多,不过,计算机不知道上述汇编语言语句的含义。所以必须经过编译,把上述简单的语句翻译成计算机能够理解的格式,我们就必须使用汇编程序。也就是说,我们要借助汇编程序把汇编语言程序语句翻译成等价的机器语言位模式。
H. 机器语言是怎么样让计算机读懂的. 我不明白.计算机语言具体是什么谁举个例子.然后人类怎么输入到计算机里
1.x86的话就是intel汇编指令集,例如90代表nop,CC代表int 3等等,2.编译器把高级语言最终编专译为与汇编语言向对应属的intel指令,在程序运行的时候windows装载器把程序装入内存,初始化完成后跳到程序入口点运行机器语言。3.cpu是intel制造的,自己的规则当然能够理解。
I. 机器语言是什么
机器语言(machine language)是一种指令集的体系。这种指令集,称机器码(machine code),是电版脑的CPU可直接解读权的数据。
机器码有时也被称为原生码(Native Code),这个名词比较强调某种编程语言或库,它与运行平台相关的部份。机器语言是用二进制代码表示的计算机能直接识别和执行的一种机器指令的集合。它是计算机的设计者通过计算机的硬件结构赋予计算机的操作功能。
(9)怎么理解机器语言扩展阅读:
机器语言具有灵活、直接执行和速度快等特点。不同型号的计算机其机器语言是不相通的,按着一种计算机的机器指令编制的程序,不能在另一种计算机上执行。
机器语言的缺点:大量繁杂琐碎的细节牵制着程序员,使他们不可能有更多的时间和精力去从事创造性的劳动,执行对他们来说更为重要的任务。如确保程序的正确性、高效性。
程序员既要驾驭程序设计的全局又要深入每一个局部直到实现的细节,即使智力超群的程序员也常常会顾此失彼,屡出差错,因而所编出的程序可靠性差,且开发周期长。
J. 机器语言有哪些不都是0和1组成的代码吗一种机器语言只适用一类特定的计算机,怎么理解
机器语言是用二进制代码表示的计算机能直接识别和执行的一种机器指令的集合。它是由有意义的二进制代码组成,二进制代码也有“0”和“1”组成。