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还是要用汇编语言实现。汇编语言是培养学生理解硬件资源的语言,是学习和理解其他高级程序设计语言的基础,是计算机组成原理、接口与通信技术、计算机控制技术和数据采集等许多专业课的前导课程,是必要的基础知识,起着承上启下的作用。

本百科词条由网站注册用户【 CN109778 】编辑上传提供,当前页面所展示的词条介绍涉及宣传内容属于注册用户个人编辑行为,网站不完全保证内容信息的准确性、真实性,也不代表本站立场。 版权声明 反馈 我要认领
词条所在榜单
相关知识文章
十大热门编程语言排名 编程语言排行榜 编程语言哪个前景好
全世界有数种编程语言,但最常用的还是那几种。如今随着时代的发展,一些编程语言的受欢迎程度也发生着微妙的变化。本文中maiGoo小编就带大家看看当下最具影响力的编程语言有哪些,例如Python、C、C++、Java、C#、JavaScript、Visual Basic、PHP等,仍具有一定代表性,仍是现在最流行的编程语言。
十大二手书交易网站 旧书网站推荐 卖二手书去哪个网站好
伴随90后、00后新消费主力人群的形成,各大二手交易平台逐渐年轻化,出售闲置物品也更加多元,除了交易数量较多的汽车、数码、服装等商品外,图书也是一大类别,相继衍生的孔夫子旧书网、多抓鱼、有路网、旧书街、二手教材网、123图书馆、丁书网等卖旧书的网站/二手书交易网站,成为了许多人的首选交易平台,下面和maigoo小编一起看看!
十大游戏交易平台排行榜 正规游戏账号交易平台 热门游戏交易平台
游戏交易平台有官方的,也有第三方的,无论选择哪一种,“安全交易”都是至关重要的,那么游戏交易平台有哪些?游戏交易平台哪个好?下面小编为大家盘点十大热门游戏交易平台,包括交易猫、5173平台、淘手游、网易藏宝阁、SteamPY、悠悠游戏服务网等,一起来了解下吧。
十大编程软件排行榜 编程开发工具大全 c语言编程软件有哪些
世界上主流的编程语言有C、Java、Python、C++、C#、Visual Basic、PHP等,针对这些编程语言,又有相对应的Visual C++、Visual Studio、Eclipse、Dev-C++、Notepad++、MyEclipse、JDK、Code::Blocks、Gcc、Sublime Text、IntelliJ IDEA、Ultraedit、C-Free等编程软件,被广泛运用,下面跟随maigoo网编辑一起了解下这些编程工具!
十大天气预报APP软件 好用的天气app排行 天气预报软件哪个最准确
比达咨询(BDR)研究数据显示,我国移动天气软件以2009-2013年为萌芽期,各类天气预报app相继衍生,到2016年得益于大数据、物联网、云计算等技术的应用,从而进入高速发展期。时至今日,墨迹天气、最美天气、天气通、彩云天气、2345天气王、中国天气通等天气app已与人们的生活密不可分,下面跟随MAIGoo编辑来认识下!
十大发型设计软件 测脸型配发型软件叫啥 测适合自己发型的软件推荐
我国美容美发已达到3500亿元以上的市场规模,并处于不断增长中。在这个具备千亿产值的行业里,发型设计软件是一个较新的领域,还有很大的发展空间。这类软件一定程度上能帮助个人无成本尝试新发型,同时亦具有娱乐性。下面和maigoo小编来看看发型屋、美可发型、试发型相机、测脸型等脸型测试配发型的软件!
十大解压软件 解压缩软件哪个好用 文件压缩软件哪个好
在这个信息碎片化的时代,电脑上各种类型的文件数不胜数,一款好用的压缩软件,既能以较高质量集合保存个人信息,又能节省硬盘空间;纵观全网,备受推崇的解压缩软件有WinRAR、7-zip、2345好压、360压缩、Bandizip、快压、WinZip、PeaZip等,下面跟随MaiGoo网编辑了解下这些解压软件!
十大ppt模板网站排行 好用的ppt网站推荐 ppt模板下载网站有哪些
一个优秀的PPT,虽然不能决定你的成与败,但能直接影响观看者对你的工作能力、产品或服务的认同感,特别是在产品发布、路演、招商引资等场合。本文中maigoo网编辑盘点了OfficePLUS、摄图网PPT、包图网PPT、优品PPT、51PPT、第一PPT、稻壳儿、迅捷PPT、51PPT等ppt模板下载网站、ppt素材网站,下面一起看看!
七大去马赛克软件排行 视频去马赛克软件哪个好用 马赛克去除工具推荐
马赛克是使用频率最高、使用范围最广的一种图片/视频处理手段,涉及新闻、动漫、电影、连续剧、写真等方面。作为一种具备了数十年历史的处理技术,马赛克沿用到今天有什么破解方法呢?Maigoo小编为此盘点了一批去除马赛克的软件,其中有JavPlayer、Video Enhancer、DeepCreamPy、TecoGAN、Face Depixelizer、EnhanceNet等视频马赛克去除工具,一起看看!
十大游戏陪玩软件 陪玩app软件排行 最火的陪玩软件盘点
我国游戏陪玩市场以“手游陪玩”为主,“比心”“虎牙小鹿陪玩”等多个平台,是近几年比较火的陪玩app,然而已被全面封杀,禁止提供陪玩服务。那么现在市面上,陪玩软件哪个最好呢?下面maiGoo小编和大家一起了解下斗鱼一起玩、小鹿组队、Go浪语音、点点开黑等陪玩平台。
十大动画制作软件 动漫制作软件盘点 自己做动画的软件有哪些
动画制作分为二维动画与三维动画技术,涉及软件主要分为2D和3D二种类型。在动画行业中制作动画的软件种类越来越多,越来越丰富,你知道哪个动画制作软件比较好用?画动漫软件哪个好?下面MAIGOO小编就为大家介绍十大最好用动画制作软件,分别有Maya、Adobe Animate、3DS Max、AE、C4D、Blender、万彩动画大师、Houdini、TVP、Anime Studio Pro。
十大批发网站 进货批发网站哪个好 批发进货平台有哪些
国家统计局数据显示,我国批发和零售业从业人员据不完全统计,已达千万人次,在所有批发领域中,矿产品、建材、化工产品、机械设备、五金交电、食品、饮料、烟草、服装、日用品等,是销售额最高的品类。本文中maigoo编辑盘点了阿里巴巴1688、拼多多批发、义乌购、爱采购、义采宝、惠农网、货捕头、包牛牛等进货批发网站、小商品批发平台,一起了解下!
十大旧衣服回收平台 有偿回收旧衣服的平台 正规回收旧衣服机构
我国每年有数万吨旧衣服进入垃圾场,极少数能被回收利用。其实我们可以把旧衣服捐给贫困地区,也可以二手转卖。下面MaiGoo小编和大家一起看看旧衣物回收平台有哪些,一起了解下飞蚂蚁、白鲸鱼、鸥燕回收、92回收、噢啦OOLA等正规回收旧衣服机构。
十大网络电话软件 网络电话哪个软件好用 网络电话呼叫软件推荐
工信部针对通信业的相关报告显示,我国三家通讯商的移动电话用户总数已超过17.07亿,面对庞大的用户群体,除了手机实时电话通讯外,网络电话呼叫软件亦成为主流选择。现阶段,除了微信、QQ等具有语音功能的社交软件外,Skype、北瓜电话、Facetime、UU电话等网络电话软件的使用频率也相对较高,下面跟随maigoo编辑来看看!
十大室内设计软件 装修设计软件排名 家装设计软件哪个最好用
室内设计是一个专业性极强的领域,设计师要在安全、实用、有限预算的前提下,充分考虑空间、色彩、光影、装饰、陈设、绿化等要素进行设计;那么在当今室内设计领域,有哪些好用的装修设计软件呢?3D Max、AutoCAD、酷家乐、草图大师、Lightscape、Sweet Home 3D、爱福窝等室内设计软件如何?下面跟随买购网编辑一起看看!
十大建模软件排行榜 3d建模软件有哪些 3d制图软件哪个好
3d建模软件颠覆了传统的2D模式,在游戏、影视、建筑/室内设计、VR/AR、电商、工业设计、军工设计等多个重要领域有着广泛应用,并在一定程度上改变着行业的发展格局,那么在这种大环境下,相关从业者和爱好者有哪些3D制图软件可以使用?3DS MAX、Maya、Rhino、Blender、ZBrush、SketchUp等建模软件效果如何?下面跟随maigoo编辑来看看!
十大日本购物网站排名 日本代购网站推荐 日本网上购物平台有哪些
日本是世界上最大的电商市场之一,位居全球前五。在日本,乐天、亚马逊、雅虎购物、Zozotown、Kakaku、DMM、Mercari等日本购物平台,是民众使用频率最高的购物网站,其热销品类与中国的相比,没有太大差异,主要是电子产品及配件、家居、玩具、家纺等等。下面和maigoo小编一起了解下这些日本网上购物网站!
十大围棋软件排名 下围棋软件哪个好 学围棋app推荐
在手机或电脑上下围棋、象棋、五子棋,或是下跳棋、军棋等,都非常常见。围棋软件拉进了棋友们的距离,即使天各一方,也能连上网络下一盘棋。下面CNPP小编和大家一起看看围棋软件哪个好。相对知名的下围棋软件有弈客围棋、星阵围棋、弈城围棋、佳弈少儿围棋、忘忧围棋等。
十大摄影网站排名 高清摄影网站推荐 摄影作品网站有哪些
从摄影技术诞生的第19世纪,到依托科学技术变革摄影行业、带来一系列创新的21世纪,摄影已完全普及开来,走入了千家万户。对许多专业和业余摄影者来说,500PX、色影无忌、Flickr、Magnum photos、蜂鸟网、POCO、图虫、1X、CNU、LFI等,是最受他们青睐的高清摄影网站,下面和maigoo小编一起了解下这些摄影作品网站!
十大域名网站排名 中文域名购买网站盘点 域名注册服务网站哪个好
中国信通院《互联网域名产业报告》显示,我国已成为仅次于美国的第二大域名注册市场,其中中文域名的注册量已达到100万以上,能在世界上的任何地方实时访问。本文中maigoo编辑盘点了一批域名注册服务网站,如GoDaddy、万网、西部数码、新网、NameSilo、Namecheap、易名等域名注册商、英文/中文域名网站的市场份额较高,一起看看。