机器语言编程汇编语言中包含什么

查看: 9841|回复: 5
高级语言.汇编语言和机器语言的差别及联系
该用户从未签到
本帖最后由 SodaLeo 于
20:37 编辑
导语:最近发现了好几个同学在学员问答板块问一道有关于机器语言的试题,为了同学们充分的理解问题,知其然更其所以然。并且触类旁通的扩展领域知识,下面斑竹来解释下什么是机器语言,什么是汇编语言,什么是高级语言,以及他们的优缺点差别与联系~
该用户从未签到
机器语言 &![endif]& (Machine language)
机器语言Machine Language(低级语言)
机器语言是计算机唯一能接受和执行的语言。机器语言由二进制码组成,每一串二进制码叫做一条指令。一条指令规定了计算机执行的一个动作。一台计算机所能懂得的指令的全体,叫做这个计算机的指令系统。不同型号的计算机的指令系统不同。
指令通常由几个字节组成,第一个字节是操作码,它规定了计算机要执行的基本操作;后面的字节是操作数,它规定了操作对象或操作对象的地址。
机器语言是直接用二进制代码指令表达的计算机语言,指令是用0和1组成的一串代码,它们有一定的位数,并分成若干段,各段的编码表示不同的含义,例如某台计算机字长为16位,即有16个二进制数组成一条指令或其它信息。16个0和1可组成各种排列组合,通过线路变成电信号,让计算机执行各种不同的操作。
如某种计算机的指令为0000,它表示让计算机进行一次加法操作;而指令0000则表示进行一次减法操作。它们的前八位表示操作码,而后八位表示地址码。从上面两条指令可以看出,它们只是在操作码中从左边第0位算起的第6和第7位不同。这种机型可包含256(=28)个不同的指令。
机器语言或称为二进制代码语言,计算机可以直接识别,不需要进行任何翻译。每台机器的指令,其格式和代码所代表的含义都是硬性规定的,故称之为面向机器的语言,也称为机器语言。它是第一代的计算机语言。机器语言对不同型号的计算机来说一般是不同的。
使用机器语言编写程序是一种相当烦琐的工作,既难于记忆也难于操作,编写出来的程序全是由0和1的数字组成,直观性差、难以阅读。不仅难学、难记、难检查、又缺乏通用性,给计算机的推广使用带来很大的障碍。
最早的程序设计语言都采用机器语言来编写。当时,要在计算机上运行的所有算法都必须直接用机器语言来表达,计算机才能接受。算法的运算序列包括运算对象和运算结果都必须转换为指令序列。其中的每一条指令都以编码(指令码和地址码)的形式出现。与算法语言表达的算法,相差十万八千里。对于没受过程序设计专门训练的人来说,一份程序恰似一份&天书&,让人看了不知所云,可读性极差。
用机器语言表达算法的运算、数据和控制十分繁杂琐碎,因为机器语言所提供的指令太初等、原始。机器语言只接受算术运算、按位逻辑运算和数的大小比较运算等。对于稍复杂的运算,都必须一一分解,直到到达最初等的运算才能用相应的指令替代之。机器语言能直接表达的数据只有最原始的位、字节、和字三种。算法中即使是最简单的数据如布尔值、字符、整数、和实数,也必须一一地映射到位、字节和字中,还得一一分配它们的存储单元。对于算法中有结构的数据的表达则要麻烦得多。机器语言所提供的控制转移指令也只有无条件转移、条件转移、进入子程序和从子程序返回等最基本的几种。用它们来构造循环、形成分支、调用函数和过程得事先做许多的准备,还得靠许多的技巧。
直接用机器语言表达算法有许多缺点。
?& && && &大量繁杂琐碎的细节牵制着程序员,使他们不可能有更多的时间和精力去从事创造性的劳动,执行对他们来说更为重要的任务。如确保程序的正确性、高效性。
?& && && &程序员既要驾驭程序设计的全局又要深入每一个局部直到实现的细节,即使智力超群的程序员也常常会顾此失彼,屡出差错,因而所编出的程序可靠性差,且开发周期长。
?& && && &由于用机器语言进行程序设计的思维和表达方式与人们的习惯大相径庭,只有经过较长时间职业训练的程序员才能胜任,使得程序设计曲高和寡。
?& && && &因为它的书面形式全是&密&码,所以可读性差,不便于交流与合作。
?& && && &因为它严重地依赖于具体的计算机,所以可移植性差,重用性差。
这些弊端造成当时的计算机应用未能迅速得到推广。
该用户从未签到
汇编语言(Assember language)
汇编语言Assembler Language(低级语言)
为了克服机器语言上述的缺点,出路在于程序设计语言的抽象,让它尽可能地接近于算法语言。为此,人们首先注意到的是可读性和可移植性,因为它们相对地容易通过抽象而得到改善。于是,很快就出现汇编语言。这种语言对机器语言的抽象,首先表现在将机器语言的每一条指令符号化:指令码代之以记忆符号,地址码代之以符号地址,使得其含义显现在符号上而不再隐藏在编码中,可让人望&文&生义。其次表现在这种语言摆脱了具体计算机的限制,可在不同指令集的计算机上运行,只要该计算机配上汇编语言的一个汇编程序。这无疑是机器语言朝算法语言靠拢迈出的一步。但是,它离算法语言还太远,以致程序员还不能从分解算法的数据、运算和控制到汇编才能直接表达的指令等繁杂琐碎的事务中解脱出来。
用能反映指令功能的助记符表达的计算机语言叫汇编语言。它是符号化了的机器语言。用汇编语言编写的程序叫汇编语言源程序,计算机无法执行。必须用汇编程序把它翻译成机器语言目标程序,计算机才能执行。这个翻译过程称为汇编过程。
汇编语言是用助记符表示指令功能的计算机语言。与机器语言相比,汇编语言具有以下的几个特点:第一,它使用符号来表示操作码和地址码,这种符号便于记忆,称为记忆码。第二,汇编程序自动处理存储分配,毋需程序员做存储分配工作。第三,程序员可以直接书写十进制数`
例如,要计算c=7+8,可以用如下几条汇编命令:
标号& && &&&指令& && && && && && & 说明
START& && &GET 7;& && && & 把7送进累加器ACC中
& && && && & ADD 8;& && && &累加器ACC+8送进累加器ACC中
& && && && & PUT C;& && && &把累加器ACC送进C中
END& && &&&STOP;& && && & 停机
其中(ACC)表示累加器中的值,等等。
如此简单的汇编语言,只是符号形式的机器语言,但用它来编写程序或阅读已经编写好的程序比起机器语言来要简单和方便多了。这就是计算机语言发展中的第二代语言—汇编语言。人们使用这种助记符编写程序后,要是计算机能够接受,还必须把编好的程序逐条翻译成二进制编码的机器语言。当然,这个工作并不是有程序员来完成,而是有称为“汇编程序”的程序自动完成的。汇编程序的功能就是把由汇编语言编写的程序(称为汇编语言源程序)翻译成机器语言程序,计算机才能执行该程序。这个翻译过程称为汇编。
汇编语言比起机器语言在很多方面都有很大的优越性,如编写容易、修改方便、阅读简单、程序清楚等,但在计算机语言系统中,把汇编语言仍然列入“低级语言”的范畴,它仍然是属于面向机器的语言,也就是说,不同的计算机可以有不同的指令集。
该用户从未签到
本帖最后由 SodaLeo 于
20:33 编辑
高级语言(High-level language)
机器语言和汇编语言都是面向机器的,高级语言是面向用户的。到了50年代中期,出现程序设计的高级语言如Fortran,Algol60,以及后来的PL/l,Pascal等,算法的程序表达才产生一次大的飞跃。用高级语言编写的程序叫做高级语言源程序,必须翻译成机器语言目标程序才能被计算机执行。高级语言的翻译有两种方式:编译方式和解释方式。
?& && && &编译方式:先由编译程序把高级语言源程序翻译成目标程序,执行时运行目标程序。
?& && && &2.解释方式:在运行高级语言源程序时,由解释程序对源程序边翻译边执行。
诚然,算法最终要表达为具体计算机上的机器语言才能在该计算机上运行,得到所需要的结果。但汇编语言的实践启发人们,表达成机器语言不必一步到位,可以分两步走或者可以筑桥过河。即先表达成一种中介语言,然后转成机器语言。汇编语言作为一种中介语言,并没有获得很大成功,原因是它离算法语言还太远。这便指引人们去设计一种尽量接近算法语言的规范语言,即所谓的高级语言,让程序员可以用它方便地表达算法,然后借助于规范的高级语言到规范的机器语言的&翻译&,最终将算法表达为机器语言。而且,由于高级语言和机器语言都具有规范性,这里的&翻译&完全可以机械化地由计算机来完成,就像汇编语言被翻译成机器语言一样,只要计算机配上一个编译程序。
上述两步,前一步由程序员去完成,后一步可以由编译程序去完成。在规定清楚它们各自该做什么之后,这两步是完全独立的。它们各自该如何做互不相干。前一步要做的只是用高级语言正确地表达给定的算法,产生一个高级语言程序;后一步要做的只是将第一步得到的高级语言程序翻译成机器语言程序。至于程序员如何用高级语言表达算法和编译程序如何将高级语言表达的算法翻译成机器语言表达的算法,显然毫不相干。
为了解决低级语言的缺点,人们为了从根本上摆脱语言对机器的依赖,使之独立于机器,由面向机器改为面向过程,经过多年精心的研究,终于在1954年首先创造出一种与具体的计算机指令系统无关的、表达方式或接近于人们对求解过程或问题的描述方式,且易于掌握和书写的语言,这就是FORTRAN语言。人们把具有以上特点的语言称为高级语言,这就是计算机语言系统中的第三代语言。
例如计算A=1+2,若用高级语言(如BASIC语言)编写,只要两条语句:
10& && & A=1+2
11& && & END
就可以完成A=1+2的操作。这种语言,人们易于掌握和理解,即使小学生也容易掌握,便于推广,它不再是面向机器,而是“面向过程”,即用户不仅要告诉计算机“做什么”,还要告诉计算机“怎么做”,也就是把每一步操作事先设计好,然后再编写程序,让计算机按照指定的步骤去执行。目前,世界上已经有几百种不同类型、功能各异的高级语言。使用较多的有:
该用户从未签到
程序设计语言从机器语言到高级语言的抽象,带来的主要好处是:
高级语言接近算法语言,易学、易掌握,一般工程技术人员只要几周时间的培训就可以胜任程序员的工作;
高级语言为程序员提供了结构化程序设计的环境和工具,使得设计出来的程序可读性好,可维护性强,可靠性高;
高级语言远离机器语言,与具体的计算机硬件关系不大,因而所写出来的程序可移植性好,重用率高;
由于把繁杂琐碎的事务交给了编译程序去做,所以自动化程度高,开发周期短,且程序员得到解脱,可以集中时间和精力去从事对于他们来说更为重要的创造性劳动,以提高程序的质量。
该用户从未签到
本帖最后由 SodaLeo 于
21:53 编辑
OK,结束~!
Beijing Aptech Beida Jade Bird Information Technology Co.,Ltd
北大青鸟IT教育 北京阿博泰克北大青鸟信息技术有限公司 版权所有汇编语言(面向机器的程序设计语言)_百度百科
清除历史记录关闭
声明:百科词条人人可编辑,词条创建和修改均免费,绝不存在官方及代理商付费代编,请勿上当受骗。
?面向机器的程序设计语言
(面向机器的程序设计语言)
汇编语言(assembly language)是一种用于、、或其他可编程器件的低级语言,亦称为符号语言。在汇编语言中,用(Mnemonics)代替的,用地址符号(Symbol)或标号(Label)代替指令或的地址。在不同的设备中,汇编语言对应着不同的机器语言,通过汇编过程转换成机器指令。普遍地说,特定的汇编语言和特定的机器语言指令集是一一对应的,不同平台之间不可直接移植。
许多汇编程序为程序开发、控制、辅助调试提供了额外的支持机制。有的汇编语言编程工具经常会提供宏,它们也被称为宏汇编器。汇编语言不像其他大多数的一样被广泛用于程序设计。在今天的实际应用中,它通常被应用在底层,硬件操作和高要求的程序优化的场合。驱动程序、嵌入式操作系统和实时运行程序都需要汇编语言。
汇编语言发展历程
说到汇编语言的产生,首先要讲一下。机器语言是机器指令的集合。机器指令展开来讲就是一台机器可以正确执行的命令。电子计算机的机器指令是一列二进制数字。计算机将之转变为一列高低,以使计算机的电子器件受到驱动,进行运算。
上面所说的计算机指的是可以执行机器指令,进行运算的机器。这是早期计算机的概念。在我们常用的PC机中,有一个芯片来完成上面所说的计算机的功能。这个芯片就是我们常说的(Central Processing Unit,中央处理单元)。每一种微处理器,由于硬件设计和内部结构的不同,就需要用不同的电平脉冲来控制,使它工作。所以每一种微处理器都有自己的机器指令集,也就是机器语言。
早期的程序设计均使用机器语言。程序员们将用0, 1数字编成的程序代码打在纸带或卡片上,1打孔,0不打孔,再将程序通过纸带机或卡片机输入计算机,进行运算。这样的机器语言由纯粹的0和1构成,十分复杂,不方便阅读和修改,也容易产生错误。程序员们很快就发现了使用机器语言带来的麻烦,它们难于辨别和记忆,给整个产业的发展带来了障碍,于是汇编语言产生了。
汇编语言的主体是汇编指令。汇编指令和的差别在于指令的表示方法上。汇编指令是机器指令便于记忆的书写格式。
操作:寄存器BX的内容送到AX中
1000&&&&&&&&&&&&&&机器指令
mov&ax,bx&&&&&&&&&&&&&&&&&&&&汇编指令
此后,程序员们就用汇编指令编写源程序。可是,计算机能读懂的只有
机器指令,那么如何让计算机执行程序员用汇编指令编写的程序呢?这时,就需要有一个能够将汇编指令转换成机器指令的翻译程序,这样的程序我们称其为编译器。程序员用汇编语言写出源程序,再用汇编编译器将其编译为机器码,由计算机最终执行。
汇编语言语言特点
汇编语言是直接面向处理器(Processor)的程序设计语言。处理器是在指令的控制下工作的,处理器可以识别的每一条指令称为机器指令。每一种处理器都有自己可以识别的一整套指令,称为。处理器执行指令时,根据不同的指令采取不同的动作,完成不同的功能,既可以改变自己内部的工作状态,也能控制其它外围电路的工作状态。
汇编语言的另一个特点就是它所操作的对象不是具体的数据,而是寄存器或者存储器,也就是说它是直接和寄存器和存储器打交道,这也是为什么汇编语言的执行速度要比其它语言快,但同时这也使编程更加复杂,因为既然数据是存放在寄存器或存储器中,那么必然就存在着寻址方式,也就是用什么方法找到所需要的数据。例如上面的例子,我们就不能像高级语言一样直接使用数据,而是先要从相应的寄存器AX、BX 中把数据取出。这也就增加了编程的复杂性,因为在高级语言中寻址这部分工作是由编译系统来完成的,而在汇编语言中是由程序员自己来完成的,这无异增加了编程的复杂程度和程序的可读性。
再者,汇编语言指令是机器指令的一种符号表示,而不同类型的CPU 有不同的机器指令系统,也就有不同的汇编语言,所以,汇编语言程序与机器有着密切的关系。所以,除了同系列、不同型号CPU 之间的汇编语言程序有一定程度的可移植性之外,其它不同类型(如:小型机和微机等)CPU 之间的汇编语言程序是无法移植的,也就是说,汇编语言程序的通用性和可移植性要比高级语言程序低。
正因为汇编语言有“与机器相关性”的特性,程序员用汇编语言编写程序时,可充分对机器内部的各种资源进行合理的安排,让它们始终处于最佳的使用状态。这样编写出来的程序执行代码短、执行速度快。汇编语言是各种编程语言中与硬件关系最密切、最直接的一种,在时间和空间的效率上也最高的一种,它是高等院校计算机应用技术必修的专业课程之一,对于训练学生掌握程序设计技术,熟悉上机操作和程序调试技术有重要作用
汇编语言总体特点
1.机器相关性
这是一种面向机器的低级语言,通常是为特定的计算机或系列计算机专门设计的。因为是机器指令的符号化表示,故不同的机器就有不同的汇编语言。使用汇编语言能面向机器并较好地发挥机器的特性,得到质量较高的程序。
2.高速度和高效率
汇编语言保持了机器语言的优点,具有直接和简捷的特点,可有效地访问、控制计算机的各种硬件设备,如磁盘、存储器、、端口等,且占用内存少,执行速度快,是高效的。
3.编写和调试的复杂性
由于是直接控制硬件,且简单的任务也需要很多汇编语言语句,因此在进行程序设计时必须面面俱到,需要考虑到一切可能的问题,合理调配和使用各种软、硬件资源。这样,就不可避免地加重了程序员的负担。与此相同,在程序调试时,一旦程序的运行出了问题,就很难发现。
汇编语言优点
1、因为用汇编语言设计的程序最终被转换成机器指令,故能够保持机器语言的一致性,直接、简捷,并能像机器指令一样访问、控制计算机的各种硬件设备,如磁盘、、、等。使用汇编语言,可以访问所有能够被访问的软、硬件资源。
2、目标代码简短,占用内存少,执行速度快,是高效的程序设计语言,经常与高级语言配合使用,以改善程序的执行速度和效率,弥补高级语言在硬件控制方面的不足,应用十分广泛。
汇编语言缺点
1、汇编语言是面向机器的,处于整个计算机语言层次结构的底层,故被视为一种低级语言,通常是为特定的计算机或系列计算机专门设计的。不同的处理器有不同的汇编语言语法和,编译的程序无法在不同的处理器上执行,缺乏可移植性;
2、难于从汇编语言代码上理解程序设计意图,可维护性差,即使是完成简单的工作也需要大量的汇编语言代码,很容易产生,难于调试;
3、使用汇编语言必须对某种处理器非常了解,而且只能针对特定的体系结构和处理器进行优化,开发效率很低,周期长且单调。
汇编语言语言组成
汇编语言数据传送指令
这部分指令包括通用数据传送指令、条件传送指令CMOVcc、堆栈操作指令PUSH/PUSHA//POP/POPA/、交换指令/XLAT/BSWAP、地址或选择子传送指令//LES//LGS/等。注意,CMOVcc不是一条具体的指令,而是一个指令簇,包括大量的指令,用于根据EFLAGS的某些位状态来决定是否执行指定的传送操作。
汇编语言整数和逻辑运算指令
这部分指令用于执行算术和逻辑运算,包括加法指令ADD/、减法指令/、加一指令、减一指令、比较操作指令CMP、乘法指令/、除法指令/IDIV、符号扩展指令/CWDE/CDQE、调整指令///AAS、指令NOT//OR/XOR/TEST等。
汇编语言移位指令
这部分指令用于将寄存器或内存操作数移动指定的次数。包括逻辑左移指令、逻辑右移指令SHR、算术左移指令、算术右移指令SAR、循环左移指令、循环右移指令等。
汇编语言位操作指令
这部分指令包括位测试指令、位测试并置位指令BTS、位测试并复位指令、位测试并取反指令BTC、位向前扫描指令、位向后扫描等。
汇编语言条件设置指令
这不是一条具体的指令,而是一个指令簇,包括大约30条指令,用于根据EFLAGS寄存器的某些位状态来设置一个8位的寄存器或者内存操作数。比如SETE/SETNE/SETGE等等。
汇编语言控制转移指令
这部分包括无条件转移指令、条件转移指令/JCXZ、循环指令/LOOPE/LOOPNE、过程调用指令、子过程返回指令、中断指令n、INT3、、等。注意,Jcc是一个指令簇,包含了很多指令,用于根据EFLAGS的某些位状态来决定是否转移;INT n是指令,n可以是0到255之间的数,用于指示中断向量号。
汇编语言串操作指令
这部分指令用于对数据串进行操作,包括串传送指令MOVS、串比较指令、串指令SCANS、串指令、串保存指令,这些指令可以有选择地使用/REPE/REPZ/REPNE和REPNZ的以连续操作。
汇编语言输入输出指令
这部分指令用于同外围设备交换数据,包括端口输入指令IN/、端口输出指令OUT/OUTS。
高级语言辅助指令
这部分指令为高级语言的编译器提供方便,包括创建栈帧的指令ENTER和释放栈帧的指令LEAVE。
控制和特权指令
这部分包括无操作指令、停机指令、等待指令/MWAIT、换码指令、总线封锁指令、内存范围检查指令、全局描述符表操作指令LGDT/SGDT、中断描述符表操作指令LIDT/SIDT、局部描述符表操作指令LLDT/SLDT、描述符段界限值加载指令、描述符访问权读取指令LAR、任务寄存器操作指令/、请求级调整指令ARPL、任务切换标志清零指令CLTS、控制寄存器和调试寄存器数据传送指令、高速缓存控制指令/WBINVD/INVLPG、型号相关寄存器读取和写入指令RDMSR/WRMSR、处理器信息获取指令、时间戳读取指令RDTSC等。
浮点和多媒体指令
这部分指令用于加速浮点数据的运算,以及用于加速多媒体数据处理的单指令多数据(SIMD及其扩展SSEx)指令。这部分指令数据非常庞大,无法一一列举,请自行参考INTEL手册。
虚拟机扩展指令
这部分指令包括INVEPT/INVVPID/VMCALL/VMCLEAR/VMLAUNCH/VMRESUME/VMPTRLD/VMPTRST/VMREAD/VMWRITE/VMXOFF/VMON等。
汇编语言相关技术
汇编语言汇编器
典型的现代汇编器(assembler)建造目标代码,由解译组语指令集的易记码(mnemonics)到(OpCode),并解析符号名称(symbolic names)成为存储器地址以及其它的实体。使用符号参考是汇编器的一个重要特征,它可以节省修改程序后人工转址的乏味耗时计算。基本就是把机器码变成一些字母而已,编译的时候再把输入的指令字母替换成为晦涩难懂机器码。
汇编语言编译环境
用汇编语言等非机器语言书写好的符号程序称为源程序,汇编语言编译器的作用是将源程序翻译成目标程序。目标程序是机器语言程序,当它被安置在内存的预定位
置上后,就能被计算机的CPU处理和执行。
汇编的调试环境总的来说比较少,也很少有非常好的编译器。编译器的选择依赖于目标处理器的类型和具体的系统平台。一般来说,功能良好的编译器用起来应当非常方便,比如,应当可以自动整理格式、语法高亮显示,集编译、链接和调试为一体,方便实用。
对于广泛使用的个人计算机来说,可以自由选择的汇编语言编译器有、、、、FASM、等,但大都不具备调试功能。如果是为了学习汇编语言,轻松汇编因为拥有一个完善的集成环境,是一款非常适合初学者的汇编编译器。
汇编语言发展前景
汇编语言是的助记符,相对于比枯燥的机器代码易于读写、易于调试和修改,同时优秀的汇编语言设计者经过巧妙的设计,使得汇编语言汇编后的代码比高级语言执行速度更快,占内存空间少等优点,但汇编语言的运行速度和空间占用是针对高级语言并且需要巧妙设计,而且部分高级语言在编译后代码执行效率同样很高,所以此优点慢慢弱化。而且在编写复杂程序时具有明显的局限性,汇编语言依赖于具体的机型,不能通用,也不能在不同机型之间移植。常说汇编语言是低级语言,并不是说汇编语言要被弃之,相反,汇编语言仍然是计算机(或微机)底层设计程序员必须了解的语言,在某些行业与领域,汇编是必不可少的,非它不可适用。只是,现在计算机最大的领域为IT软件,也是我们常说的计算机应用软件编程,在熟练的程序员手里,使用汇编语言编写的程序,运行效率与性能比其它语言写的程序相对提高,但是代价是需要更长的时间来优化,如果对计算机原理及编程基础不扎实,反而增加其开发难度,实在是得不偿失,对比2010年前后的软件开发,已经是市场化的软件行业,加上的优秀与跨平台,一个公司不可以让一个团队使用汇编语言来编写所有的东西,花上几倍甚至几十倍的时间,不如使用其它语言来完成,只要最终结果不比汇编语言编写的差太多,就能抢先一步完成,这是市场经济下的必然结果。
但是,迄今为止,还没有程序员敢断定汇编语言是不需要学的,同时,汇编语言(Assembly Language)是面向机器的程序设计语言,设计精湛的汇编程序员,部分已经脱离软件开发,挤身于工业电子编程中。对于功能相对小巧但硬件对语言设计要求苛刻的行业,如4位单片机,由于其容量及运算,此行业的电子工程师一般负责从开发设计电路及软件控制,主要开发语言就是汇编,使用只占极少部分,而电子开发工程师是千金难求,在一些工业公司,一个核心的电子工程师比其它任何职员待遇都高,对比起来,一般电子工程师待遇是程序员的十倍以上。这种情况是因为21世纪以来,学习汇编的人虽然也不少,但是真正能学到精通的却不多,它相对于高级语言难学,难用,适用范围小,虽然简单,但是过于灵活,学习过高级语言的人去学习汇编比一开始学汇编的人难得多,但是学过汇编的人学习高级语言却很容易,简从繁易,繁从简难。对于一个全面了解微机原理的程序员,汇编语言是必修语言。
汇编语言实际应用
随着现代软件系统越来越庞大复杂,大量经过了封装的高级语言如C/,/Object Pascal也应运而生。这些新的语言使得程序员在开发过程中能够更简单,更有效率,使软件开发人员得以应付快速的软件开发的要求。而汇编语言由于其复杂性使得其适用领域逐步减小。但这并不意味着汇编已无用武之地。由于汇编更接近机器语言,能够直接对硬件进行操作,生成的程序与其他的语言相比具有更高的运行速度,占用更小的内存,因此在一些对于时效性要求很高的程序、许多大型程序的核心模块以及工业控制方面大量应用。
此外,虽然有众多编程语言可供选择,但汇编依然是各大学计算机科学类专业学生的必修课,以让学生深入了解计算机的运行原理。
历史上,汇编语言曾经是非常流行的程序设计语言之一。随着软件规模的增长,以及随之而来的对软件开发进度和效率的要求,高级语言逐渐取代了汇编语言。但即便如此,高级语言也不可能完全替代汇编语言的作用。就拿来讲,虽然绝大部分代码是用编写的,但仍然不可避免地在某些关键地方使用了汇编代码。由于这部分代码与硬件的关系非常密切,即使是C语言也会显得力不从心,而汇编语言则能够很好扬长避短,最大限度地发挥硬件的性能。
首先,汇编语言的大部分语句直接对应着机器指令,执行速度快,效率高,代码体积小,在那些存储器容量有限,但需要快速和实时响应的场合比较有用,比如仪器仪表和工业控制设备中。
其次,在系统程序的核心部分,以及与系统硬件频繁打交道的部分,可以使用汇编语言。比如操作系统的核心程序段、接口电路的程序、的低层驱动程序,以及频繁调用的、、某些高级绘图程序、视频游戏程序等等。
再次,汇编语言可以用于软件的加密和解密、计算机病毒的分析和防治,以及程序的调试和错误分析等各个方面。
最后,通过学习汇编语言,能够加深对计算机原理和操作系统等课程的理解。通过学习和使用汇编语言,能够感知、体会和理解机器的逻辑功能,向上为理解各种软件系统的原理,打下技术理论基础;向下为掌握硬件系统的原理,打下实践应用基础。
汇编语言经典教材
汇编语言教材很多,各种处理器都有涉及,粗略统计不下百种。在这么多的教材里,用得较多的可以分类列举如下:
汇编语言x86处理器
1.《x86汇编语言:从实模式到保护模式》,著,,2013-1 。
基于INTEL 处理器、NASM编译器和虚拟机。汇编语言就是处理器的语言,从这个意义上来说,既然学习汇编语言,就必须直接面向硬件编程,而不是使用莫名其妙的中断和调用。这是一本有趣的书,它没有把篇幅花在计算一些枯燥的数学题上。相反,它教你如何直接控制硬件,在不借助于、DOS、、或者任何其他软件支持的情况下来显示、读取硬盘数据、控制其他硬件等。
我们知道,和是主流,和DOS操作系统已经成为历史,Linux和Windows都工作在保护模式下。这本书从实模式讲到32位保护模式,尤其以32位保护模式为重点,阅读本书,对理解现代计算机和现代操作系统的工作原理有非常大的帮助作用。
2.《汇编语言》(第2版),王爽 著,清华大学出版社,
基于INTEL 8086处理器、编译器,以及平台的汇编教材,完全以8086处理器的实模式为主,不涉及常用的32位和64位模式,但因为通俗易懂,读者反映很好。
3.《80X86汇编语言程序设计教程》,杨季文等 编著,清华大学出版社,
基于INTEL x86处理器、MASM和编译器,包含16位实模式和32位保护模式的内容,而且对后者讲述较为详细。
4.《32位汇编语言程序设计》,钱晓捷 编著,机械工业出版社,
基于INTEL x86处理器、MASM编译器,以及WINDOWS平台的汇编教材。
5.《16/32位微机原理汇编语言及接口技术》,钱晓捷,陈涛编著,机械工业出版社,
基于INTEL x86处理器,论述16位微型计算机的基本原理、汇编语言和接口技术,并引出32位微机系统相关技术。
6.《Intel汇编语言程序设计》(第五版),(美)欧文 著,电子工业出版社,
基于INTEL x86处理器、MASM编译器,以及DOS/WINDOWS平台的汇编教材,既有16位实模式的内容,也有32位保护模式的内容。
7.《汇编语言的编程艺术》(第2版),(美)海德 著,清华大学出版社,
基于INTEL x86处理器,使用了作者自制的高级语言汇编器(High Level Assembler,HLA)作为教学工具,以部分地获得高级语言的优势和功能。
8.《x86 PC汇编语言、设计与接口》(第五版),(美)马兹迪,考西著,电子工业出版社,
基于INTEL x86处理器,既讲了16位实模式的内容,也讲了32位保护模式的内容,对64位也有所介绍。
汇编语言ARM及单片机
1.《汇编语言程序设计--基于ARM体系结构》(第2版),文全刚等主编,北京航空航天大学出版社,
基于体系结构的处理器,是学习嵌入式技术的入门教材。
2.《零基础学AVR单片机》,徐益民等编著,机械工业出版社,
单片机概述、单片机的开发工具、avr单片机c语言、单片机基本结构、avr的指令系统与汇编系统等。
3.《基于Multisim10的51单片机仿真实战教程》,聂典,丁伟主编,电子工业出版社,
10在单片机仿真中的各项主要功能。
4.《PIC18微控制器:体系结构、编程与接口设计》,(美)贝里著,清华大学出版社,
微控制器广泛应用于汽车、家电、工业控制、医疗设备等众多领域。本书以公司的PIC18系列微控制器为例,全面讲解如何使用C语言和汇编语言对微控制器进行编程。
5.《CASL汇编语言程序设计》,赵立辉编著,中国电力出版社,
汇编语言是中国计算机软件专业技术资格和水平考试高级程序员级的必考内容。本书是讲述CASL汇编语言程序设计的专著。
王爽.汇编语言(第二版):清华大学出版社,
王爽.汇编语言(第二版):清华大学出版社,2013:2-3
郭晓伟.汇编语言的优越性及实用性[J].中国科技信息,
.GNU官网.[引用日期]
李忠.《x86汇编语言:从实模式到保护模式》:电子工业出版社,2012:1
中国电子学会(Chinese Instit...
提供资源类型:内容
清除历史记录关闭

我要回帖

更多关于 汇编语言与机器语言 的文章

 

随机推荐