汇编语言概述

1.1  机器语言

既然要讲汇编语言就不能不提机器语言了,机器代码是由0和1组成的指令序列,计算机可以直接执行机器代码,因此用机器语言编写的程序执行速度快,既然这样,那为什么现在的程序员基本上不用机器语语言编写程序呢?下面举一个用机器语言编写的程序,大家就应该很容易明白了,下面这段代码是一个用机器语言写的程序的一部分,是在我的HP机器上写的:

                            1011001010100101001101001010010010                            0110010010100100101001010101010001                            0010100110100000111001010101010100

现在问大家:这段代码的功能是什么?相信大家都看不懂吧,此外若不小心把程序写成了下面这个程序,请你找出这个错误:

                            1011001010100101001101001010010010                            0110010010100100101101010101010001                            0010100110100000111001010101010100

你是不是有种欲哭无泪的感觉呢?这还只是一个非常小的代码段,这就如此麻烦了,要是来个上万甚至几十万行的机器代码,那还不得把人得弄死,这就暴露了机器语言晦涩难懂,难以修改维护的缺点。

此外,我前面特意强调了是在HP机器上编写的代码,这不是在为HP打广告。之所以强调这个是因为如果我现在把这个程序放到另外一台mac或者其它的电脑上,这段程序就不能运行了。程序员编写的程序是为大家服务的,对于完成同一功能的程序,总不能针对每一台电脑都编写一个版本吧。机器语言的第二个缺点就凸显出来了:可移植性差。

看看,机器语言有这么严重的缺陷,我看只有傻子才会用它编写程序吧,这就是机器语言几乎销声匿迹的原因了。

1.2  汇编语言

既然机器语言那么晦涩难懂,程序员在编写程序的时候需要记忆大量的机器指令且容易记错,给整个软件的行业的发展带来了障碍,但是人类的智慧是无限的,人们发明了汇编语言,汇编指令是机器指令的助记符,每一条汇编指令都有与之一一对应的机器指令,对于程序员来说这是个很大的福音,他们不需要再记那些枯燥的01序列了。

汇编语言的出现确实在很大程度上解放了程序员,但是我们需要知道的是,计算机只认识01序列,即机器指令,并不认识我们所写的汇编指令,要让计算机能够执行我们所写的汇编程序,必需存在一个“翻译”,能够将我们的汇编程序翻译为计算机能识别执行的机器码,这个翻译就是“编译器”。当然,在由汇编代码à机器码的转换过程中,并不仅仅只是编译器的功劳,还牵涉到链接器等等。下图是将汇编程序转换为可执行机器码的过程;这是一个极其复杂的过程,不在本文的讨论范围内,有兴趣的同学可以查阅相关资料。

时间: 2024-11-07 19:22:12

汇编语言概述的相关文章

C语言理论知识

转载:http://www.cnblogs.com/hellokitty1/p/4083928.html 一:软件开发概述1.程序语言的发展:机器语言-->汇编语言-->高级语言.2.软件开发的基本步骤与方法:分析问题,建立数学模型-->确定数据结构和算法-->编制程序-->调试程序.3.算法的基本特征:有穷性 确定性 有效性 有零个或多个输入  有一个或多个输出.4.编码实现:源代码 编译源代码 链接 .5.调试程序:语法/逻辑/开发/运行时错误.6.程序通过编译或解释的方

2016.12.6第一课汇编概述、进制、

汇编概述 机器语言:机器使用的语言,0和1组成. 汇编语言:为了便于记忆机器语言,机器语言的助记符,通过编译器翻译成机器能认识的机器语言. 高级语言:为了更好的记忆和辨认,编译器将其编译成机器语言. c和c++的关系:c和c++没有本质区别,只是编译器做的事越来越多了,越来越来越强大了. c语言是c++的基础,站在编译器的角度学习c语言. 为什么要学汇编:程序员的鄙视量 学习环境: vc6,vs2010,vs2013,vs2016 推荐使用vc6,vc6添加的额外的代码少,底层的程序员一般都使用

计算机、程序和java概述(一)

CPU通常由两部分组成:控制器和算数/逻辑运算器 控制器用于控制和协调各个组件的工作.算术逻辑运算器用于数值运算和逻辑运算. 1MHz(兆赫) = 100万Hz 内存也称随机存储器(RAM). 操作系统的主要任务有: 控制和监视系统的活动 分配系统资源 安排操作的顺序 java application:应用程序是独立的程序,能够在任何有JVM的计算机上运行. java applet:   是一种特殊的Java程序,可以在web浏览器中直接运行. java servlet:   是一种特殊的Jav

王爽《汇编语言》第三版 第二章 寄存器

CPU概述 一个典型的CPU由运算器.控制器.寄存器等器件组成,这些器件靠内部总线相连. 内部总线实现CPU内部各个器件之间的联系,外部总线实现CPU和主板上其它器件的联系. 8086CPU有14个寄存器 它们的名称为:AX.BX.CX.DX.SI.DI.SP.BP.IP.CS.SS.DS.ES.PSW. 2.1 通用寄存器 8086CPU所有的寄存器都是16位的,可以存放两个字节. 8086上一代CPU中的寄存器都是8位的: 为保证兼容性,这四个寄存器都可以分为两个独立的8位寄存器使用. 1.

软件开发概述

                                                                                       (一)软件开发概述 1.1   软件,程序与计算机语言 软件是为完成某些特定功能而编写的一到多个程序文件的集合 计算机是由电子元件组成的. 1.2  程序语言的发展 1.2.1 机器语言 电子元件的特点是他们有两种很稳定的状态:导电或不导电.早期的计算机程序员用0表示计算机不通电的状态,用1表示计算机通电的状态,然后通过集成

第一章:C语言概述及如何上机运行C程序

第一章:C语言概述及如何上机运行C程序 让编程改变世界 Change the world by program C语言概述 C语言的发展过程 C语言是在 70 年代初问世的.一九七八年由美国电话电报公司(AT&T)贝尔实验室正式发表了C语言.同时由B.W.Kernighan和D.M.Ritchit合著了著名的“THE C PROGRAMMING LANGUAGE”一书.通常简称为<K&R>,也有人称之为<K&R>标准.但是,在<K&R>中

王爽-汇编语言-综合研究三-使用内存空间

(一) 研究概述 数据不仅可以存储在寄存器中,还可以存储在内存中.这次我们就研究在C语言中,怎样直接在内存中存储数据.以及这样做的一些延伸问题.另外,在附录研究中,我们还探究了C语言中循环和分支结构的实现. (二) 研究过程 1) 直接在C语言中使用内存空间 此处援引书中的话: 对于存储空间来说,要使用他们一般都需要给出两个信息:一是指明存储空间所在.是哪个的信息:二是指明存储空间有多大的类型信息. 对于寄存器来说,就需要给出寄存器的名称,寄存器的名称就也包含了他们的类型信息. 对于内存空间来说

王爽-汇编语言-综合研究二-使用寄存器

(一) 研究概述 我们为什么必须使用变量?因为我们在编程时必须存储数据.那么如果可以使用别的方法存储数据,我们就可以不必因此目的而使用变量. 用什么方法来存储数据呢?在学习汇编语言是.我们把数据存储在寄存器和内存空间中.那么,在本次试验中,我们研究的是C语言中如何使用寄存器. (二) 研究过程 (1) 编写一个程序url.c 编译链接完成,用debug加载. -u查看如下: 这里的语句比较整齐有逻辑,像是某些功能的实现语句,但是往下-u,几次都看不到所写的语句. 这里,main函数的代码应该是在

汇编语言(王爽) 第1章基础知识

1.1 机器语言 机器语言就是机器指令的集合.机器指令是啥呢?就是一列二进制的数据,计算机把它转成高低电平,使计算机的其他器件驱动并运算.(计算机如何使用2进制语言?) 早期程序都是用机器语言写的,但是有个问题就是太麻烦,数据信息太长,写错一个0或1就会来BUG了. 这种机器语言根本不是人写的,注定会被淘汰. 1.2 汇编语言 这个时候,汇编语言就挺身而出. 汇编语言就是机器语言的便于记忆的格式把 一个指令1000100010001000 表示把寄存器A1的内容弄到寄存器A2上.如下 操作介绍: