汇编语言实战精解-嵌入式Linux初级实验.doc
汇编语言实战精解
第1章汇编语言基础知识
1.1汇编语言的特点
所谓汇编语言,其实质就是机器语言的一个高级的形式。我们知道,机器语言是CPU唯一
可以真正理解的语言,它是用一些由0和1两个数字组成的一组数字来表示的。例如:
1011000000000001(意思是将数字1放入累加器)。
这样的一组数字非常难以理解和记忆,毕竟程序员不是一块CPU。为了使程序设计人
员能够很好地记忆这些机器指令,简化程序设计工作,技术人员将这些怪异的数字用一些取
自人类语言的简短的文字符号来表示,于是就产生了汇编语言。这些简短的文字符号称为指
令助记符。例如上面的那个机器指令用汇编语言表达出来,就是MOVAL,1。
同高级语言相比,汇编语言具有一些极其突出的特点:
①汇编语言是一种完全面向硬件的语言,这同BASIC,C之类的高级语言截然不同。
多数高级语言都是面向问题的,例如:如果需要在屏幕上显示一串文字时,我们可以直接应
用BASIC语言中的PRINT语句,或用C语言中的PRINTF函数,这个问题就迎刃而解了。
而使用汇编语言编程,解决这个问题的最终操作是将这些文字的ASCII码写入显示缓冲存
储器中。可见,汇编语言将这个问题转化成了对硬件(显示缓冲存储器)的操作(写入)。
这是汇编语言的一个极其突出的特点,也是汇编语言同高级语言的最显著的差别;
②同高级语言相比,汇编语言编写的程序结构十分紧凑,运行速度很快。汇编语言同
机器指令直接对应,编译速度快,同时,CPU理解其母语的速度远高于翻译高级语言
的速度。因此,汇编语言是所有程序设计语言中运行效率最高的。这是汇编语言的一个最为
突出的优点。当需要编写高速运行的软件时,例如编写图像处理程序,就往往使用汇编语言
编写软件中的关键部分;
③用汇编语言编制程序十分费时,而且程序的质量直接受到程序员技术水平的影响,
程序的可读性也很差。就象前面所举的输出文字的例子,用高级语言编程只需写一条语句,
简单明了,极其直观。而用汇编语言编程则需写出一系列指令,这些指令都是些对硬件的操
作,同文字输出这个问题没有明显的直接联系,因此程序的可读性很差。
④由于汇编语言是面向硬件的,所以用汇编语言编制的程序可移植性很差。显而易见,
不同的CPU都有相互独立的指令系统,相互间无任何关系,就算是使用同一系列CPU的机
器,因其外围硬件可能有差别,这也会使相同的程序在不同的机器上无法通用。
不难看出,汇编语言存在很多的弱点,但由于它具有一些高级语言所不具备的突出优点,
所以汇编语言的应用范围还是很广的。特别是当用户需要研究计算机具体的工作原理的时
候,还必须要掌握汇编语言。
1.2汇编语言中的数
高级语言中也多用十进制数。十进制数由0-9十个数字组合而成,逢10进1。但由于
汇编语言是面向硬件的,因此,在汇编语言中使用的数字也是和硬件结合紧密的二进制数。
二进制数只由0和1而个数字组成,逢2进1,也就是说,在十进制数中计算1+1时将
得到一位数字的结果--2,而在二进制数中计算时将得到一个二位二进制数--10,表1-1列
出了四位二进制数与十进制数间的对应关系。
在十进制数字中还有数位之分,个位,十位,百位,在二进制数中也分各个数位。
以四位二进制数1010为例,从右数第一位,称为bit0,第二位称bit1,以此类推。因此,
1010的bit3,bit1位是1,bit2,bit0位是0。与十进制数一样,二进制数自右向左数位逐渐
二进制数00000001001000110100010101100111
十进制数0123