@(读书笔记)[汇编语言,计算机]
基础知识
为什么要有汇编语言
CPU——电平脉冲(高低平)——二进制数字——机器指令——机器语言——难以人类大脑的记忆与检查——助记码(汇编指令,在机器指令中有对应)——再加上一些辅助语言(伪指令等,方便编译器处理,没有机器指令对应,CPU也不处理)
计算机核心部分
- CPU
有计算单元及一系列寄存器(AX, BX, CX, DX, DS, CS, SS, ES, SP, IP) - 存储器
内存划分为存储单元(以1字节为一单元),每一个单元有一个编号。这就是内存的地址,方便CPU读写信息。 - 总线
总线负责在CPU和其它芯片之间传输信息。为了让CPU知道哪一部分的信息要被看作指令,哪一部分要被看作数据,又把总线逻辑上分为地址总线、数据总线和控制总线。
- 至于这些总线的传输信息能力,则是看这些总线有多少根,因为每一个导线都有两种状态(高压和低压)对应二进制的0和1。
- 存储器芯片
我们都知道存储器分为RAM(随机存储器)和ROM(只读存储器)。但是,除了我们常规意义上说的内存和装有电脑的BIOS的MBR。其实每一个硬件对应的芯片也有BIOS,有些还有RAM。比如显卡。
所以我们可以这么认为,对硬件的操作,在底层上来说都是对存储器的读写操作。 - 内存
为了不让CPU有额外的控制变量的花销,整个计算机把所有的内存逻辑上看作是一个整体。也就是说,内存地址空间是统一编号的,每一个地址对应唯一的一个存储单元。
总之,其实整个底层逻辑很简单,CPU充当大脑管理计算机各个硬件设备(但不是直接管理,而是通过每一个硬件对用的芯片,管理芯片,也就管理了硬件)。方式就是通过地址总线定位要处理的芯片在内存中的位置,然后从数据总线读取要读写的数据,从控制总线来判断是要读还是写,还是别的操作。
寄存器
物理地址
由于8086(本书讲解对象)是16位架构的CPU,也就是说其内部总线是16位,只能传输16位二进制数字。但是我们的内存比较大,要求外部地址总线有20根,也就是说对一个内存地址的描述,需要20位二进制数字。所以我们引进了段地址+偏移地址来解决这个问题。于是20位的内存地址就叫做物理地址。在CPU中会根据段地址和偏移地址计算出物理地址。具体办法就是:段地址*16+偏移地址
类型
- CS+IP是一对,cs是段地址,IP是偏移地址。用来存储代码段,也就是当前的指令。
- DS+[……]是一对,DS存储某数据的段地址,其偏移地址就用方括号加上具体的数值给出。比如偏移地址是0,表示为[0]。
- SS+SP是一对,表示栈空间的段地址和偏移地址。栈空间的SP是指向栈顶,且其移动是以字为单位,也就是2byte为单位。一次移动两个存储单元。