一、二章:汇编知识整理之基础知识,寄存器

第一章 基本知识总结

机器语言

机器语言其实就是和机器交流的语言,是机器指令的集合,机器指令可以控制计算机的一系列的命令。它是一系列二进制语言,计算机将其转化为一系列高低电平,来驱动计算机的电器器件,从而达到某些功能。

汇编语言

由于机器语言是一堆二进制语言,可读性非常差,所以出现了汇编语言,目的是为了更好的阅读还有书写代码。

汇编语言的组成

1.汇编指令:机器码的助记符,有对应的机器码。

2.伪指令:没有对应的机器码,由编译器执行,计算机并不执行(就是给编译器看的,告诉汇编程序如何进行汇编的指令)

3.其他符号:如+、–*、/等,由编译器识别,没有对应的机器码。

汇编的核心是汇编指令。

储存器

其实就是口袋,不断地取出和放回东西。

CPU与储存器

一、二章:汇编知识整理之基础知识,寄存器

内存单元

储存器里面被分成多个内存单元,每一个单元都有一个编号,这就是内存地址,CPU要访问内存的话,就要通过内存地址。

1.地址线

储存单元的地址,通过这条线传输地址信息。

2.数据线

要操作的数据,读或写的数据。

3.控制线

器件的选择,读或写的命令。

CPU对储存器的读写

1.CPU通过地址线将地址信息发出。
2.CPU通过控制线来操作来这个个内存,告诉它CPU接下来要干什么,接下来我要读取你的数据。
3.CPU通过数据线把数据读取。

写的过程和读一样。

地址总线

有N根地址总线,就有2^N个地址,寻址能力 2^N 个。
一、二章:汇编知识整理之基础知识,寄存器

数据总线

一、二章:汇编知识整理之基础知识,寄存器
一次传送8位数据

一、二章:汇编知识整理之基础知识,寄存器
一次传送16位数据。

一个储存单元可以存储 8 个bit,也就是 8 个二进制数。16位数就储存在两个储存单元里面。

第二章 寄存器

CPU的典型构成

运算器、控制器、寄存器等器件,这些器件靠内部总线相连。

运算器:数据处理

控制器:控制各种器件工作

寄存器:“小口袋”,信息储存。

xx位的CPU

运算器一次可以处理XX位

寄存器最大宽度为XX位

寄存器还有运算器之间的通路为XX位

物理地址

每一个内存单元构成的内存空间是一个一维的线性空间,而且每一个内存单元在这个空间里面的地址是唯一的,把这个唯一的地址就是物理地址。

8086CPU给出物理地址的方法

8086CPU是16位的结构,但是它有20位地址也就是220Byte,说明有1MB个地址。而8086CPU里16位的结构说明寻址能力有216位,少了2^4,对于这种情况,8086CPU采用两个16位地址合成的方法来合成一个20位的物理地址。

物理地址 = 段地址*16 + 偏移地址。

我们都是到,在机器里面,信息的储存都是以二进制方式存放的,段地址 x 16 说明,对于二进制来说数据左移4位,对于CPU访问的地址一般都用16进制表示,也就是左移1位。
一、二章:汇编知识整理之基础知识,寄存器
1.同一个物理地址,可以由不同的段地址还有偏移地址得到。
2.由于偏移地址的取值只有0000H~FFFFH,一共有10000H个数字,转化为十进制就是2^16次方=64KB,所以确定了段地址的话,偏移地址就会有64KB的寻址能力。(H代表16进制。)

数据储存的表达

数据的地址是12345H
1.数据在1234:0005单元中(“:”前面表示“段地址”,“:”后面表示偏移地址。)
2.数据在1234H段中的0005H里面。

段寄存器:CS

CS寄存器还有IP寄存器都是CPU里面非常重要的寄存器。
CS寄存器:代码段寄存器
IP寄存器:指令指针寄存器
一、二章:汇编知识整理之基础知识,寄存器
由于地址还有其他数据在CPU里面都是一堆二进制在打交道,CPU要怎么区分哪一些是指令,哪一些是数据呢?
CS:IP指向的内容就是执行指令。

比如CS = 2000; IP = 0000 (或者直接写0,高位会自动补上0)
这表示 2000:0所指向的内容是要当作指令来进行的。

工作过程

1.CS和IP进入地址加法器:
2.CS*16 + IP = 物理地址输出
3.物理地址进入“输入输出电路”
4.物理地址通过20位地址总线传到内存。
5.把内存里面的数据拿出来通过数据总线送到输入输出控制电路。
6.送到指令缓冲器里面,读取指令后,IP地址此时会增加。
7.在将数据送到执行控制器里面,执行指令。

详细的过程如下:

一、二章:汇编知识整理之基础知识,寄存器
一、二章:汇编知识整理之基础知识,寄存器
一、二章:汇编知识整理之基础知识,寄存器

修改CS、IP的指令

jmp 2000:0CPU从 2000:0 处开始执行命令。
jmp 段地址:偏移地址
这句话的作用为:修改CS的地址还有IP的地址。

还可以直接只修改IP。
比如: jmp 某一合法寄存器
例子 jmp ax = mov IP,ax(功能上相等,但是语法上mov IP,ax“不存在。