认识汇编:解码计算机思维的底层语言(第一章)
1.机器语言
1.1 定义
机器语言是机器指令的集和;
其实就是一台机器可以正确执行的命令(eg:01001001110);
机器码的顺序,从左到右,从高位到低位;
2、汇编语言
2.1 前言
汇编语言的主体就是汇编指令;
汇编语言与机器语言的区别:
eg:
机器指令:1000100111011000
操作:寄存器BX的内容送到AX中
汇编指令:MOV AX,BX
便于人们记忆与开发,汇编指令最终也会通过编译器解析成机器码,所以说相对越高级的语言执行效率越低;
eg:
Java语言 -> 编译器 -> 汇编语言 -> 编译器 -> 机器码
2.2. 汇编语言的组成
汇编指令+伪指令、其他符合(由编译器执行和识别)
核心是汇编指令,它决定了汇编语言的特性;
2.3 CPU
计算机的核心组件(计算机心脏),控制整个计算机的运作和运行计算,要想让CPU工作,就必须向他提供指令和数据;
2.4 存储器
存储器被划分为若干个存储单元,每个存储单元从0开始顺序编号;
2.4.2 作用
用来存放指令和数据(说明:内存只是其中一个存储器),提供给CPU运作;
CPU离开了内存,性能再好,也是无法工作;
2.5 磁盘
磁盘不同于内容,磁盘上的数据或程序如果不读到内存中,就无法被CPU使用;
虚拟内存:其实就是在磁盘创建了一块空间用来存储数据,CPU调用内存,当内存不够时,内存先从磁盘把虚拟内存加载到内存中,在提供给CPU使用;
2.6 单位换算
1B = 8bit
1KB = 1024B
1MB = 1024KB
1GB = 1024MB
1TB = 1024GB
2.7 CPU对存储器的读写
CPU进行数据读写,必须和芯片进行三类信息的交互:
地址信息、控制信息、数据信息
2.8 存储单元
1、每个存储单元都是从0开始顺序编号;
2、存储器的容量是以字节为单位,也就是说,一个存储单位的大小是一个Byte;
3、磁盘的容量单位和内存一样;
4、一个存储单元有一个存储地址;
2.9 地址总线
1、CPU通过地址总线来指定内存单元;
2、CPU通过地址总线指定存储器单元,也就是说地址总线上可以传输多少个不同的信息,CPU就可以对多少个存储单元进行寻址;
3、一个CPU有N根地址线,则这个CPU的地址总线宽度为N,那么这样的CPU最多可以寻找2的N次方个存储单元,那么它的寻址能力也就是2的N次方(单位:个);
为什么是2的N次方?
因为一个导线传送的状态只有两种,高电平或低电平,所以最多可以传输2的N次方个数据;
4、如果你想让使用的软件达到64位的寻址能力,除非CPU支持64位,以及操作系统也支持64位;
5、地址总线的宽度决定了CPU的寻址能力;
6、推导公式:
设 传输次数为 x次,传输大小为 yByte,宽度为 N根,则公式:x=y/2^N
7、计算时,寻址能力基本上都是以个为单位;
2.10 数据总线
1、CPU与其他芯片之间的数据传输是通过数据总线进行的;
2、数据总线的宽度,决定了CPU和外界的数据传输的速度;
3、计算时,传输能力基本上都是以存储单位为单位(B);
2.11 控制总线
1、CPU对芯片的控制是通过控制总线进行的,这里的控制总线只是总称,控制总线是一些不同控制线的集合;
2、控制总线的宽度决定了对芯片的控制能力;
3、控制总线的宽度与以上两种不同,不同的线代表对不同东西的控制,例如,有读信号输出的控制线,写信号输出的控制线;
2.12 存储器芯片
存储器从物理连接上看是独立的、不同的;从读写属性分为两类:随机存储器(RAM)和只读存储器(ROM);
随机存储器:
1、可读可写,必须带电存储,关机后存储的内容丢失;
2、主要用于存放供CPU使用的绝大部分数据和程序,一般由装在主板上RAM和插在扩展卡槽上的RAM组成;
只读存储器:
1、只能读不能写,关机后内容不丢失;
2、由主板和各类接口卡(如显卡、网卡等)厂商提供的软件系统,利用硬件设备进行输入输出;
2.13 内存地址空间
定义:
例如,一个CPU的地址总线宽度是10,那么可以寻址1024个内存单元,这1024个可寻址的内存单元就构成了内存地址空间;
特性:
1、都和CPU总线相连;
2、CPU对他们进行读写时,都是通过控制线发出内存读写指令;
操作存储器原理:
也就是说,CPU在操作存储器时,把他们都当做内存来操作,把他们总的看做一个由若干存储单元组成的逻辑储存器,这个逻辑存储器就是内存地址空间;每个物理存储器在这个逻辑存储器中占有一个地址段,即一个地址空间;CPU在这段地址空间读写数据,实际上就是在相对应的物理存储器中读写数据。
内存地址空间大小的限制:
内存地址空间的大小受CPU寻址能力的限制,其实就是受CPU地址总线的宽度限制;
2.14 小计
1、8086CPU地址总线20根,外部和内部数据总线16根,也就是说,寻址地址空间是1M(2^20),内外部数据传输能力是2B(16bit);
8088CPU地址总线宽度是20,运算部件及内部数据总线都是按16位设计的,单外部数据总线只有8条,也就是说,内部数据总线传输能力是2B,外部是1B;