机器语言,汇编语言 高级语言和高级语言使用场合

高级语言、汇编语言、机器语言三者的区别与联系只说明三者之间的区别与联系即可,要快~~
机器语言 计算机直接能够接受和应用的语言,是二进制的编程语言,是人应该都看不懂汇编语言就是用助记符来表示计算机操作命令的一种编程语言.它主要是面向硬件,比c语言等高级语言要低级点,比机器语言(就是计算机能直接执行的程序,我们编的程序都要翻译成机器语言才能执行)要高级点 高级语言是编一些应用软件,与硬件不直接打交道的语言,比较直接,医懂,一般人都用高级语言编写程序
为您推荐:
其他类似问题
扫描下载二维码高级语言、汇编语言及机器语言的区别_百度文库
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
高级语言、汇编语言及机器语言的区别
上传于||暂无简介
阅读已结束,如果下载本文需要使用1下载券
想免费下载本文?
定制HR最喜欢的简历
你可能喜欢面向机器的编程语言 : 汇编语言:如果自己要发明一种编程语言,那么需要做些什么事情呢? - 推酷
面向机器的编程语言 : 汇编语言:如果自己要发明一种编程语言,那么需要做些什么事情呢?
面向机器的编程语言 : 汇编语言:如果自己要发明一种编程语言,那么需要做些什么事情呢?
先要完成对于一门编程语言的各个要素:比如定义你自己的语法、数据类型、语言结构等等,其次你要写一个支持这些语法的解释器或编译器。 就我的理解,当你编写完成一个编译器或解释器,基本上你的代码就可以用了。
汇编语言是从机器语言转换过来的.最早的计算机系统没有可用的高级语言,是直接用0101这样的二进制编码来编程的,这样对绝大多数用户就很不方便,因为这要求对计算机系统的软件和硬件资源要非常了解才可以.记忆量也很大.到后来,大家就用一些符号来代替一些二进制代码,方便识别,比如原来代码1011意思是加法,现在就不写1011了,写成ADD,用ADD这个大家都容易识别的符号来编程,可以提升一些效率.但计算机的执行仍然只识别二进制代码,所以需要把汇编语言写的代码再转换成机器语言.
汇编语言是一种低级语言,好处是可以直接控制计算机的软硬件资源.坏处就是对编程人员的要求非常高.计算机执行的时候,用汇编语言编写的代码的执行效率是最高的.和机器语言代码的效率一样高.
1.面向机器的程序设计语言
汇编语言(Assembly Language)是面向机器的程序设计语言。在汇编语言中,用助记符(Memoni)代替机器指令的操作码,用地址符号(Symbol)或标号(Label)代替指令或操作数的地址,如此就增强了程序的可读性和编写难度,象这样符号化的程序设计语言就是汇编语言,因此亦称为符号语言。使用汇编语言编写的程序,机器不能直接识别,还要由汇编程序或者叫汇编语言编译器转换成机器指令。汇编程序将符号化的操作代码组装成处理器可以识别的机器指令,这个组装的过程称为组合或者汇编。因此,有时候人们也把汇编语言称为组合语言。
汇编语言是直接面向处理器(Processor)的程序设计语言。处理器是在指令的控制下工作的,处理器可以识别的每一条指令称为机器指令。每一种处理器都有自己可以识别的一整套指令,称为指令集。处理器执行指令时,根据不同的指令采取不同的动作,完成不同的功能,既可以改变自己内部的工作状态,也能控制其它外围电路的工作状态。
如图所示,在电路中,每条机器指令都表现为一组电信号,通过一排导线进入处理器。这些电信号有的呈高电平,有的呈低电平,哪些为高,哪些为低,取决于不同的机器指令。如果把高电平记为“1”,低电平记为“0”,那么,不同的机器指令将表现为不同的二进制序列,由于它们的无规律性,这就使得机器指令机器指令难以理解、书写和记忆。
人类最容易接受自己每天都使用的自然语言。为了使机器指令的书写和理解变得容易,需要借鉴自然语言的优点,为此就引入了汇编语言。汇编语言使用符号来代表不同的机器指令,而这些符号非常接近于自然语言的要素。基本上,汇编语言里的每一条指令,都对应着处理器的一条机器指令。
汇编语言包括两个部分:语法部分和编译器。语法部分提供与机器指令相对应的助记符,方便指令的书写和阅读。当然,汇编语言的符号可以被人类接受,但不能被处理器识别,为此,还要由汇编语言编译器将这些助记符转换成机器指令。
根据应用领域的不同,处理器的种类繁多,比如用于工业控制和嵌入式计算的Z80、MC68000和MCS-51、广泛应用于个人计算机的INTELx86系列,以及基于ARM体系结构的处理器,包括苹果公司在内的大企业都是ARM的客户。事实上,今天的ARM是最受欢迎的32位嵌入式处理器,而且,今天的ARM处理器比INTEL奔腾系列卖得还多,基本上是3:1的比例。
不同的处理器有不同的指令集。正是因为这个原因,每一种处理器都会有自己专属的汇编语言语法规则和编译器。即使是同一种类型的处理器,也可能拥有不同的汇编语言编译器。一个明显的例子是INTEL x86系列的处理器,围绕它就开发出好多种编译器来,如MASM、NASM、FASM、TASM和AT&T等。而且,这每一种编译器,都使用不同的语法。
1、因为用汇编语言设计的程序最终被转换成机器指令,故能够保持机器语言的一致性,直接、简捷,并能象机器指令一样访问、控制计算机的各种硬件设备,如磁盘、存储器、CPU、I/O端口等。使用汇编语言,可以访问所有能够被访问的软、硬件资源。
2、目标代码简短,占用内存少,执行速度快,是高效的程序设计语言,经常与高级语言配合使用,以改善程序的执行速度和效率,弥补高级语言在硬件控制方面的不足,应用十分广泛。
1、汇编语言是面向机器的,处于整个计算机语言层次结构的底层,故被视为一种低级语言,通常是为特定的计算机或系列计算机专门设计的。因此,不同的处理器有不同的汇编语言语法和编译器,编译的程序无法在不同的处理器上执行,缺乏可移植性;
2、难于从汇编语言代码上理解程序设计意图,可维护性差,即使是完成简单的工作也需要大量的汇编语言代码,很容易产生bug,难于调试;
3、使用汇编语言必须对某种处理器非常了解,而且只能针对特定的体系结构和处理器进行优化,开发效率很低,周期长且单调。
历史上,汇编语言曾经是非常流行的程序设计语言之一。随着软件规模的增长,以及随之而来的对软件开发进度和效率的要求,高级语言逐渐取代了汇编语言。但即便如此,高级语言也不可能完全替代汇编语言的作用。就拿Linux内核来讲,虽然绝大部分代码是用C语言编写的,但仍然不可避免地在某些关键地方使用了汇编代码。由于这部分代码与硬件的关系非常密切,即使是C语言也会显得力不从心,而汇编语言则能够很好扬长避短,最大限度地发挥硬件的性能。
首先,汇编语言的大部分语句直接对应着机器指令,执行速度快,效率高,代码体积小,在那些存储器容量有限,但需要快速和实时响应的场合比较有用,比如仪器仪表和工业控制设备中。
其次,在系统程序的核心部分,以及与系统硬件频繁打交道的部分,可以使用汇编语言。比如操作系统的核心程序段、I/O接口电路的初始化程序、外部设备的低层驱动程序,以及频繁调用的子程序、动态连接库、某些高级绘图程序、视频游戏程序等等。
再次,汇编语言可以用于软件的加密和解密、计算机病毒的分析和防治,以及程序的调试和错误分析等各个方面。
最后,通过学习汇编语言,能够加深对计算机原理和操作系统等课程的理解。通过学习和使用汇编语言,能够感知、体会和理解机器的逻辑功能,向上为理解各种软件系统的原理,打下技术理论基础;向下为掌握硬件系统的原理,打下实践应用基础。
1.机器相关性。
这是一种面向机器的低级语言,通常是为特定的计算机或系列计算机专门设计的。因为是机器指令的符号化表示,故不同的机器就有不同的汇编语言。使用汇编语言能面向机器并较好地发挥机器的特性,得到质量较高的程序。
2.高速度和高效率。
汇编语言保持了机器语言的优点,具有直接和简捷的特点,可有效地访问、控制计算机的各种硬件设备,如磁盘、存储器、CPU、I/O端口等,且占用内存少,执行速度快,是高效的程序设计语言。
3.编写和调试的复杂性。
由于是直接控制硬件,且简单的任务也需要很多汇编语言语句,因此在进行程序设计时必须面面俱到,需要考虑到一切可能的问题,合理调配和使用各种软、硬件资源。这样,就不可避免地加重了程序员的负担。与此相同,在程序调试时,一旦程序的运行出了问题,就很难发现。
x86处理器指令集
数据传送指令
这部分指令包括通用数据传送指令MOV、条件传送指令CMOVcc、堆栈操作指令PUSH/PUSHA/PUSHAD/POP/POPA/POPAD、交换指令XCHG/XLAT/BSWAP、地址或段描述符选择子传送指令LEA/LDS/LES/LFS/LGS/LSS等。注意,CMOVcc不是一条具体的指令,而是一个指令簇,包括大量的指令,用于根据EFLAGS寄存器的某些位状态来决定是否执行指定的传送操作。
整数和逻辑运算指令
这部分指令用于执行算术和逻辑运算,包括加法指令ADD/ADC、减法指令SUB/SBB、加一指令INC、减一指令DEC、比较操作指令CMP、乘法指令MUL/IMUL、除法指令DIV/IDIV、符号扩展指令CBW/CWDE/CDQE、十进制调整指令DAA/DAS/AAA/AAS、逻辑运算指令NOT/AND/OR/XOR/TEST等。
这部分指令用于将寄存器或内存操作数移动指定的次数。包括逻辑左移指令SHL、逻辑右移指令SHR、算术左移指令SAL、算术右移指令SAR、循环左移指令ROL、循环右移指令ROR等。
位操作指令
这部分指令包括位测试指令BT、位测试并置位指令BTS、位测试并复位指令BTR、位测试并取反指令BTC、位向前扫描指令BSF、位向后扫描指令BSR等。
条件设置指令
这不是一条具体的指令,而是一个指令簇,包括大约30条指令,用于根据EFLAGS寄存器的某些位状态来设置一个8位的寄存器或者内存操作数。比如SETE/SETNE/SETGE等等。
控制转移指令
这部分包括无条件转移指令JMP、条件转移指令Jcc/JCXZ、循环指令LOOP/LOOPE/LOOPNE、过程调用指令CALL、子过程返回指令RET、中断指令INTn、INT3、INTO、IRET等。注意,Jcc是一个指令簇,包含了很多指令,用于根据EFLAGS寄存器的某些位状态来决定是否转移;INT n是软中断指令,n可以是0到255之间的数,用于指示中断向量号。
串操作指令
这部分指令用于对数据串进行操作,包括串传送指令MOVS、串比较指令CMPS、串扫描指令SCANS、串加载指令LODS、串保存指令STOS,这些指令可以有选择地使用REP/REPE/REPZ/REPNE和REPNZ的前缀以连续操作。
输入输出指令
这部分指令用于同外围设备交换数据。包括端口输入指令IN/INS、端口输出指令OUT/OUTS。
高级语言辅助指令
这部分指令为高级语言的编译器提供方便。包括创建栈帧的指令ENTER和释放栈帧的指令LEAVE。
控制和特权指令
这部分包括无操作指令NOP、停机指令HLT、等待指令WAIT/MWAIT、换码指令ESC、总线封锁指令LOCK、内存范围检查指令BOUND、全局描述符表操作指令LGDT/SGDT、中断描述符表操作指令LIDT/SIDT、局部描述符表操作指令LLDT/SLDT、描述符段界限值加载指令LSR、描述符访问权读取指令LAR、任务寄存器操作指令LTR/STR、请求特权级调整指令ARPL、任务切换标志清零指令CLTS、控制寄存器和调试寄存器数据传送指令MOV、高速缓存控制指令INVD/WBINVD/INVLPG、型号相关寄存器读取和写入指令RDMSR/WRMSR、处理器信息获取指令CPUID、时间戳读取指令RDTSC等。
浮点和多媒体指令
这部分指令用于加速浮点数据的运算,以及用于加速多媒体数据处理的单指令多数据(SIMD及其扩展SSEx)指令。这部分指令数据非常庞大,无法一一列举,请自行参考INTEL手册。
虚拟机扩展指令
这部分指令包括INVEPT/INVVPID/VMCALL/VMCLEAR/VMLAUNCH/VMRESUME/VMPTRLD/VMPTRST/VMREAD/VMWRITE/VMXOFF/VMON等。
对于一个全面了解微机原理的程序员,汇编语言是必修语言。
已发表评论数()
请填写推刊名
描述不能大于100个字符!
权限设置: 公开
仅自己可见
正文不准确
标题不准确
排版有问题
主题不准确
没有分页内容
图片无法显示
视频无法显示
与原文不一致君,已阅读到文档的结尾了呢~~
2016新编高级语言、汇编语言及机器语言的区别
扫扫二维码,随身浏览文档
手机或平板扫扫即可继续访问
2016新编高级语言、汇编语言及机器语言的区别
举报该文档为侵权文档。
举报该文档含有违规或不良信息。
反馈该文档无法正常浏览。
举报该文档为重复文档。
推荐理由:
将文档分享至:
分享完整地址
文档地址:
粘贴到BBS或博客
flash地址:
支持嵌入FLASH地址的网站使用
html代码:
&embed src='/DocinViewer--144.swf' width='100%' height='600' type=application/x-shockwave-flash ALLOWFULLSCREEN='true' ALLOWSCRIPTACCESS='always'&&/embed&
450px*300px480px*400px650px*490px
支持嵌入HTML代码的网站使用
您的内容已经提交成功
您所提交的内容需要审核后才能发布,请您等待!
3秒自动关闭窗口  汇编语言是计算机提供给用户的执行效率极高、功能极强的一种程序设计语言,它能够直接控制计算机硬件,并最大限度地发挥硬件的能力。对程序的执行时间和占用空间要求很高的场合,须使用汇编语言才能满足要求。汇编语言还可以与高级语言混合编程,但由于编写和调试汇编语言程序要比高级语言复杂,因此其应用不如高级语言广泛。
  计算机语言分为机器语言、汇编语言和高级语言。机器语言是计算机能直接识别的语言,它是一种由0和1组成的二进制语言;汇编语言是对机器语言符号化了的语言,与机器指令一一对应,它与机器语言都是一种低级语言;高级语言是一种自然语言,是用语句和函数表示的语言,符合我们平常的语言表述,容易被人们接受。   汇编语言比机器语言的可读性要好,但跟高级语言比,可读性还是较差,且不符合自然语言的表述。但它编写的程序具有存储空间占用少、可直接调用硬件资源、执行速度快的特点,这些都是高级语言所无法比拟的。在实际应用中,是否使用汇编语言,取决于具体应用要求、软件开发时间和质量等方面。   汇编语言是将操作码和操作数用约定的符号表示,所以比机器语言容易掌握和运用。又因为要使用到硬件资源,得有一定的硬件知识,所以比高级语言要难掌握。那么在什么场合需要用汇编语言呢?一般来说,有以下几种场合可以使用:   ①程序要具有较快的执行时间,或只能占用较小的存储容量。例如,操作系统的核心程序段,实时控制系统的软件,智能仪器仪表的控制程序等。   ②程序与计算机硬件密切相关,程序要直接、有效地控制硬件。例如,I/O接口电路的初始化程序段,外部设备的低层驱动程序等。   ③大型软件需要提高性能、优化处理的部分。例如,计算机系统频繁调用的子程序、动态连接库等。   ④受存储容量限制的应用领域,如:家用电器的计算机控制功能等。   另外,汇编语言还有许多实际应用,例如分析具体系统尤其是该系统的低层软件、加密解密软件、逆向分析,对有害代码的分析和防治计算机病毒等等;高级语言编写程序如果涉及硬件的操作,一般用汇编语言来编写子程序供高级语言来调用。   说到这,有的同学可能会问,那么与高级语言相比,汇编语言有什么不同之处呢?具体的讲,有以下几点不同:   ①汇编语言与处理器密切相关。每种处理器都有自己的指令系统,相应的汇编语言各不相同。所以,汇编语言程序的通用性、可移植性较差。   ②汇编语言功能有限,又涉及寄存器、主存单元等硬件细节,所以编写程序比较繁琐,调试也比较困难。高级语言提供了强大的功能,采用类似自然语言的语法,所以容易被掌握和应用,它不必关心诸如标志、堆栈等琐碎问题。   ③汇编语言本质上就是机器语言,它可以直接、有效地控制计算机硬件,因而容易产生运行速度快、指令序列短小的高效率目标程序。高级语言不易直接控制计算机的各种操作,编译程序产生的目标程序往往比较庞大、程序难以优化,所以运行速度较慢。   可见汇编语言的主要优点是可以编写在“时间”和“空间”两方面最有效的程序。但它的缺点也是明显的,它与处理器密切有关,要求程序员比较熟悉计算机硬件系统、考虑许多细节问题,因此,有时可以采用高级语言和汇编语言混合编程的方法,互相取长补短,更好地解决实际问题。   汇编语言最大的特点就是采用指令语句,也就是用符号语言来代替机器语言,例如用汇编语言书写的指令:MOV AX,BX和ADD AX,8。前者功能是要求CPU把寄存器BX的值传送给寄存器AX;而后者是要求把寄存器AX的值和8相加,并把结果传送给寄存器AX。是翻译过程中:汇编程序能把左边汇编语言源程序翻译成右边的机器指令序列。其中,把汇编语言指令“MOV AX,BX”和“ADD AX,8”分别转换成机器指令898DH和050800H,而后者是CPU能直接识别的,也就是机器语言,所以,计算机可以直接执行它们。由此可见,汇编语言只是把机器语言逐条指令代码来表示,这样做的好处是把难于理解和记忆的二进制语言(机器语言)转化为易于理解和记忆的符号。   另一个特点是它所操作的对象不是具体的数据,而是寄存器或者存储器,也就是说它是直接和寄存器和存储器打交道,这也是为什么汇编语言的执行速度要比其它语言快,但同时也使编程更加复杂,因为既然数据是存放在寄存器或存储器中,那必然就存在着寻址方式,如上面的例子,我们就不能像高级语言一样直接使用数据,而先要从相应的寄存器AX、BX中把数据取出。这增加了复杂性,因为这部分工作是由编译系统来完成的,而在汇编语言中是由程序员自己来完成的,这无异增加了复杂程度。   再者,汇编语言指令是机器指令的一种符号表示,而不同类型的CPU有不同的机器指令系统,就有不同的汇编语言,所以,汇编语言程序与机器有着密切的关系。所以,除了同系列、不同型号CPU之间的汇编语言程序有一定程度的可移植性之外,其它不同类型(如:小型机和微机等)cPU之间的汇编语言程序是无法移植的,也就是说,汇编语言程序的通用性和可移植性要比高级语言程序低。   很多高级语言如Visual C++和Visual Basic等对实现的细节进行了封装,由于封装的关系,各种高级语言或多或少就存在着某种“缺陷”,比如,VB不支持指针,很多需要使用指针的API用起来就很不方便,像多线程一类的特征在VB中就无法实现;而汇编语言见到的是一个最真实的操作系统,可以用最灵活的方式使用各种系统功能。   汇编语言是各种编程语言中与硬件关系最密切、最直接的一种,在时间和空间的效率上也最高的一种,它是高等院校计算机应用技术必修的专业课程之一,对于训练学生掌握程序设计技术,熟悉上机操作和程序调试技术有着重要的作用;并对已有程序的代码分析和重新开发有着不可替代的作用。我们可用它作为工具来分析已有的软件,找出其优点,改进其不好的地方,提高其原有系统的性能。   总之,汇编语言在计算机语言发展过程中扮演了不可替代的角色。计算机专业的学生,不应仅仅满足于利用他人的成果来解决实际问题,还应具备有分析、研究原有软件系统,改进、完善、原有系统功能供用户使用的能力。当前我国的汇编语言人才缺乏,很多大公司、企业都需要这方面的人才。因此,当大家都在为各种高级语言而不遗余力的时候,我们可以独辟蹊径,相信可以闯出一片属于自己的天地。      (作者单位:枣庄学院)
百度搜索“就爱阅读”,专业资料、生活学习,尽在就爱阅读网,您的在线图书馆!
欢迎转载:
推荐:    

我要回帖

更多关于 汇编语言是高级语言吗 的文章

 

随机推荐