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

编程入门 行业动态 更新时间:2024-10-27 20:33:40

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

注意:以下寄存器命令执行环境为实模式,保护模式下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

                               

 

更多推荐

寄存器,汇编语言,CS,IP

本文发布于:2023-05-26 18:25:34,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/275502.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:寄存器   汇编语言   CS   IP

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!