用户工具

站点工具


assembly:register

2.寄存器

一个典型的CPU由运算器、控制器、寄存器(CPU工作原理)等器件组成,这些器件靠内部的总线相连。程序员通过改变各种寄存器中的内容实现对cpu的控制

器件 功能
运算器 进行信息处理
寄存器 进行信息存储
控制器 控制各种器件进行工作
内部总线链接各种器件,在他们之间进行数据的传输

内部总线:实现的是CPU内部的各个器件之间的联系

外部总线:实现的是CPU和主板上其他器件之间的联系

8086cpu有十四个寄存器:AX,BX,CX,DX,SI,DI,SP,BP,IP,CS,SS,DS,ES,PSW

1. 通用寄存器

8086CPU所有的寄存器都是16位的,可以存放两个字节(2B=2*8位=16位)AX,BX,CX,DX通常用来存放一般性的数据被称为通用寄存器

一个16位的寄存器所能存储的数据的最大值为:2的16次-1

1.1 数据存储

为了保证兼容性,这四个通用的寄存器都可以分为两个独立的8位寄存器使用

寄存器 高位 低位
AX AH AL
BX BH BL
CX CH CL
DX DH DL

AH和AL寄存器是可以独立使用的8位寄存器,AL寄存器计算溢出,不到进位到AH寄存器

十进制2000为例

2. 字在寄存器中的存储

2.1 字、字节、比特的关系

字(word):1个是由2个字节组成=2*8字节=16比特

高位字节低位字节可以堪称是独立的字节数据。

十六进制的1位相当于二进制输的4位

3. 几条汇编语言

通过汇编语言控制cpu进行工作

3.1 高低8位计算方式

计算案例

AX只能放4位十六进制的数,最高位的1不能在AX保存,所以数据为044CH。满16进1。

计算案例

注意指令的两个操作对象的位数应当一致。

4. 物理地址

物理地址内存单元在其所在的一个一维的线性空间中的唯一地址

物理地址必须在内部先形成。

5. 16位结构的cpu

结构特性
运算器一次最多可以处理16位的数据
寄存器的最大宽度为16位
寄存器和运算器之间的通路为16位

6. 8086cpu给出物理地址的方法

8086cpu地址总线20位:1048576个内存单元,寻址能力1M。

8086cpu是16位结构:只能发出16位的地址,65536个内存单元,寻址能力64kb。

8086cpu采用一中在内部用两个16位地址合成方法形成一个20位的物理地址。

地址加法器采用物理地址=段地址*16+偏移地址

7. 段地址*16+偏移地址

“段地址×16+偏移地址=物理地址”的本质含义:CPU在访问内存时,用一个基础地址(段地址×16)和一个相对于基础地址的偏移地址相加,给出内存单元的物理地址。

8. 段地址的概念

16位的寻址能力为64KB=65536个(0-65535)

cpu可以用不同的段地址和偏移地址形成他同一个物理地址。

段地址1000H,用偏移地址寻址,cpu的寻址范围10000H(左移1位) 至 10000H+FFFF(65535)=1FFFFH

*16 相当于 末尾左移1位 前位补0

/16 相当于 末尾右移1位替换前位数值

9. 段寄存器

存放段地址和偏移地址 8086cpu有4个段寄存器:CS DS SS ES,当cpu要访问内存时由这4个段寄存器提供内存单元的段地址

10. CS和IP

指示了cpu当前要读取指令的地址。 CS:段寄存器 IP:指令指针寄存器。

CS:IPZ指向的内容当做指令执行。 = cs*16+ip单元开始(ip的值根据实际自加),读取一条指令并执行。

从CS:IP指向的内存单元读取指令,读的指令进去指令缓存器。

IP=IP+所读取指令的长度,从而指向下一条指令

执行指令,重复这个过程

10.1 修改CS、IP的指令

程序员能后用指令读写的部件只有寄存器,可以通过修改寄存器中的内容实现对cpu的控制。

mov:传送指令 操作寄存器

10.2 jmp 指令

jmp :转移指令 jmp CS:IP

只修改IP的内容,配合寄存器使用。

jmp ax,= ax赋给IP,CS保持不变

10.3 工作过程

1.从CS:IP指向的内存单元读取指令,读的指令进入指令缓存器

2.IP指向下一条指令先做ip自加 然后执行读取到的指令

3.执行指令

11. 代码段

cpu只认被CS:IP指向所定义的内存单元中的内容为指令。

assembly/register.txt · 最后更改: 2024/03/20 17:05 由 争当好青年