第1章 基础知识
汇编语言是直接在硬件之上工作的编程语言,我们首先要了解硬件系统的结构,才能有效地应用汇编语言进行编程。在本章中,我们将对硬件系统结构的一部分问题进行探讨,为后续的课程打下基础。当课程需要补充新的基础知识时(如关于编程结构或其他方面),我们再对相关的基础知识进行介绍和探讨。我们的原则是,后用到的知识以后再说。
在汇编课程中,我们不对硬件系统进行全面和深入的研究,这不在课程的范围之内。关于PC机及CPU物理结构和编程结构的全面研究,在《微机原理与接口》中进行;对于计算机一般的结构、功能、性能的研究则
在一门称为《计算机组成原理》的课程中进行。本课程的研究重点放在如何利用硬件系统的编程结构和指令集有效、灵活地控制系统工作。
1.1 机器语言
说到汇编语言的产生,首先要讲一下机器语言。机器语言是机器指令的集合,即一台机器可以正确执行的命令。电子计算机的机器指令是一列二进制数字,计算机将其转变为一列高低电平,以驱动电子器件进行运算。早期计算机的概念是指可以执行机器指令进行运算的机器。在现代PC机中,有一个芯片完成上述计算功能,这个芯片就是CPU(中央处理单元,Central Processing Unit),它是一种微处理器。以后我们提到的计算机是指由CPU和其他受CPU直接或间接控制的芯片、器件、设备组成的计算机系统,比如我们最常见的PC机。
每种微处理器由于硬件设计和内部结构的不同,需要用不同的电平脉冲来控制,使其工作。所以每种微处理器都有自己的机器指令集,也就是机器语言。
早期的程序设计均使用机器语言。程序员们将用0、1数字编成的程序代码打在纸带或卡片上,1打孔,0不打孔,再通过纸带机或卡片机将程序输入计算机进行运算。
机器码示例
例如,应用8086CPU完成运算 s = 768 + 12288 - 1280
,机器码如下:
10111000 00000000 00000011 00000101 00000000 00110000 00101101 00000000 00000101
如果将程序错写成以下这样,请你找出错误:
10110000 00000000 00000011 00000101 00000000 00110000 00101101 00000000 00000101
要找出错误并不容易。
机器码的复杂性
书写和阅读机器码程序不是一件简单的工作,需要记住所有抽象的二进制码。上面只是一个非常简单的小程序,已经暴露了机器码的晦涩难懂和不易查错的特点。写一个有用的程序至少要有几十行机器码,那么,情况将如何呢?
在显示器上输出“welcome to masm”的机器码如下:
00011110 10111000 00000000 00000000 01010000 10111000 11000110 00001111 10001110 11011000 10110100 00000011 01011000 00000000 10110111 00000001 11101110 01000000 00000000 00001011 01100011 10010100 10011111 00110100 01000010 11010000 00000101 01101100 00000000 00101101 01100000 00001011 01100100 00000011 00110100 01000010 11010000 00001001 10001101 00010110 00101010 00000011 00110100 10000110 11011010 00000101 10001101 00010110 01100011 10000111 00110100 10000110 11011010 00000101 01101100 00000001 01011000 00000011 00110110 01000101 00110011 01000010 11010000 00001001 10001101 00010110 00101000 00000000 00110110 10000111 00110100 10000110 11011010 00001011 01101100 00000001 01011010 00000011 00110100 01000110 10110101 00110110 01000110 10110110 00000001 01101100 00100010 01111000 10011001 00110100 10000101 10111010 00000000 10101101 01100001 00001001
看到这样的程序,你有什么感想?如果程序里有一个“1”被误写为“0”,如何去查找呢?
汇编语言的优势
由于机器码的复杂性和晦涩难懂,汇编语言应运而生。汇编语言使用符号和助记符来表示机器指令,使得编程更加直观和易于理解。汇编语言在计算机的早期发展中起到了重要的作用,为程序员提供了一种更高效和人性化的编程方式。