面向机器语言有哪些

电子说

1.2w人已加入

描述

  机器语言原理

  计算机的核心部件是CPU(中央处理单元),这是一个有着众多引脚的集成电路。计算机的所有动作均由其内部的“电子运算”而最终产生。从理解的角度上,可以把CPU看作是一套“约定”的集合。当我们通过一些引脚告诉它“1”、“加”、“2”、“运算”、“输出”等信号时,通过CPU设计制作时固定好的“约定”,在其另一些引脚上输出“3”的信号并通知显示设备显示出“3”的图象,我们就此得到了结果。——这些“约定”就是该CPU的机器语言。

  不同的CPU有着不同的机器语言。不同机器语言基础上的软件无法通用。某一厂商新型的CPU为了软件的通用性往往向其早期的CPU保持兼容。机器语言是一切软件(包括操作系统)的基础,是计算机最终识别并执行的指令。

  任何的机器语言都只接受两种信息:“指令”和“数据”;指令是告诉CPU做什么样的动作,而数据则是动作的对象。比如上文中的“加”、“运算”等是指令,而“1”、“2”是数据。从形式上讲,指令和数据都是二进制信息。但如果将数据当成指令交给CPU处理,通常CPU会无法理解而死机;反之如果将指令当成数据交给CPU则不会引起任何恶果,因为数据不会引起CPU任何的动作。

  为验证这一说法,你可以随便将一个文件的扩展名改为COM在DOS下交给系统执行;也可以将命令处理器COMMAND.COM的扩展名改为TXT用记事本打开(切记不要存盘!)。

  面向机器语言概述

  面向机器语言是为特定的计算机或一类计算机而设计的程序设计语言。这种语言保留了机器语言的外形,即由操作码和地址码组成指令这个外形,但面向机器语言的语言是用符号形式而不用机器代码形式。这种语言能让使用者摆脱计算机的一些纯事物性的细节问题(如无需硬记机器指令代码、摆脱了二-十进制转换问题和分配内存问题等),而专心考虑程序间的内在联系。这类语言的代表是汇编语言。

汇编语言

  面向机器语言有哪些

  1、机器语言

  机器语言程序由机器指令构成,这些机器指令按照执行顺序依次排列,运行时依次执行完成某个特定的计算或任务。

  机器指令是CPU能直接识别并执行的指令。机器指令由物理部件的若干位二进制0、1状态体现,机器指令程序运行前需要存储到内存,正确的机器指令一旦送入CPU被译码后就将变成动作予以执行。

  如图1-1所示,机器指令面向机器,因机器而异。不同的机器具有不同的机器指令,因而具有不同的机器语言。所谓不同的机器,是指具有不同CPU(中央处理器)的计算机。由于机器指令与CPU紧密相关,所以不同种类的CPU所对应的机器指令也就不同,而且它们的指令系统往往相差很大。但对同一系列的CPU来说,为了满足各型号之间良好的兼容性,设计者一般要做到:新一代CPU的指令系统必须兼容先前开发的同系列CPU的指令系统。只有这样,先前开发出来的各类程序在新一弋CPU上才能正常运行。

汇编语言

  机器指令通常由操作码和操作数两部分组成,操作码指出该指令所要完成的操作,即指令的功能,操作数指出参与运算的对象,以及运算结果所存放的位置等。由于机器指令由物理部件的若干位二进制0、1状态体现,因此机器指令的最直接的记忆形式就是表示这一指令状态的二进制数,这个二进制数就称作该机器指令的二进制代码指令。由于二进制数和八进制数,以及十六进制数的特殊关系,因此该二进制代码指令对应的八进制数和十六进制数分别称作该机器指令的八进制或十六进制代码指令。

  例如:B233H就是一条80*86的十六进制机器代码指令,这条指令的功能是将33H这个十六进制数送到DL寄存器。该机器指令的二进制代码指令是:1011001000110011,指令长度16位。

  显然二进制代码指令与其状态对应直观,但记忆困难。而十六进制代码指令则方便记忆。因此80*86的代码指令通常都用十六进制表示。

  用机器指令所写的程序称作机器指令程序,机器指令程序也指刚代码指令所写的程序。机器指令程序遵循冯·诺依曼原理:用二进制表示数,程序与数据都存储在同样的存储器,程序指令一般按存取顺序执行。

  计算机出现初期只有一种机器语言,程序员只能用代码指令编写程序,即机器语言程序。用机器语言编写程序是相当艰苦的工作,必须由经过严格训练的专业技术人员承担,这是早期计算机之所以不能够广泛应用的最大障碍之一。

  一方面机器语言十分重要,必须了解;另一方面机器代码指令程序使用又十分困难;因因此唯一能够替代机器语言的汇编语言就成为计算机科技人员必须掌握的一种计算机语言。

  2、汇编语言

  虽然用机器语言编写程序有许多不便,但程序执行效率高。所以,在保留“程序执行效率高”的前提下,人们开始着手研究一种能大大改善程序可读性的编程方法。即选用能反映机器指令功能的单词或词组来代替该机器指令的操作码,选用相应的符号表示CPU内部资源和内存等操作数,这就是汇编指令。

  例如,汇编指令:

  MOVAL,BL其对应的二进制指令为:1101100010001000,十六进制代码指令则为D888H,可见记忆机器指令相当困难。

  而汇编指令中MOV源于Move,表示传送指令;AL、BL分别表示80x86的AL和BL寄存器。指令功能是将BL寄存器中的内容传送到AL寄存器。如此,令人难懂的二进制机器代码指令或十六进制机器代码指令就可以用通俗易懂的、具有一定含义的符号指令来表示了,这就是汇编指令的原意。我们称这些具有一定含义的符号,例如上述指令中的MOV,为助记符。用助记符、符号地址等组成的符号指令称为汇编格式指令或汇编指令。

  因此,用助记符表示的机器指令称作汇编指令,用汇编指令编写的程序称作汇编指令程序。但汇编指令最终必须翻译成机器指令才能够在计算机上执行。

  汇编语言是汇编指令集、伪指令集及其使用规则的统称。能够一对一地翻译成机器指令的这种用助记符表示的机器指令称作汇编指令。伪指令则是出现在汇编语言程序中的一些辅助性的说明,它不对应具体的机器指令,而是程序设计者与汇编过程中的翻译程序(即汇编)、连接程序,以及执行时如何装入的一种约定。

  用汇编语言编写的程序称作汇编语言程序,或汇编语言源程序,也简称为源程序。汇编语言程序较之机器指令程序容易理解和维护。

  汇编语言源程序是一个文本文件,它必须经过翻译才能够变成可执行的机器语言程序,这个翻译过程称作汇编。汇编的核心过程是将汇编指令逐条翻译成机器指令,这正是汇编语言中“汇编”一词的含义。

  80x86汇编语言源程序扩展名为.asm,经过汇编以后生成的浮动地址二进制文件扩展名为.obj,.obj文件需要经过连接才能够生成可执行文件.exe。.exe是一个可以由操作系统执行的机器指令程序。图1-2给出了一个简单汇编语言程序与其机器指令程序之间的对应关系。

  尽管不同的CPU有不同的汇编语言,但不同种类的汇编语言都有其共同规律。因此,学会一种汇编语言,再学习其他汇编语言就相对容易多了。

  机器语言的发展

  每种计算机都有自己独特的机器指令,比如,某种型号的计算机用8位二进制信息10001010表示加法指令,用00010011表示减法指令,等等。这些指令的执行由计算机的线路来保证,计算机在设计之初,先就要确定好每一条指令对应的线路逻辑操作。计算机处理信息的早期语言是所谓的机器语言,使用机器语言进行程序设计需要面向机器来编写代码,即需要针对不同的机器编写诸如01011100这样的指令序列。用机器语言进行程序设计是一项累人的工作,代码难以阅读和理解,一个简单的任务往往蕴含着编写大量的代码,而且同样的任务需要针对不同型号的计算机分别进行编写指令,因为一种型号的计算机用10001010表示加法指令,而另一种型号的计算机可能用11110000表示加法指令。因此,使用机器语言编程也称为面向机器编程。20世纪50年代出现了汇编语言,在编写指令时,用一些简单的容易记忆的符号代替二进制指令,但汇编语言仍是面向机器语言,需针对小同的机器编写不同的代码。习惯上称机器语言、汇编语言是低级语言。

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分