Assembly language
#编程语言# 0 0
Assembly language(汇编语言)是任何一种用于电子计算机、微处理器、微控制器或其他可编程器件的低级语言,亦称为符号语言。在汇编语言中,用助记符代替机器指令的操作码,用地址符号或标号代替指令或操作数的地址。Assembly language能够轻松读取存储器状态以及I/O接口情况,可以准确高效的被执行,具有很强的扩展性。它也具有代码冗长、编写困难、容易出BUG而且比较难调试、代码兼容性差、后期维护不易等缺点。
  • 中文名称: 汇编语言
  • 外文名称: Assembly Language
  • 发布时间: 20世纪50年代
详细介绍 PROFILE +

基本介绍

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

简介

汇编语言,即第二代计算机语言,用一些容易理解和记忆的缩写单词来代替一些特定的指令,例如:用"ADD"代表加法操作指令,"SUB"代表减法操作指令,以及"INC"代表增加1,"DEC"代表减去1,"MOV"代表变量传递等等,通过这种方法,人们很容易去阅读已经完成的程序或者理解程序正在执行的功能,对现有程序的bug修复以及运营维护都变得更加简单方便。但计算机的硬件不认识字母符号,这时候就需要一个专门的程序把这些字符变成计算机能够识别的二进制数或机器语言。因为汇编语言只是将机器语言做了简单编译,所以并没有根本上解决机器语言的特定性,所以汇编语言和机器自身的编程环境息息相关,推广和移植很难,但是还是保持了机器语言优秀的执行效率,因为他的可阅读性和简便性,汇编语言到现在依然是常用的编程语言之一。汇编语言不像其他大多数的程序设计语言一样被广泛用于程序设计。在今天的实际应用中,它通常被应用在底层,硬件操作和高要求的程序优化的场合。驱动程序、嵌入式操作系统和实时运行程序都需要汇编语言。

发展历程

编程语言

自从1946年世界上第一台电子计算机问世,人类和机器的交流方式和语言就成为了软件工程师和计算机从业者的主要研究方向,更有效更简便的编程语言成为了软件工程师的新宠儿,伴随着计算机的飞速发展,计算机的硬件升级速度也越来越快,对编程语言的要求也日益严格。在过去的几十年,编程语言有了长足的发展,至今已经有四代语言问世。大量的编程语言为了满足不同领域的编程要求和软件功能,经历了被修改,被取代,被发展等过程,最终发展成了现在编程语言的多样化。尽管人们多次试图寻找一个能够适应所有编程环境的通用语言,但是却没有一次成功。程序设计语言正在与现代科技日益飞跃,人类的智慧在日益彰显。

机器语言

计算机的硬件作为一种电路元件,它的输出和输入只能是有电或者没电,也就是所说的高电平和低电平,所以计算机传递的数据是由“0”和“1”组成的二进制数,所以说二进制的语言是计算机语言的本质。计算机发明之初,人们为了去控制计算机完成自己的任务或者项目,只能去编写“0”、“1”这样的二进制数字串去控制电脑,其实就是控制计算机硬件的高低电平或通路开路,这种语言就是机器语言。直观上看,机器语言十分晦涩难懂,其中的含义往往要通过查表或者手册才能理解,使用的时候非常痛苦,尤其当你需要修改已经完成的程序时,这种看起来无序的机器语言会让你无从下手,也很难找到程序的错误。而且,不同计算机的运行环境不同,指令方式操作方式也不尽相同,所以当你在这种机器语言就有了特定性,只能在特定的计算机上执行,而一旦换了机器就需要重新编程,这极大的降低了程序的使用和推广效率。但由于机器语言具有特定性,完美适配特定型号的计算机,故而运行效率远远高过其他语言。机器语言,也就是第一代编程语言。

汇编语言

不难看出机器语言作为一种编程语言,灵活性较差可阅读性也很差,为了减轻机器语言带给软件工程师的不适应,人们对机器语言进行了升级和改进:用一些容易理解和记忆的字母,单词来代替一个特定的指令。通过这种方法,人们很容易去阅读已经完成的程序或者理解程序正在执行的功能,对现有程序的bug修复以及运营维护都变得更加简单方便,这种语言就是我们所说的汇编语言,即第二代计算机语言。

比起机器语言,汇编语言具有更高的机器相关性,更加便于记忆和书写,但又同时保留了机器语言高速度和高效率的特点。汇编语言仍是面向机器的语言,很难从其代码上理解程序设计意图,设计出来的程序不易被移植,故不像其他大多数的高级计算机语言一样被广泛应用。所以在高级语言高度发展的今天,它通常被用在底层,通常是程序优化或硬件操作的场合。

高级语言

在编程语言经历了机器语言,汇编语言等更新之后,人们发现了限制程序推广的关键因素——程序的可移植性。需要设计一个能够不依赖于计算机硬件,能够在不同机器上运行的程序。这样可以免去很多编程的重复过程,提高效率,同时这种语言又要接近于数学语言或人的自然语言。在计算机还很稀缺的50年代,诞生了第一个高级编程语言。当时计算机的造价不菲,但是每天的计算量又有限,如何有效的利用计算机有限的计算能力成为了当时人们面对的问题。同时,因为资源的稀缺,计算机的运行效率也成为了那个年代工程师追寻的目标。为了更高效的使用计算机,人们设计出了高级编程语言,来满足人们对于高效简洁的编程语言的追求。

产品设计

语言组成

由于汇编指令系统庞大,因而需构建指令系统体系,其指令数量庞大,格式复杂,可记忆性差等。指令中最难的是指令所支持的寻址方式,其实质就是指令中操作数如何获取。对于处理器而言,就是如何找到他所需的数据。但对于计算机底层的汇编语言而言,这种寻址方式将涉及大量的计算存储格式,与复杂的存储管理方式紧密相关,因而难以理解。最后,汇编指令还关系到如何影响标志位,但处理器标志位非常复杂,因而对其机制掌握就比较困难。

传送指令

包括通用数据传送指令MOV、条件传送指令CMOVcc、堆栈操作指令PUSH/PUSHA/PUSHAD/POP/POPA/POPAD、交换指令XCHG/XLAT/BSWAP、地址或段描述符选择子传送指令LEA/LDS/LES/LFS/LGS/LSS等。

逻辑运算

这部分指令用于执行算术和逻辑运算,包括加法指令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等。

控制转移

这部分包括无条件转移指令JMP、条件转移指令JCC/JCXZ、循环指令LOOP/LOOPE/LOOPNE、过程调用指令CALL、子过程返回指令RET、中断指令INTn、INT3、INTO、IRET等。

串操作

这部分指令用于对数据串进行操作,包括串传送指令MOVS、串比较指令CMPS、串扫描指令SCANS、串加载指令LODS、串保存指令STOS,这些指令可以有选择地使用REP/REPE/REPZ/REPNE和REPNZ的前缀以连续操作。

输入输出

这部分指令用于同外围设备交换数据,包括端口输入指令IN/INS、端口输出指令OUT/OUTS。

特色功能

语言特点

汇编语言是计算机提供给用户的最快最有效的语言,也是能够利用计算机的所有硬件特性并能够直接控制硬件的唯一语言。但是由于编写和调试汇编语言程序要比高级语言复杂,因此目前其应用不如高级语言广泛。

汇编语言比机器语言的可读性要好,但跟高级语言比较而言,可读性还是较差。不过采用它编写的程序具有存储空间占用少、执行速度快的特点,这些是高级语言所无法取代的。在实际应用中,是否使用汇编语言,取决于具体应用要求、开发时间和质量等方面作权衡。

优点

汇编语言作为机器语言之上的第二代编程语言,它也有很多优点:

可以轻松的读取存储器状态以及硬件I/O接口情况

编写的代码因为少了很多编译的环节,可以能够准确的被执行

作为一种低级语言,可扩展性很高

缺点

因为代码非常单调,特殊指令字符很少,所以造成了代码的冗长以及编写的困难

因为汇编仍然需要自己去调用存储器存储数据,很容易出现BUG,而且调试起来也不容易

就算完成了一个程序,后期维护时候也需要耗费大量的时间。

因为机器的特殊性造成了代码兼容性差的缺陷。

对比高级语言

区别

汇编语言的特点是容易被计算机识别和执行,使用它进行编程可以减少占用空间、提高运行速度,并能直接对硬件实施控制。在需要实时控制的时候,有着不可替代的重要地位,但汇编语言在编程和理解时要复杂、困难一些,尤其是在进行数据处理或是逻辑运算时更加凸显出其劣势。

高级语言是面向使用者的语言,能更准确地被程序员所理解,它的表达能力强,功能多,编程效率高,上手速度快,自动化程度高,因而更受欢迎。在大部分软件开发中,使用者都采用高级语言编程,以提高编程效率。但在要求存储空间小,执行速度快,需直接对硬件进行控制的场合,则应用汇编语言编程,以达到优化程序速度的目的。

联系

这样两种看似差别很大的语言,它们之间又有着紧密的联系。在一些程序设计当中,如果把两者结合起来使用,将两种语言的优势同时发挥出来,则可以解决很多特性难题。在许多程序的设计当中,高级语言和汇编语言可以相互交叉调用,进行参数传递,共享数据信息,这便是所谓的混合编程。程序员往往在高级语言程序中直接嵌入汇编语句,以实现对硬件直接进行控制的功能,这是混合编程中常见的做法。也可以在高级语言程序中使用汇编语言中定义的变量和常量,或使用内部函数对汇编语句进行调用。简而言之,这类混合编程的方法可以让高级语言与汇编语言互相取长补短,各自发挥各自优势,同时减少各自缺点所带来的不便,善用这个方法可以使开发和编程工作达到事半功倍的效果。

相关技术

汇编器

典型的现代汇编器(Assembler)建造目标代码,由解译组语指令集的易记码(Mnemonics)到操作码(OpCode),并解析符号名称(Symbolic Names)成为存储器地址以及其它的实体。使用符号参考是汇编器的一个重要特征,它可以节省修改程序后人工转址的乏味耗时计算。基本就是把机器码变成一些字母而已,编译的时候再把输入的指令字母替换成为晦涩难懂机器码。

编译环境

用汇编语言等非机器语言书写好的符号程序称为源程序,汇编语言编译器的作用是将源程序翻译成目标程序。目标程序是机器语言程序,当它被安置在内存的预定位置上后,就能被计算机的CPU处理和执行。

汇编的调试环境总的来说比较少,也很少有非常好的编译器。编译器的选择依赖于目标处理器的类型和具体的系统平台。一般来说,功能良好的编译器用起来应当非常方便,比如,应当可以自动整理格式、语法高亮显示,集编译、链接和调试为一体,方便实用。

对于广泛使用的个人计算机来说,可以自由选择的汇编语言编译器有MASM、NASM、TASM、GAS、FASM、RADASM等,但大都不具备调试功能。如果是为了学习汇编语言,轻松汇编因为拥有一个完善的集成环境,是一款非常适合初学者的汇编编译器。

品牌介绍

发展前景

随着现代软件系统越来越庞大复杂,大量经过了封装的高级语言如C/C++,Pascal/Object Pascal也应运而生。这些新的语言使得程序员在开发过程中能够更简单,更有效率,使软件开发人员得以应付快速的软件开发的要求。而汇编语言由于其复杂性使得其适用领域逐步减小。但这并不意味着汇编已无用武之地。由于汇编更接近机器语言,能够直接对硬件进行操作,生成的程序与其他的语言相比具有更高的运行速度,占用更小的内存,因此在一些对于时效性要求很高的程序、许多大型程序的核心模块以及工业控制方面大量应用。

虽然随着半导体技术、编程技术的不断发展,在实际工程应用中确实很少看到汇编语言的身影,但这并不能说明汇编语言没用,已被其他高级语言所取代。嵌入式系统的底层驱动、计算机的BIOS还是要用汇编语言实现。汇编语言是培养学生理解硬件资源的语言,是学习和理解其他高级程序设计语言的基础,是计算机组成原理、接口与通信技术、计算机控制技术和数据采集等许多专业课的前导课程,是必要的基础知识,起着承上启下的作用。

本百科词条由网站注册用户【 知识小玲 】编辑上传提供,当前页面所展示的词条介绍涉及宣传内容属于注册用户个人编辑行为,网站不完全保证内容信息的准确性、真实性,也不代表本站立场。 版权声明 反馈 我要认领
词条所在榜单
您还未登录,依《网络安全法》相关要求,请您登录账户后再提交发布信息。点击登录>>如您还未注册,可点击注册>>,感谢您的理解及支持!
最新评论
暂无评论
相关知识文章
十大热门编程语言排名 编程语言排行榜2023 编程语言哪个前景好
全世界有数种编程语言,但最常用的还是那几种。如今随着时代的发展,一些编程语言的受欢迎程度也发生着微妙的变化。本文中maiGoo小编就带大家看...
十大好用的b2b网站 b2b电子商务平台排名 b2b商务平台有哪些
B2B是电子商务最成熟的商业模式之一。Maigoo网编辑从百度发布的《B2B行业洞察报告》获悉,机械工业、建材家装、水暖电工等等,是需求量最...
十大二手书交易网站 旧书网站推荐 卖二手书去哪个网站好
伴随90后、00后新消费主力人群的形成,各大二手交易平台逐渐年轻化,出售闲置物品也更加多元,除了交易数量较多的汽车、数码、服装等商品外,图书...
十大游戏交易平台排行榜 正规游戏账号交易平台 热门游戏交易平台
游戏交易平台有官方的,也有第三方的,无论选择哪一种,“安全交易”都是至关重要的,下面CNPP小编带大家了解下游戏交易平台有哪些、游戏交易平台...
国内十大电影下载网站 电影下载网站哪个最好 电影下载网站排行
随着国内版权意识的苏醒,以及各种“严打”,各个电影下载网站岌岌可危,那至今存活的电影下载网站哪个最好呢?Maigoo小编就为大家带来了国内十...
48万+
十大炒股软件 炒股软件排行榜前十名 股票软件哪个最好用
炒股软件哪个最好?市面上的股票软件众多,而对于分析行情走势,了解市场的动态,选择一款好的炒股软件很重要,那么最好的股票app有哪些?下面Ma...
46万+
十大手游交易平台排行榜 靠谱的手游交易平台 正规手游交易平台推荐
近些年手机游戏市场规模逐年增长,游戏装备交易、账号交易,已是屡见不鲜。那么手游交易平台有哪些呢,手游交易平台哪个好?下面maigoo小编就和...
十大可以赚钱的软件 十大赚钱软件排名 有什么能赚钱的软件
你在手机上消磨时间,而有人已经在手机上赚到了生活费。下面就跟随Maigoo小编来看看挣钱的软件有哪些、适合学生赚钱的软件有哪几个。热门且合法...
55万+
十大最好玩小程序游戏 微信小程序游戏排行 最火微信小游戏推荐
微信小程序游戏是时下最主流的休闲方式之一。要说最火小程序游戏,如羊了个羊、肥鹅健身房、动物餐厅、成语小秀才、旅行串串、腾讯桌球等,均名列其中...
十大图片网站排行榜 图片素材网站推荐 高清图片网站有哪些
图片素材通常没有突出的主题,但经过设计师的加工后,就成为了一件完整的作品。一个好的图片素材能让设计作品的完工起到事半功倍的效果。本文中mai...
十大录屏软件 录屏软件哪个好 屏幕录制软件哪个好用
随着电脑录屏需求的急剧增长,win10系统的基本普及,电脑基于xbox自带的录屏功能,解决了越来越多人的需求;然而除了这项自带应用外,第三方...
十大最好用的输入法盘点 最受欢迎的输入法排行 十大输入法品牌
输入法是指为将各种符号输入计算机或其他设备(如手机)而采用的编码方法,同时是书写工具克服墨水限制的最终结果,是一种拥有无限墨水的书写工具,是...
十大编程软件排行榜 编程开发工具大全 c语言编程软件有哪些
世界上主流的编程语言有C、Java、Python、C++、C#、Visual Basic、PHP等,针对这些编程语言,又有相对应的Visua...
十大天气预报APP软件 好用的天气app排行 天气预报软件哪个最准确
比达咨询(BDR)研究数据显示,我国移动天气软件以2009-2013年为萌芽期,各类天气预报app相继衍生,到2016年得益于大数据、物联网...
十大壁纸软件排名 电脑壁纸软件哪个好用 动态壁纸软件有哪些
无论是早年的Win7,还是逐渐普及开来的Win10,许多用户仍然对原生桌面的美观性有着一成不变的追求,进而使用起了第三方美化工具,如各类动态...
十大发型设计软件 测脸型配发型软件叫啥 测适合自己发型的软件推荐
我国美容美发已达到3500亿元以上的市场规模,并处于不断增长中。在这个具备千亿产值的行业里,发型设计软件是一个较新的领域,还有很大的发展空间...
十大解压软件 解压缩软件哪个好用 文件压缩软件哪个好
在这个信息碎片化的时代,电脑上各种类型的文件数不胜数,一款好用的压缩软件,既能以较高质量集合保存个人信息,又能节省硬盘空间;纵观全网,备受推...
十大ppt模板网站排行 好用的ppt网站推荐 ppt模板下载网站有哪些
一个优秀的PPT,虽然不能决定你的成与败,但能直接影响观看者对你的工作能力、产品或服务的认同感,特别是在产品发布、路演、招商引资等场合。本文...
十大远程控制软件 远程软件哪个好用 远程控制电脑的软件有哪些
远程控制软件可以跨空间的操控对方电脑,被广泛用于远程办公、远程教育、远程指挥、远程协助、远程维护,已成为电脑必备应用;那么纵观全网,有哪些好...
七大去马赛克软件 视频去马赛克软件哪个好用 马赛克去除工具推荐
马赛克是使用频率最高、使用范围最广的一种图片/视频处理手段,涉及新闻、动漫、电影、连续剧、写真等方面。作为一种具备了数十年历史的处理技术,马...