汇编语言-寄存器

本文介绍了8086CPU的结构,重点讲解了通用寄存器的逻辑结构以及16位地址线如何通过段寄存器和偏移寄存器实现最大1MB的寻址能力。寄存器之间相互独立,数据与寄存器位数需一致。段地址乘以16加上偏移地址形成物理地址,使得CPU能访问不同内存位置。
摘要由CSDN通过智能技术生成

寄存器

寄存器的概念: 计算机CPU由运算器、控制器、寄存器以及内部总线等器件构成,其中运算器是进行数据处理,控制器负责控制各种器件进行工作,寄存器负责存储数据和指令。学习汇编语言主要掌握寄存器相关知识,已8086CPU为例。

8086CPU特点介绍:

  • 共有14个16位寄存器:通用寄存器(AX BX CX DX)  SI DI SP BP IP CS DS ES SS PSW;
  • 共有16根数据线,即一次可以访问两种类型数据:字节数据(1 byte=8 bit)和字型数据(2 byte = 16 bit);
  • 共有20根地址线,寻址空间最大为1MB;
  • 共包括 总线接口部BIU 和 执行部件EU。

1.通用寄存器(AX BX CX DX): 用于存放一般性数据,为16位寄存器,其逻辑结构如下所示

在这里插入图片描述

为了保持兼容性,8086CPU可分为两个独立8位寄存器使用:AX的低8位构成AL寄存器,AX的高8位构成AH寄存器,即

AX = AH+AL  BX = BH + BL CX = CH + CL DX = DH + DL,如下图所示:

在这里插入图片描述

注意

  • 数据与寄存器之间应该保持 位数一致性:16位数据只能给16位寄存器;
  • 寄存器之间是相互独立的;

2.段寄存器和偏移寄存器

(1)问题的引出:

8086CPU有20位地址总线,其寻址能力最大为1MB,但8086CPU寄存器为16位,在内部一次性处理、传输、暂时存储的地址为16位,如果地址从内部简单的发出,那么它只能发出16位,表现出的寻址能力只有64KB,故其寄存器位数限制了寻址能力。为了解决上述问题,引入段寄存器(ds es ss cs)和** 偏移寄存器(SP BP SI DI IP BX)的概念,段寄存器存储段地址,偏移寄存器存储偏移地址,其物理内存地址 = 段地址×16(10H) + 偏移地址

在这里插入图片描述

(2)增加段地址和偏移地址的概念后,8086CPU写入内存执行步骤:

  • CPU中的相关部件提供两个16的地址,一个称为段地址,另一个称为偏移地址;
  • 段地址和偏移地址通过内部总线送入一个称为地址加法器的部件;
  • 地址减法器将两个16位地址合成一个20位的物理地址;
  • 地址加法器通过内部总线将20位物理地址送入输入输出控制电路;
  • 输入输出控制电路将20位物理地址送上地址总线;
  • 20位物理地址被地址总线传送到存储器。

在这里插入图片描述

(3)"段地址×16+偏移地址 = 物理地址"的本质含义

CPU在访问内存时,用一个基础地址(段地址×16)和一个相对于基础地址的偏移地址相加,给出内存单元的物理地址。

(4)注意:

  • CPU可以用 不同的段地址和偏移地址形成同一个物理地址。
  • 如果给定一个段地址,仅通过变化偏移地址来进行寻址,最多可以定位64KB个内存单元。
  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值