汇编-寄存器(CPU工作原理)

本文详细介绍了8086CPU的内部结构,包括运算器、控制器、寄存器和总线,特别强调了16位寄存器的使用和段地址与偏移地址的组合方式来形成物理地址。CPU通过CS和IP寄存器定位内存中的指令,JMP指令用于修改这两个寄存器的内容,实现程序流程的控制。此外,还讨论了8086CPU如何利用段寄存器进行内存分段管理。
摘要由CSDN通过智能技术生成

一个典型的CPU由运算器,控制器,寄存器等器件组成,这些器件靠内部总线相连
区别:
内部总线实现CPU内部各个器件之间的联系,
外部总线实现CPU和主板上其它器件的联系

8086CPU有14个寄存器,它们的名称为:
AX,BX,CX,DX,SI,DI,SP,BP,IP,CS,SS,DS,ES,PSW
后面是x的寄存器都是16位
一个16位寄存器所能存储的数据最大值为 2**16 -1
超过16位的值会被抛掉
单独计算高位寄存器或者地位寄存器超过8位也是会抛掉
抛掉指的是超出的进制位不能在寄存器中保存,但是CPU不是真的抛弃进制位

AX,BX,CX,DX通常用来存放一般性数据被称为通用寄存器
16位的寄存器为了保证兼容性可以分为两个单独的8位寄存器
AX可以分为AH和AL,H是高位,L是地位

2.4物理地址

CPU访问内存单元是给出内存单元的地址,所有内存单元构成的存储空间是一个以为的线性空间,我们把这个唯一的地址成为物理地址

16位结构CPU

  1. 运算器一次最多处理16位的数据
  2. 寄存器最大宽度是16位
  3. 寄存器和运算器之间的通路是16位的

8086CPU给出物理地址的方法:
在这里插入图片描述

8086CPU读取内存时:

  1. CPU中的相关部件提供两个16位地址,一个为段地址,另一个为偏移地址
  2. 段地址和偏移地址通过内部总线送入一个称为地址加法器的部件
  3. 地址加法器将两个16位地址合并成一个20位地址
    在这里插入图片描述

2.8段的概念

内存没有分段,段的划分来自于CPU,由于80806CPU用,(段地址*16)+偏移地址=物理地址的方式给出内存单位的物理地址,使我们可以用分段方式管理内存

2.9段段寄存器

段寄存器就是提供段地址的
8086CPU有4个段寄存器
CS,DS,SS,ES

2.10 CS和IP

CS和IP是8086CPU中关键的寄存器,它们只是了CPU当前要读取指令的地址

CS为代码寄存器
IP为指令指针寄存器

8086PC互作过程:

  1. 从CS:IP只想内存单元读取指令,读取的指令进入指令缓冲器
  2. IP=IP+所读取指令的长度,从而只想下一条指令
  3. 执行命令,转到步骤1
    在8086CPU加电启动或复位后(即CPU刚开始工作时)CS和IP被设置为SC=FFFFH,IP=0000H

即在8086PC机刚启动是,CPU从内存FFFF0H单元中读取指令执行

FFFF0H单元中的指令是8086PC机开始后执行的第一条指令

2.11 修改CS,IP的指令

JMP指令,用指令中给出的短地址修改CS,偏移地址修改IP
JMP段地址:偏移地址
JMP 2AE3:3
JMP 3:0B16

JUM 某一合法寄存器
功能:用寄存器中的值修改IP
JMP AX (类似于mov IP,AX)
JMP BX

2.12 代码段

对于8086PS机,在编程时,可以根据需要,将依据内存单元定义位一个段

CPU只认被CS:IP指向的内存单位中的内容为指令

小节:

  1. 从CS:IP指向内存单位读取指令,读取的指令进入指令缓冲器
  2. IP指向下一条指令
  3. 执行命令,转到步骤一
  4. 8086CPU提供转移指令修改CD,IP的内容
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值