第一章主要是讲了关于汇编语言的一些基础知识,让我对汇编语言有了初步的认识。本章主要讲了四部分。
一、机器语言——>汇编语言——>高级语言。在学完这章书本知识后,我了解到计算机最初所有的程序是一条条机器语言的命令,然而由于机器码存在晦涩难懂、不易差错的缺点,很快就有了汇编语言的存在。在《黑客与画家》一书中,Paul Graham 将机器语言生动地比作计算机的一张操作命令清单,继而出现的汇编语言相之于机器语言,它们的命令清单还是一样的,只是把每个命令换了一个更人性化的名字。例如机器语言的加法命令是11001101,而在汇编语言中加法命令则为add。机器语言和汇编语言共同的问题是只能让大多数计算机做一些很简单的事情,操作起来代码多,也很难快速准确地查找到bug。而之后出现的高级语言又给我们带来了很大的变化,它能够让我们使用更强大的命令开发程序,同时写出来的程序简洁明了,容易发现bug。除此之外,高级语言使得程序变得更具有可移植性。在实际操作中,高级语言转化为硬件能理解的语言是通过编译器完成的。编译器,本身就是一个程序,作用就是将简便方式书写的程序转变为硬件可以读懂的语言。在此基础上看来,高级语言的可移植性就更加明了了,由于不同的计算机其机器语言是不完全相同的,因此,将为某一种机型写的机器语言放到另一个机型上只有通过彻底重写才能实现,而如果程序是用高级语言编写的,则只需要重写编译器即可。
二、汇编语言源程序的组成。汇编语言由3类指令组成,分别是汇编指令、伪指令及其他符号。其中其核心是汇编指令。汇编语言有对应的机器码,而其余两类指令都没有对应的机器码,由编译器识别。说起指令,在这一章也讲到了指令与数据的区别与联系。指令和数据是应用上的概念,在内存或磁盘上,指令与数据没有区别,都是二进制信息。
三、计算机硬件系统的基本结构。其中我了解到了
1.著名的冯·诺依曼体系,即计算机硬件是由运算器、存储器、控制器、输入设备和输出设备五大部分组成。其中冯·诺依曼体系结构的核心思想是“存储程序”,即指令和数据都必须存储在内存中。
2.存储器。计算机的核心部件是CPU,CPU工作的条件是向其提供数据和指令,而数据和指令存放在存储器中。(其中CPU中可以存储数据的器件称为寄存器,与存储器是两个不同的概念。)存储器被划分为若干个存储单元,以字节为单位,从0开始。在之后也讲了各类存储器芯片(RAM:可读可写,必须带电存储,关机后存储内容丢失,ROM:只能读取不能写入,关机后其内容不丢失)。
3.CPU对存储器的读写。通过3类总线来实现CPU对数据的读写操作。地址总线——存储单元的地址(地址信息)、控制总线——器件的选择,读或写的命令(控制信息)、数据总线——读或写的数据(数据信息)。(1)1个CPU有N根地址总线,即为该CPU的地址总线宽度为N,最多可以寻找2^N个内存单元。(2)数据总线的宽度决定了CPU和外界的数据传送速度。8根数据总线一次可以传送一个8位二进制数据即一个字节。(8088CPU的数据总线宽度为8,8086CPU的数据总线宽度为16)(3)控制总线的宽度决定了CPU对系统中其他器件的控制能力。
四、内存地址空间。将所有的物理存储器看做一个由若干存储单元的逻辑存储器,即为内存地址空间,是一个逻辑上的概念。其容量受CPU寻址能力的限制,即和地址总线的宽度有关。例如8086CPU的地址总线的宽度为20,可以传送2^20个不同的地址信息,即可定位2^20个内存单元,则8086CPU的内存地址空间大小为1MB。同时还需注意内存地址空间的容量与平时所讲的内存条的容量不一样。
除此之外,通过网上学习,对于第一章的基础知识有了更加深入的理解。
1.机器指令是一串 0101010101的二进制数字;
2.二进制与机器指令的关系:二进制可以描述机器指令;
3.机器指令与汇编指令的关系:通过编译器可以直接翻译,一一对应;(汇编指令有对应的机器码)
4.CPU通过指令来控制整个计算机;
5.机器指令存放的位置:指令和数据都以二进制(翻译成16进制)的形式存放在内存中。内存即存储单元(单位为一个字节),由0开始编号;
6.地址总线:N根地址总线可以找到2^N个存储单元,编号从0-2^n-1。数据总线:一根即表示一个bit位。
7.计算机的其他部件都是有内存的,例如内存条、显卡、键盘、鼠标、网卡等。CPU通过内存编号的读写控制器件。CPU与其他部件的关系为:CPU将其他部件看作是内存地址。
下图是根据网上视频所进行的一些操作:
(图1——理解内存及内存编号)
(图2——理解CPU通过内存编号的读写控制器件。在这里的操作是:CPU向显存里写东西,显示器会发生相应的变化。)