【汇编语言】CS:IP寄存器

花上班的休息时间写出来的一篇文章

注意:以下寄存器命令执行环境为实模式,保护模式下CS:IP的寻址方式会发生变化,以下模式不再适用。

根据网上资料查询可知:

       CS和IP为两个寄存器,分别是代码段寄存器指令指针寄存器,CS寄存器中所存储的数据是当前要执行的代码段的首地址,IP寄存器中所存储的数据是下一段将要执行的代码段的地址,本人的理解为偏移量或者代码段长度。两个寄存器一般组合在一起使用,作为8086CPU中最关键的两个寄存器,CS:IP指向了当前要执行的指令的地址

下面是正文     ————————————————————————

    在解释CS:IP是怎么执行指令之前,先要补充一些知识。

一.代码段

       使用以下代码段来说明:

       

       以上为一段长度为24个byte的代码,假设存放在内存中,地址从00000H~00018H中,那么就可以认为,内存单元00000H~00018H是用来存放代码的,是一个代码段。PS:CPU只会将CS:IP所指向的内存单元里面的内容视为指令,其他内存单元里面的内容可以是指令也可以是数据,所以如果想要将指定内存单元里面的内容视为指令,可让CS:IP指向代码段首地址即可(可以使用汇编指令jmp进行指向)。

二.地址加法器的运算方法

       如CS = FFFFH, IP = 0000H,在取出CS:IP中的地址前先对这两个寄存器中所存储的地址进行相加操作,操作如下:1.CS中的数据左移四位, 所以最终CS = FFFF0H(为什么会得到这个结果?因为这个数据是16进制的,“H”代表了“HEX”)  2.CS+IP = FFFF0H+0000H = FFFF0H。3.最后地址加法器将“FFFFF0H”这个地址输出,并且开始寻找该地址所在的内存单元,由此可以CS:IP两个寄存器相加所得到的地址才是实际的代码段的内存单元的地址。

三.指令的执行过程

       1)8086CPU当前状态

                         

      2)CS寄存器以及IP寄存器内的数据传输到地址加法器进行加法操作

                        

      3)获得地址13200传入控制电路中,控制电路将地址传入地址总线中

                           

    4)地址总线在内存单元中找到该地址中的数据并传入到数据总线中

                               

     5)控制电路接收数据总线中的数据,并将数据存放到数据缓冲区中

                            

         6)最后数据缓冲区中的数据送入执行器中,命令执行,IP寄存器中的数据加2

                               

 

  • 5
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

师兄师兄怎么办

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值