汇编语言(2)——寄存器

一个典型的CPU由运算器,控制器、寄存器等器件构成,这些器件由内部总线连接,在CPU中:

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

字在寄存器中的存储

在这里插入图片描述
8086CPU中所有寄存器都是2个字节16位的,一共有14个寄存器:AX,BX,CX,DX,SI,DI,SP,BP,IP,CS,SS,DS,ES,PSW。

其中AX,BX,CX,DX通常用来存放一般性数据。8086上一代寄存器事8位的,为了兼容上一代的CPU,这四个寄存器可以分为可独立使用的两个8为寄存器使用,如AX可以分为AH和AL。
在进行数据传送和运算时,要注意指令的两个操作对象的位数应当是一致的。

16位结构的CPU

16位结构,描述了一个CPU具有一下几个方面的特性:

  • 运算器一次最多可以处理16位的数据
  • 寄存器的最大宽度为16位
  • 寄存器和运算器之间的通路位16位
    对于16位CPU,能够一次处理、传输、暂时存储16位的地址

物理地址

CPU访问内存单元时要给出内存单元的地址,所有内存单元构成的存储空间时一个一维的线性空间,每一个内存单元在这个空间都有唯一的地址,我们将这个唯一的地址称为物理地址。
CPU通过地址总线送入存储器的,必须是一个内存单元的物理地址。在CPU向地址总线发出物理地址之前,必须要在内部线生成这个物理地址。
在这里插入图片描述

段地址*16+偏移地址=物理地址的本质含义

段地址16+偏移地址=物理地址的本质含义是:**CPU在访问访问内存时,用一个基础地址(段地址16)和一个相对于基础地址的偏移地址相加,给出内存单元的物理地址。**
关于上述公式的理解是:8086CPU是一个16位CPU,因此一次最多只能处理16位数据,而要想访问更多的物理地址,只能通过地址加法器将两个16位的数据转化为20位的无力地址。

段的概念

我们首先要明确,内存没有被划分,段的划分来自于CPU。
在编程时可以根据需要将一段连续的内存单元看作是一个段。段的起始地址一定是16的倍数,偏移地址是16位的,最多可以表示64KB的地址,一个段的长度最大为64KB

段寄存器

8086中有四个寄存器存放段地址:CS、DS、SS、ES

CS和IP

CS 和 IP 是8086 CPU 中最关键的寄存器,它们指示了CPU当前要读取指令的地址。CS 是代码段寄存器,IP 是指令指针寄存器。
在这里插入图片描述
CS 和 IP 的工作过程可以简要概括如下:

  1. 从 CS:IP 指向的内存单元读取指令,读取的指令进入指令缓冲器
  2. IP = IP + 所读取指令的长度,从而指向下一条指令
  3. 执行指令,转到步骤1,重复上述过程

在8086CPU 加电启动或复位后(即CPU刚开始工作时),CS = FFFFH, IP = 0000H
在这里插入图片描述

reference

《汇编语言 第三版》王爽

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值