《汇编语言》第一章总结

汇编语言(面向机器的程序设计语言)

 

第一章 初识汇编———基础知识的掌握

这学期我们修读了汇编语言这门课,学习之前我很疑惑为什么学校要让我们先接触C和C++这类高级语言再让我们学习汇编这门低级语言课,于是带着许多的疑问,我走上了汇编的道路。汇编课程使用的教材是王爽的汇编语言,这本书采用以8086CPU为中央处理器的PC机来进行学习,下面我们步入正题!

 

翻开书的第一章是对基础知识的介绍,在章节的开头,我了解到,汇编语言是直接在硬件上工作的低级汇编语言,要想有效地应用汇编语言对硬件系统编程,就必须要了解硬件系统的结构。所以在第一章我们会学习硬件系统结构,为日后的课程打好基础。

 

计算机编程语言的演进

1.1机器语言

机器语言是机器指令的集合。机器指令是0和1构成的二进制信息。机器语言直接面向机器,与机器的硬件操作一一对应。其优点是计算机可以直接识别、执行,使用机器语言可以充分发挥计算机的硬件功能;而它的缺点是因为每一种微处理器有自己的硬件设计和内部结构,需要不同的电平脉冲来控制,所以每一种微处理器都有自己的机器指令集,所以依赖机器硬件。难以记忆,直接使用机器语言编制程序极易出错,并且难以调试。

 

 

 

 

                      电平脉冲

 

 

 

在上面的实例中,汇编语言和C语言十分简短易懂的代码却要用那么冗杂的机器码去表示,可见机器码的晦涩难懂和不易查错和调试。

 

 

1.2汇编语言

由于机器指令的难以辨别和记忆,机器指令的助记符———汇编语言诞生了。汇编语言的主体是由汇编指令组成的,汇编指令和机器指令的差别在于指令的表示方法上。不同的CPU有不同的汇编指令。

 

 

 

 

 

 

 

 

 

 

 

汇编语言由以下3类组成:1、汇编指令(机器码的助记符)2、伪指令   (由编译器执行)3、其它符号(由编译器识别)。汇编语的核心是汇编指令,它决定了汇编语言的特性。

 

3. 计算机硬件系统的基本结构

 

 

 

冯诺依曼体系结构

 

 

 

 

计算机系统的组成

 

 

1.3存储器和存储单元

CPU 是计算机的核心部件.它控制整个计算机的运作并进行运算,要想让一个CPU 工作,就必须向它提供指令和数据。数据在存储器中存放,也就是平时所说的内存。在一台PC机中内存的作用仅次于CPU,离开了内存,性能再好的CPU也无法工作。磁盘不同于内存,磁盘上的数据或程序如果不读到内存中,就无法被CPU 使用。存储器被划分为若干个存储单元,每个存储单元从0开始顺序编号。如下图所示:

                                                 

       2  

 

在内存或磁盘上,指令和数据都以二进制形式存在,  在形式上没有任何区别。如下图所示:

 

                

 

CPU要想进行数据的读写,必须和外部器件(标准的说法是芯片)进行三类信息的交互:1.存储单元的地址(地址信息)2.器件的选择,读或写命令(控制信息)3.读或写的数据(数据信息)

 

总线是计算机各种功能部件之间传送信息的公共通信干线,它是由导线组成的传输线束, 按照计算机所传输的信息种类,计算机的总线可以划分为数据总线、地址总线和控制总线,分别用来传输数据、数据地址和控制信号。总线是一种内部结构,它是cpu、内存、输入、输出设备传递信息的公用通道,主机的各个部件通过总线相连接,外部设备通过相应的接口电路再与总线相连接,从而形成了计算机硬件系统。在计算机系统中,各个部件之间传送信息的公共通路叫总线,微型计算机是以总线结构来连接各个功能部件的。

 

 

 

数据总线:在CPU与RAM之间来回传送需要处理或储存的数据,宽度决定了CPU与其它器件进行数据传送时的数据传送量。

地址总线:用来指定在RAM之中储存的数据的地址,其宽度决定了CPU的寻址能力。

控制总线:将微处理器控制单元的信号,传送到周边设备,其宽度决定了CPU对系统中其它器件的控制能力。


内存地址空间:也称为寻址空间,与CPU地址总线的宽度直接相关,表示CPU所能寻找到的最大地址空间范围。设一个CPU的地址总线宽度为n,那么可以寻址2的n次方个内存单元,这2的n次方个可寻到的内存单元就构成这个CPU的内存地址空间。

 

 

 

 

 

CPU在操控这些独立的物理存储器时,把它们统一当作一个逻辑存储器看待。这逻辑存储器即内存地址空间。每个物理存储器在这个逻辑存储器中占有一段址空间;CPU在这段地址空间中读写数据,实际上就是在相对应的物理存储器读写数据。不同的计算机系统的内存地址空间分配情况是不同的。

 

 

 检测点1.1

 

 

(1)1个CPU的寻址能力为8KB,那么它的地址总线的宽度为 13位。

解题过程:1KB=1024B,8KB=1024B*8=2^N,N=13。

(2)1KB的存储器有 1024 个存储单元,存储单元的编号从 0 到 1023 。

解题过程:存储器的容量是以字节为最小单位来计算的,1KB=1024B。

(3)1KB的存储器可以存储 8192(2^13) 个bit, 1024个Byte。

解题过程:8Bit=1Byte,1024Byte=1KB(1KB=1024B=1024B*8Bit)。

(4)1GB是 1073741824 (2^30) 个Byte、1MB是 1048576(2^20) 个Byte、1KB是 1024(2^10)个Byte。

解题过程:1GB=1073741824B(即2^30)1MB=1048576B(即2^20)1KB=1024B(即2^10)。

(5)8080、8088、80296、80386的地址总线宽度分别为16根、20根、24根、32根,则它们的寻址能力分别为: 64 KB、 1MB、 16 MB、 4 GB。

解题过程:一个CPU有N根地址线,则可以说这个CPU的地址总线的宽度为N。这样的CPU最多可以寻找2的N次方个内存单元。(一个内存单元=1Byte)。

(6)8080、8088、8086、80286、80386的数据总线宽度分别为8根、8根、16根、16根、32根。则它们一次可以传送的数据为: 1B、 1 B、 2 B、 2 B、 4 B。

解题过程:8根数据总线一次可以传送8位二进制数据(即一个字节)。

(7)从内存中读取1024字节的数据,8086至少要读 512 次,80386至少要读 256 次。

解题过程:8086的数据总线宽度为16根(即一次传送的数据为2B)1024B/2B=512,同理1024B/4B=256。

(8)在存储器中,数据和程序以 二进制 形式存放。

解题过程:在存储器中指令和数据没有任何区别,都是二进制信息。

 

posted @ 2018-10-15 09:48  zlsp  阅读(443)  评论(0)    收藏  举报