目录
1.0小结
1.汇编指令是机器指令的助记符,同机器指令一一对应
2.每一种cpu都有自己的汇编指令集(原因是内部组成结构的排序和数量等不相同,也就是cpu型号不同)
3,cpu可以直接使用的信息在存储器中存放
4.在存储器中指令和数据没有任何区别,都是二进制信息
5.存储单元从零开始顺序编号
6.一个存储单元可以存储8个bit,即8位二进制数
7.1 Byte=8bit 1KB=1024B 1MB=1024KB 1GB=1024MB
8.每一个cpu芯片都有许多管脚,这些管脚和总线相连。也就是说,这些管脚引出总线。一个cpu可以引出3种总线的宽度标志了这个cpu的不同方面的性能
地址总线的宽度决定了cpu的寻址能力
数据总线的宽度决定了cpu与其他器件进行传送时的一次数据传送量
控制总线的宽度决定了cpu对系统中其他器件的控制能力
在汇编课程中,我们从功能角度介绍了3类总线,对实际的连接情况不做讨论
1.5小结
最终运行程序的是cpu,我们用汇编语言的时候,必须要从cpu的角度考虑问题。对cpu来讲,
系统中的所有存储器的存储单元都处于一个统一的逻辑存储器中,他的容量受cpu寻址能力的限制。
这个逻辑存储器即使我们所说的内存地址空间
汇编语言是一种功能很强的程序设计语言,也是利用计算机所有硬件特性并能直接控制硬件的语言。汇编语言”作为一门语言,对应于高级语言的编译器,需要一个“汇编器”来把汇编语言原文件汇编成机器可执行的代码。
——摘抄自百度
https://baike.baidu.com/item/计算机汇编语言/8786633?fr=aladdin
1.1汇编语言的“前身”——机械语言
提示:不喜欢看书本的,每部分都有笔者自己的理解和总结,可以跳到“非书本”(特别凝练)
同时书本也代表了专业和权威,有时间也希望大家能沉下心来,早日在学术上登峰造极。
非书本:
笔者以为:
机器语言:二进制
汇编语言:键盘字母代替一连串二进制
高级语言:封装了一连串字符串(字母组合)
以下是机器语言,汇编语言和高级语言的区别(其他博主写的很详细了)
书本原图内容:
共两页
1.2汇编语言的产生
经典图例
汇编语言与机器语言之间的关系(书本)
高级语言和汇编之间的关系(非书本)
书本原文
非书本
关于寄存器后面会提到
1.3汇编语言的组成(书本知识点)
3种指令
1.汇编指令:机器码的助记符,有对应的机器码
2.伪指令:没有对应的机器码,由编译器执行,计算机不执行(突然联想到力扣刷题的伪代码)
3.其他符号:如加减乘除(...+-*/),由编译器识别,没有对你应的机器码
汇编语言的核心
汇编语言的核心 是汇编指令,他决定了汇编语言的特性
1.4存储器(CPU)
注意:这里的存储器并非指CPU,而是他们之间的关系很密切(实际上是内存)
cpu作为计算机核心部件,控制着计算机(运作和计算),而让cpu工作就需要发送和接收指令和数据
而这些指令和数据在存储器释放(你可以理解为缓冲区)
内存对于cpu处理器的重要性就如同思考对于大脑的重要
存储器的种类
ROM 只读存储器
RAM 随机存储器
Cache 高速缓存存储器
关于磁盘,内存和cpu之间的关系
磁盘中不像内存可以下一步被cpu处理
也就是说
磁盘-->寄存器(内存)-->cpu
但笔者想 寄存器不直接叫内存可能是还有些细微的区别,因此查询了其他笔者的博客,如下:
什么是随机存取_内存和存储器有什么区别?_weixin_39777163的博客-CSDN博客
下面了解cpu如何从内存中读取信息,以及向内存中写入信息的
1.5指令和数据
指令和数据是应用上的概念;
在内存或磁盘上,指令和数据都是二进制
如
10011010101(随便打的,可能是二进制,也可能是16进制)
既可以代表数如69,也可以是MOV ax,[3](机器码转换成的汇编指令)
1.6储存单元
存储器被划分为若干个存储单元,每个存储单元从0开始顺序编号
关于堆栈
写完汇编笔者准备写算法的内容,现在笔者一直也分不很清,只知道,堆不是垃圾堆那种封底的
堆是先进先出,栈是先进后出
好像大学要记住这句话,但是就像笔者们对堆栈的描述没有把这句话当重点的,反而大家对堆栈底部作用的解析更容易让我们明白堆栈的区别
换算单位
1B=8bit
1KB=1024B
1MB=1024KB
1GB=1024KB
1GB=1024MB
1TB=1024GB
磁盘的容量单位同内存一样,以上单位是微机中常用的计量单位
1.7cpu对存储器的读写
书本图片介绍:
3类信息交互
cpu想要进行数据的读写,必须和外部的器件(标准的说法是芯片),进行3类信息交互
存储单元的地址(地址信息)
器件的选择,读或写的命令(控制信息)
读或写的数据(数据信息)
总线
计算机中专门连接CPU和其他芯片的导线(bus)
总线从物理上来讲就是一根根导线的集合
逻辑上分三类
地址总线(address bus),控制总线(contorl bus),数据总线(data bus)
由图可见
总线(传递公共信息)连接了CPU和内存,
传递过程(书本知识点):
1.cpu通过地址线将地址信息3发出(这个发出具体是复制一份还是后面的送出,这件事可能和指针有关)
2.cpu通过控制线发出让内存读取命令,去选择存储芯片,通知他,将要从中读取数据
3.存储器将3单元中的数据8通过数据线送入cpu
注意:这里的3.8是单元格序号(类似于数组下标,从0开始,里面有不同的值)
书本内容
讲的就是 一串机械码如何对应汇编指令
1.8地址总线(寻址能力)
寻址,地址里储存的就是数据
既然 cpu通过地址总线来指定存储单元的,那么 地址总线上能传递多少个不同的信息,cpu就可以对多少个存储单元进行寻址
同时机器码中的0,1在导线中的稳定状态,只有两种,高低电平,因此假设10根导线,就可以传送10位二进制数据,也就是表示2的10次方个不同的数据,(最大1023,最小0,一共1024也就是2的10次方个)
书上的一个思考问题
问了下大佬,等他的回复
1.9数据总线
补充完善:
cpu与内存或其他器件之间的数据传送是通过数据总线来进行的。数据总线的宽度决定了cpu和外界数据传送速度
数据总线图例
8根数据总线的,要传两次,
16根数据总线的传一次
1.10控制总线
cpu对外部器件的控制是通过控制总线来进行的。
在这里控制总线是个总称,控制总线是一些不同控制线的集合,、
同理,多少根控制总线,也意味着cpu提供多少种对外部器件的控制。
1.11 内存地址空间(概述)
cpu的地址总线为n,寻址能力为2的n次方
这2的n次方个内存单元构成了cpu的内存地址空间
1.12 主板
每一台pc机都有一个主板
主板<===>总线(地址/数据/控制)<===>内外部器件(cpu/存储器/外围芯片组/扩展插槽(其上一般有RAM内存条和各类接口卡)”)
1.13 接口卡
由于cpu对外部设备无法直接控制,如:显示器/音箱/打印机
因此用插在扩展插槽上的接口卡间接控制
扩展插槽通过总线与cpu取得联系
cpu===>接口卡===>外部设备
1.14各类存储器芯片(硬盘和内存与缓存)
一台pc机上有很多存储器芯片,在物理上连接是独立的
从读写属性上分为两类
RAM随机存储器(硬盘) | ROM只读存储器(内存,显存) |
可读可写 | 只读去不能写入 |
带电储存,关机后存储内容丢失 | 关机后内容不丢失 |
提示:显存就是高速内存,缓存是内存的一部分
从功能和连接上分成下面三类
随机存储器:
存放cpu使用的绝大部分程序和数据
其中,主存储器一般由两个位置上的RAM组成:主板上的RAM和扩展槽上的RAM
装有BIOS的ROM
什么是BIOS?
BIOS是厂商提供的软件,控制硬件进行基本的输入输出
例如:
主板和接口卡上有存储相应BIOS的ROM |
主板上的ROM存储着主板的BIOS |
显卡的ROM上存储着显卡的BIOS |
如果网卡上装有ROM,其中就可以存储网卡的BIOS |
BIOS和ROM之间就是这样的关系
接口卡上的RAM
由于某些接口卡需要大量输入输出(显示器的),对数据进行暂时存储,其上RAM,一般称为显存(高速缓存)
也就是当我们把需要显示的内容写入显存,然后就会出现在显示器上
因为是手机拍的,将就看(不会用补帧软件)
1.15内存地址空间
1.14中提到的存储器,在物理上是独立的器件,但是有两点相同的
1.都与CPU的“总线”相连
2.cpu对它们进行读或写的时候都通过控制线发出内存读写命令
也就是在cpu眼中,存储器就相当于内存(即内存地址空间)
如图所示:
由图我们可以想象到,所有的物理存储器都可以假想成一个具有若干存储单元组成的“逻辑存储器”,而这些物理存储器在假想的逻辑存储器中各自占有一段地址空间,cpu在这段空地址中间读写
数据,实际上就是在对应的物理存储器中读写数据