目录
机器语言与汇编语言
1.机器语言:机器指令的集合
优点:直接可以被机器解读执行,执行效率高;
缺点:由于CPU的硬件设计和内部结构不同,不同的CPU有不同的指令集,造成复用性低;全为二进制代码组成,理解记忆性差。
2.汇编语言:由符号式的程序设计语言,由汇编指令构成。直接在硬件之上工作的语言。
优点:由符号组成,相对于机器语言记忆性理解性更强;
缺点:需要汇编程序(编译器)进行编译,因此效率低于机器语言。
3.汇编语言的组成:
(1)汇编指令:机器码的助记符,有相对应的机器码;如mov,add等;
(2)伪指令:没有对应码,由编译器识别;
(3)其他符号:+-*/等,编译器识别,无对应机器码;
存储器
1.电脑主机由CPU和存储器构成,应用汇编语言在硬件上进行操作,需要了解存储器的基本结构。
2.指令与数据:
现代计算机大都采用冯.诺依曼在研究EDVAC机时提出的“存储程序”的概念,即将程序(指令)与数据以同等的地位存储在存储器中。指令与数据由控制器进行区分,在内存中均以二进制形式进行存储。
3.存储单元
存储器(存储体)中存在着许多的存储单元,每个存储单元存储一串二进制代码(存储字),该二进制代码的长度(存储字长)。
在计算机中最小的信息单位是1bit(二进制位,0/1)。一般的微型机的存储字长为8位,即一个存储单元可以存储8个二进制位,因此规定1Byte(=8bit)来作为存储器容量计算的最小单位。现代计算机一般的存储字长为16位,即每个存储单元的容量为2Byte。
4.存储容量单位
1Byte = 8bit 1KB=1024B 1MB=1024KB 1GB=1024MB
均需要为2的次方。
5.存储器读写方法
因为指令与数据均以同等地位保存在存储器中,因此寻找他们可以直接以地址在存储器中寻找(冯.诺依曼机的另一特性:按址寻找)。CPU通过三类总线对于进行信息传递:
(1)地址总线:CPU中的PC寄存器存储着指令地址通过地址总线向存储器中的MAD寄存器进行地址传导,进而在存储器中寻找相应地址的指令/数据。因为要寻找存储器中的所有的数据/指令,因此地址总线必须可以表示所有存储单元的地址。
此处一根地址线可以表示0、1,使用地址总线具有的地址数量n作为地址总线的宽度(代表了地址总线的寻址能力),要寻找相应数量的内存单元,即2的n次方数==内存单元数;
(2)数据总线:在存储器中通过相应地址寻找到数据后,需要通过数据总线进行传输。因此数据总线的宽度代表了一次传输数据的大小(进而决定了数据传输的速度)。
此处一根数据先可以表示0/1,8根数据线组成的数据总线一次最多传递1Byte,若要传递2Byte需要分两次传输,进而使速度变慢。
(3)控制总线:CPU为中央处理器,需要对所有的器件进行控制,因此需要不同的控制线,构成了控制总线。因此控制总线的宽度代表了CPU对外部的器件的控制能力。
内存地址空间
1.随机存储器(RAM)random
(1)主随机存储器:存储绝大部分的程序和数据,由装在主板上的RAM和拓展插槽的RAM;
(2)接口卡上的RAM:对于输入输出的数据进行暂时的存储;如显示卡(显存)写入即出现在显示器上。
(3)特点:可读可写,必须带电存储。
2.只读存储器(ROM)output
(1)特点:只能读取,不能写入,关机后内容不丢失;
(2)BIOS是基本输入输出系统,可以利用硬件设备进行输入输出,如显卡上的BIOS系统装在显卡的ROM中,不能更改,只能读取使用。
3.内存地址空间
此下图为8086PC的地址内存空间分配:8086地址总线为20,可以存储个存储单元,即内存编号从0~-1,用十六进制表示为0~FFFFF。
需注意:
(1)00000~9FFFF为RAM,因此可读可写;
(2)A0000~BFFFF为显存地址空间,向此处写入数据会在显示屏上展示;
(3)C0000~FFFFF为ROM,此处数据只读不写,修改此处数据无效。
练习题:
(1)1个CPU的寻址能力为8KB,那么他的地址总线宽度为:
寻址能力由地址总线的宽度决定,一根地址线传递1Byte即存储单元(!!!一个存储单元里面有8bit),8KB=B,故地址总线宽度为13;
(2)1KB的存储器有__个存储单元,存储单元编号为__到__。
一个存储单元中可存储1B的数据,因此1KB=B,有1024个存储单元,编号从0开始至1023
(3)8080、8088、80286、80386的地址总线的宽度分别为16、20、24、32,寻址能力分别为
8080:Byte = B 8088: Byte = 1MB 8086:MB 80386:GB
(4)8080、8088、8086、8086、80286、80386的数据总线的宽度分别为8、8、16、16、32,一次传送的数据分别为:
一根数据线可以表示0/1即1bit,因此八根表示8bit = 1Byte,十六根表示16bit = 2Byte,三十二根表示32bit = 4Byte。
(5)从内存中读取1024字节的数据,8086至少要读__次,80386至少要读__次。
由(4)可知8086一次可以读2B,1024字节要读512次,80386一次4B,1024要读256次。