汇编语言(第3版)改版
|
目录
汇编语言(第3版)改版
第1章 基础知识
汇编语言是一种编程语言,是直接在硬件上工作的。首先,我们需要了解硬件系统的结构,才会有效的使用汇编语言进行编程。在本章中,这里只对一部分硬件系统的结构进行探讨,以便有一个好点的基础,可以开始后续课程的学习。在学习的过程中,当遇到难点,需要新的基础知识来补充的时候,如需要编程结构这个基础知识,那时,再介绍和讨论。这里的原则是:以后用到的知识,以后再说。
在汇编这门课程中,我们不对硬件系统进行全面和深入的研究,这个不在本课程之内。关于计算机和CPU的物理结构及编程结构,在《微机原理与接口》这门课程中进行;关于计算机的一般结构、功能、性能的研究,在《组成原理》这门课程中进行,这是一个更高层次的课程。汇编语言研究的重点是利用硬件系统的编程结构和指令集,有效灵活的控制系统进行工作。
1.1 机器语言
要知道汇编语言是怎么来的,需要了解一下机器语言。
机器语言是机器指令的集合。机器指令是计算机执行的命令。命令是由0和1构成的一列二进制数字,如101110000000000000000011。计算机将这些数字转变为一列高低电平,来驱动电子器件进行运算。
上面所说的计算机在早期的概念是指可以正确执行机器指令进行运算的机器。现在,是指含有一个芯片能够完成计算功能的个人计算机。这个芯片就是我们常说的CPU,是一种微处理器,是英文Central( /'sɛntrəl/ ) Processing( /proˈsɛsɪŋ/ )Unit( /'junɪt/ )的缩写,中文意思是中央处理单元。以后,我们说到的计算机是指由CPU和其他受到CPU直接或间接控制的芯片和器件、设备组成的计算机系统,如我们最常见的个人电脑。
每一种CPU由于在硬件设计和内部结构是不同的,可能用不同的电平脉冲来进行控制,使它工作,所以每一种CPU都有自己的机器指令集,也就是不同的机器语言。
在早期,程序设计均是使用机器语言。程序员用0和1这两个数字进行编程,将编写好的代码打在纸带或卡片上,1打孔,0不打孔,再将卡片通过纸带机或卡片机输入计算机,进行运算。
计算s=768+12288-1280,使用8086CPU来完成运算,机器码如下:
10111000 00000000 00000011
00000101 00000000 00110000
00101101 00000000 00000101
假如不小心将某一位写错,对于人类来说是非常的不容易识别,如下:
10111000 00000000 00000011
00000101 00000000 00110000
00010110 10000000 00000101
人类书写和阅读机器码程序都不是一个简单的工作,要记住所有抽象的二进制码,非常不容易。上面只是一个非常非常简单的小程序,就如此的晦涩难懂和不易查错。实际上一个有用的程序至少要有几十行机器码,那么,是如何呢?请看下面机器代码。
在屏幕上输出“welcome to masm” 机器码:
00011110
101110000000000000000000
01010000
101110001100011000001111
1000111011011000
1011010000000110
1011000000000000
1011011100000111
101110010000000000000000
1011011000011000
1011001001001111
1100110100010000
1011010000000010
1011011100000000
1011011000000000
1011001000000000
1100110100010000
1011010000001001
10001101000101100010101000000000
1100110100100001
1011010000001010
10001101000101100011000100000000
1100110100100001
1011010000000110
1011000000010100
1011011100011001
1011010100001011
1011000100010011
1011011000001101
1011001000111100
1100110100010000
1011010000000010
1011011100000000
1011000000001100
1011001000010100
1100110100010000
1011010000001001
10001101000101100000000000000000
1100110100100001
11001011
看到这样的程序非常感慨吧,如果一不小心里边的某一个1被误写成0,查找是相当的麻烦了。
1.2 汇编语言的到来
早期的程序员很快就发现了使用机器语言带来的麻烦,它是如此的难于识别和记忆,给整个计算机行业的发展带来了障碍,于是,汇编语言就来了。
汇编语言的主体和核心是汇编指令。汇编指令决定了汇编语言的特性。汇编指令和机器指令的差别就是指令的表达上,汇编指令是机器指令便于记忆的表达。
例如:机器指令10001001 11011000表示把寄存器BX的内容送到AX中。对应的汇编指令是mov ax,bx。这样的表达与人类语言接近,便于识别和记忆。
操作:寄存器BX的内容送到AX中
机器指令:10001001 11011000
汇编指令:mov ax,bx
寄存器:是CPU的组成部分,可以用来存放数据的元器件。一个CPU中有多个寄存器,AX是其中一个寄存器的代号,BX则是另一个寄存器的代号。更多的内容将在以后的课程中讲解。
从此以后,程序员就开始用汇编语言来编写源程序了。但是,计算机能够识别执行的只有机器语言的指令,那么如何让计算机执行程序员编写的汇编指令呢?这时,就需要有一个翻译的程序,能够将汇编指令翻译为机器指令,这个翻译的程序就称为编译器。
步骤:程序员用汇编语言写源程序---->编译器将源程序编译为机器码---->交给计算机执行。
图1.1 用汇编语言编写程序的工作流程