Intel汇编:初识寄存器

参考

知乎:x86汇编之——8086寄存器讲解
小甲鱼汇编系列

综述

8086 CPU有14个16位寄存器,分别为
AX,BX,CX,DX,SP,BP,SI,DI,IP,FLAG,CS,DS,SS,ES
在这里插入图片描述
其逻辑结构如下图
在这里插入图片描述
数据在其中的存放情况如下
在这里插入图片描述

1. 通用寄存器

用于存放一般性的数据,其下又分为数据寄存器(AX、BX、CX、DX)、指针寄存器(SP、BP)和变址寄存器(SI、DI),共8个。

1.1 数据寄存器

AX (Accumulator):累加寄存器,也称之为累加器;

BX (Base):基地址寄存器;

CX (Count):计数器寄存器;

DX (Data):数据寄存器;

这四个寄存器都可分为独立的两个8位寄存器使用(如AX可分为AH和AL,其他同)

1.2 指针寄存器

SP (Stack Pointer):堆栈指针寄存器;

BP (Base Pointer):基指针寄存器;

1.3 变址寄存器

SI (Source Index):源变址寄存器;

DI (Destination Index):目的变址寄存器;

2. 控制寄存器

IP (Instruction Pointer):指令指针寄存器;

FLAG:标志寄存器;

3. 段寄存器

CS (Code Segment):代码段寄存器;

DS (Data Segment):数据段寄存器;

SS (Stack Segment):堆栈段寄存器;

ES (Extra Segment):附加段寄存器;

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

8086 CPU在访问内存时,采用此种方式计算内存单元的物理地址,因为其有20位地址总线,寻址能力为1M,但其内部是16位结构,如果仅将地址从内部直接发出,则只能寻址64KB,所以有一个地址加法器负责进行 从段地址(16位)+偏移地址(16位)到物理地址(20位)的转换。
在这里插入图片描述
其中:段地址由代码段寄存器CS给出,偏移地址由指令指针寄存器IP给出。
实际上,PC与CS:IP是一回事。

CPU取指、执行流程

  1. 将CS、IP中的内容送到地址加法器,产生一个20位的物理地址。
  2. 地址加法器将物理地址送往I/O控制电路,进而送往地址总线。
  3. 内存对此物理地址进行读操作,读出一条完整的汇编指令,送上数据总线。
  4. I/O控制电路将指令送到指令缓冲器。
  5. IP的内容自增,增量为此条指令的长度。
  6. 执行指令。

在CPU加电启动或复位时,CS和IP分别被置为FFFFH和0000H,即其第一次取指并执行的物理地址在FFFF0H。

CPU如何取一条完整指令

汇编指令的长度不定,比如有的是2B,有的是3B。
在这里插入图片描述
但地址总线只是传过来一个20位的物理地址,那CPU是如何知道从这个地址开始取多少位的内容呢?这与指令格式有关。
参考:计算机是如何知道取出来的一条指令的操作码有多少位

使用jmp指令改变CS、IP的内容

指令格式如下。
jmp 段地址:偏移地址可同时修改CS、IP。
jmp 寄存器可用寄存器中内容修改IP

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值