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

1.通用寄存器

    8086中的所有寄存器都是16位的,可以存放两个字节,AX、BX、CX、DX这四个寄存器用来存放一般性的数据,统称为通用寄存器
在这里插入图片描述
    由于8086的上一代cpu其寄存器是8位的,因此也可以将寄存器分为两个独立的8位寄存器来使用,如下所示。
在这里插入图片描述

2.字在寄存器中存储

    cpu可以对两种尺寸的数据进行一次性处理:

  1. 字节:byte,由8个bit组成,存放在8位寄存器中;
  2. 字:word,由两个字节组成。
    在这里插入图片描述

3.确定物理地址的方法

    所有的内存单元构成的存储空间是一个一维的线性空间,每一个内存单元在这个空间中都有唯一的地址,这个地址称为物理地址。cpu通过地址总线送入存储器的必须是一个内存单元的物理地址,因此首先在cpu内部形成物理地址。
    8086被称为16位机,那是因为在8086内部,一次性处理、传输、暂存的信息的最大长度为16位,因此,能一次性处理、传输、暂存16位的地址。但是8086有20位地址总线,其寻址能力达到了1MB,因此需要采用两个16位地址合成的方法来形成一个20的物理地址。
在这里插入图片描述
    如上图所示,cpu想要读写内存的步骤如下:

  • cpu中部件提供两个地址:段地址偏移地址
  • 段地址和偏移地址通过内部总线送入地址加法器
  • 地址加法器将两个16位地址合成一个20位地址;
  • 地址加法器通过内部总线将20位地址送入输入输出控制电路
  • 输入输出控制电路将物理地址送到地址总线;
  • 物理地址被地址总线送到存储器中。

    地址加法器的工作流程如下:
在这里插入图片描述

4.内存分段表示法

    如下图所示,cpu将内存进行段的划分,即将若干地址连续的内存单元看作一个段,将段地址左移4位就是定位段的起始地址,用偏移地址确定具体的内存单元。
在这里插入图片描述
    如上图左边所示,段的起始地址为10000,而结束地址为100FF,其大小为100;右边将该段分为更小的两端,大小都为80。段地址一定是16的倍数,这是因为物理地址是由段地址*16+偏移地址得到的,而偏移地址是16位的,因此一个段的最大长度为16KB。

5.CS、IP寄存器及代码段

    CS和IP寄存器是8086CPU中最关键的两个寄存器:CS为代码段寄存器,IP为指针指令寄存器。在任意时刻,CPU将地址为CS:IP指向的内容当做指令执行。如下图所示,即为CPU读取、执行指令的工作原理。
在这里插入图片描述
    初始状态,CPU中CS寄存器为2000,IP寄存器为0。
在这里插入图片描述
    CS、IP中的内容送入地址加法器。
在这里插入图片描述
    地址加法器将物理地址送入输入输出电路。
在这里插入图片描述
    控制电路将物理地址送上地址总线。
在这里插入图片描述
    内存20000单元处的内容被从数据总线传送到CPU中。
在这里插入图片描述
    控制电脑将指令B8 23 01传送到指令缓冲器。
在这里插入图片描述
    读取一条指令后,IP的值自动增加。
在这里插入图片描述
    指令B8 23 01被执行。
在这里插入图片描述
    指令执行后AX寄存器中内容被改变。

6.jmp指令

    在CPU中,程序员能够用指令读写的部件只有寄存器,通过改变寄存器中的内容来控制CPU,CPU执行的指令位置是由CS、IP寄存器中的内容决定的,通过改变这两个寄存器的内容就可以控制CPU执行目标指令。可以通过jmp指令来修改CS:IP的内容。
    如果想同时修改CS:IP的内容,可用“jmp段地址:偏移地址”的指令完成:
    jmp 2AE:3,执行后CS的值为2A3E,IP的值为0003,CPU会从2AE33处读取指令。
    如果仅仅修改IP中的内容,可以用“jmp 一个合法寄存器”的指令完成:
    jmp ax,如果ax=1000,那么IP中的内容也会变为1000。
    (本文中的内容改编与王爽老师《汇编语言》)

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值