美文网首页
汇编语言与机器语言

汇编语言与机器语言

作者: 线断木偶人 | 来源:发表于2018-07-01 18:07 被阅读0次
    什么是汇编语言 百度一下

    汇编语言(assembly language)是一种用于电子计算机微处理器微控制器或其他可编程器件的低级语言,亦称为符号语言。在汇编语言中,用助记符(Mnemonics)代替机器指令操作码,用地址符号(Symbol)或标号(Label)代替指令或操作数的地址。在不同的设备中,汇编语言对应着不同的机器语言指令集,通过汇编过程转换成机器指令。普遍地说,特定的汇编语言和特定的机器语言指令集是一一对应的,不同平台之间不可直接移植。

    简单来说,汇编语言是机器语言(二进制指令)的文本形式,与指令是一一对应的关系。汇编语言由汇编编译器汇编为机器语言(二进制指令)交CPU执行。

    汇编语言和机器语言

    汇编语言(符号语言)是面向CPU的,因此CPU不同,汇编语言就不一样,有什么CPU架构就有什么汇编语言,比如x86架构的就是x86汇编,ARM架构的CPU对应于ARM汇编,MIPS架构的CPU对应于MIPS汇编。

    CPU根据总线宽度可以分8位,16位,32位,64位等,所以相应的就有8位汇编,16位汇编,32位汇编等。

    汇编语言优点

    1、因为用汇编语言设计的程序最终被转换成机器指令,故能够保持机器语言的一致性,直接、简捷,并能像机器指令一样访问、控制计算机的各种硬件设备,如磁盘、存储器CPUI/O端口等。使用汇编语言,可以访问所有能够被访问的软、硬件资源。

    2、目标代码简短,占用内存少,执行速度快,是高效的程序设计语言,经常与高级语言配合使用,以改善程序的执行速度和效率,弥补高级语言在硬件控制方面的不足,应用十分广泛。

    缺点

    1、汇编语言是面向机器的,处于整个计算机语言层次结构的底层,故被视为一种低级语言,通常是为特定的计算机或系列计算机专门设计的。不同的处理器有不同的汇编语言语法和编译器,编译的程序无法在不同的处理器上执行,缺乏可移植性;

    2、难于从汇编语言代码上理解程序设计意图,可维护性差,即使是完成简单的工作也需要大量的汇编语言代码,很容易产生bug,难于调试;

    3、使用汇编语言必须对某种处理器非常了解,而且只能针对特定的体系结构和处理器进行优化,开发效率很低,周期长且单调。

    汇编语言与高级语言的区别:

    1.汇编语言依赖于硬件体系(CPU),且助记符量大难记,于是人们又发明了更加易用的所谓高级语言。在这种语言下,其语法和结构更类似普通英文,且由于远离对硬件的直接操作,使得一般人经过学习之后都可以编程。高级语言通常按其基本类型、代系、实现方式、应用范围等分类。

    2.汇编语言与cpu有关,高级语言与cpu无关。
    高级语言有选择,循环,汇编语言没有。
    高级语言有符号整数型,无符号整数型,浮点型,汇编语言不区分,只有16位的字,32位的双字
    高级语言运算时像数学一样+-*/, 汇编语言用的是指令,add, sub, multi
    汇编语言可直接使用寄存器,高级语言不可以

    3.编译器的设计,有的编译器直接将高级语言编译成机器语言,有的编译器直接将高级语言编译成汇编语言。

    编译器

    简单讲,编译器就是将“一种语言(通常为高级语言)”翻译为“另一种语言(通常为低级语言)”的程序。一个现代编译器的主要工作流程:源代码 (source code) → 预处理器 (preprocessor) → 编译器 (compiler) → 目标代码 (object code) → 链接器 (Linker) → 可执行程序 (executables)

    高级计算机语言便于人编写,阅读交流,维护。机器语言是计算机能直接解读、运行的。编译器将汇编或高级计算机语言源程序(Source program)作为输入,翻译成目标语言(Target language)机器代码的等价程序。源代码一般为高级语言 (High-level language), 如PascalCC++Java汉语编程等或汇编语言,而目标则是机器语言的目标代码(Object code),有时也称作机器代码(Machine code)。

    对于C#、VB等高级语言而言,此时编译器完成的功能是把源码(SourceCode)编译成通用中间语言(MSIL/CIL)的字节码(ByteCode)。最后运行的时候通过通用语言运行库的转换,编程最终可以被CPU直接计算的机器码(NativeCode)。

    高级语言:

    是相对于汇编语言而言的,是高度封装了的编程语言,与低级语言相对。它是以人类的日常语言为基础的一种编程语言,使用一般人易于接受的文字来表示(例如汉字、不规则英文或其他外语),从而使程序编写员编写更容易,亦有较高的可读性,以方便对电脑认知较浅的人亦可以大概明白其内容。

    高级语言基本脱离了机器的硬件系统,用人们更易理解的方式编写程序。编写的程序称之为源程序。主要有C,C++,Python,perl 等等。
    高级语言主要分为2类:
    解释型:原代码由解释器一边解释为可执行的机器语言,一边执行,效率比较低,而且不能生成可独立执行的可执行文件,应用程序不能脱离其解释器,但这种方式比较灵活,可以动态地调整、修改应用程序。如python。

    编译类:编译是指在应用源程序执行之前,就将程序源代码“翻译”成目标代码(机器语言),因此其目标程序可以脱离其语言环境独立执行,使用比较方便、效率较高。但应用程序一旦需要修改,必须先修改源代码,再重新编译生成新的目标文件(* .OBJ)才能执行,只有目标文件而没有源代码,修改很不方便。现在大多数的编程语言都是编译型的,例如C/C++。

    关于汇编语言,可参考http://www.ruanyifeng.com/blog/2018/01/assembly-language-primer.html

    相关文章

      网友评论

          本文标题:汇编语言与机器语言

          本文链接:https://www.haomeiwen.com/subject/gfqhuftx.html