精华内容
下载资源
问答
  • 2.9 cs、ip寄存器及其修改
    2021-09-25 10:57:23

    CPU从何处执行指令是有CS、IP寄存器中的内容决定的。

    寄存器AX、BX等可以通过mov指令修改,但CS、IP不行。

    可通过jmp指令修改如jmp 2AE3:3 执行后:CS=2AE3H IP=0003H CPU从2AE33H处读取指令

    读取一条指令后,IP中的值自动增加。

     

     

     

     

    更多相关内容
  • CS和IP寄存器的作用及执行分析

    千次阅读 2021-04-21 21:23:13
    我们在刚开始学习汇编或者操作系统时,会被一些寄存器搞得晕头转向,可能是我比较笨吧,抽象能力比较差,对于CS和IP寄存器的概念是知道,但是不知道他们的作用。 CS和IP寄存器概念 书本上的解释如下: CS是代码段...

    前言

    我们在刚开始学习汇编或者操作系统时,会被一些寄存器搞得晕头转向,可能是我比较笨吧,抽象能力比较差,对于CS和IP寄存器的概念是知道,但是不知道他们的作用。

    CS和IP寄存器概念

    书本上的解释如下:

    • CS是代码段寄存器,IP为指令指针寄存器,他们一起合作指向了CPU当前要读取的指令地址,可以理解为CS和IP结合,组成了PC寄存器。
    • 任何时刻,8086CPU都会将CS:IP指向的指令作为下一条需要取出的执行指令。
    • 8086CPU中的计算公式为 (CS << 4)|IP, 即CS左移4位,然后再加上IP

    为什么要设计CS和IP寄存器

    上面提到了CS和IP寄存器概念,初学者可能会有疑问,为什么要这么折腾?为什么不直接设计一个寄存器取代CS和IP寄存器?这就涉及到CPU的发展历史了,这里我们先说一句特别的感悟:CPU的发展是连续迭代的过程,新的设计要兼容旧的设计。之前一直不明白这句话的含义,或者是忽略了这句话,我们知道CPU是一种神奇的发明,可以说,CPU是现代所有科技的大脑和帮手,每一代的CPU都会有数以千万级的硬件产品使用,除非是上帝,任何人也不能说一下子就能设计永远不过时的架构,所以CPU是一个逐步迭代的产品,迭代的原因就是旧的架构或资源过时了,需要新的架构或者优化,但是我们在设计新的CPU架构时,必须也不得不考虑兼容性,兼容上一代的产品,这虽然给设计人员增加了设计难度,但是也是不得已为之,好了,上面说了很多正确的废话,接下来简单的说下为什么需要CS和IP寄存器,我们先说一下历史,不严谨的说:

    • 在上古CPU中,类似于现在的小型单片机,是没有CS和IP寄存器的,因为内存少的可怜,比如16位的CPU,最大就能访问2^16 byte,即64Kb的内存,也就是地址线、数据线、寄存器都是16位,访问内容完全都是统一的,一点都不会乱,而且那会儿64Kb的内存空间已经足够用了。
    • 随着应用程序的发展,对内存的需求也更多了(2021年,4G内存都沦落到乞丐配置了),所以相比上一代的64Kb,8086处理器的设计目标是1M的大内存空间,相当于提升到上一代的16倍,1M的空间对应的地址总线就是20位。

    如上所属,愿望是很好的,一个很现实的问题就摆在Intel设计人员面前,地址线宽度是20位,但是CPU中的算数逻辑运算单元(ALU) 仍然是16位,而且很尴尬的是,当时的制造技术很难把ALU加工到20位,即便是有能力加工到20位,也无法兼容上一代的CPU了,当然也有其他的方案,比如增设一些20位的指令和寄存器,专门用于地址的运算和操作,但是那样又造成CPU内存结构的不均匀,基于上面的原因,Intel的工程师设计了一种在当时看来很巧妙的方法,即分段方法。也就是前面提到的CS:IP结合的算法,CS和IP都是16位,CS左移4位,然后与IP相加,得到20位的地址。这样就实现了从16位内存地址到20位实际地址的转换,段式内存管理带来了显而易见的优势,程序地址不再需要编码了,调试错误也更容易定位了,也能支持更大的内存了。

    CPU通过CS和IP进行指令执行过程

    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

    展开全文
  • 【汇编语言】CS:IP寄存器

    千次阅读 2020-04-10 09:56:27
    CS和IP为两个寄存器,分别是代码段寄存器和指令指针寄存器,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

                                   

     

    展开全文
  • 2.改变IP寄存器的内容。IP = IP +所读指令的字节数(长度),从而指向下一条指令。 3.执行指令缓冲器中的内容,回到第一步。 打开DOSBOX,输入三条指令如下: 第一条指令为 MOV AX,1000,占3个字节(B80010),当前IP...

    在这里插入图片描述

    一条指令可以由多个字节构成。

    指令的执行过程:
    1.CPU从当前的CS和IP指向的内存单元读取指令,然后将读取的指令进入到指令缓冲器(CPU中保存指令的地方)中。
    2.改变IP寄存器的内容。IP = IP +所读指令的字节数(长度),从而指向下一条指令。
    3.执行指令缓冲器中的内容,回到第一步。

    打开DOSBOX,输入三条指令如下:
    在这里插入图片描述
    第一条指令为 MOV AX,1000,占3个字节(B80010),当前IP=0100,则执行完为IP=0103H
    在这里插入图片描述
    下一条执行后应该是IP=0106H
    在这里插入图片描述
    下一条指令占两个字节(B310),执行完IP=0108H
    在这里插入图片描述

    展开全文
  • CS、IP寄存器

    千次阅读 2021-01-17 10:00:35
    1、CS和IP是8086CPU中两个最关键的寄存器,它们指示了 CUP当前药品读取指令的地址 2、CS为代码段寄存器IP为指令指针寄存器 3、8086CPU的工作原理 ①从 CS:IP指向的内存的单元读取指令,读取的指令进门如指令缓存器...
  • X86 CS IP 寄存器

    2019-12-15 20:44:51
    CS寄存器和IP寄存器:  首先强调一下,这两个寄存器非常非常重要,CS的全拼为“Code segment”,即代码段寄存器,对应于内存中的存放代码的内存区域,用来存放内存代码段区域的入口地址(段基址)。  CPU在执行...
  • CS 寄存器IP 寄存器

    千次阅读 2018-03-23 18:06:00
    下面将要介绍的是一组非常非常重要的寄存器,即 CS:IP 。 CS:IP 两个寄存器指示了 CPU 当前将要读取的指令的地址,其中 CS 为代码段寄存器,而 IP 为指令指针寄存器 。 什么叫做指示了 CPU 当前将要读取的指令呢?...
  • 可以通过转移指令来修改CS和IP寄存器的汇编指令 jmp 转移指令,是jump的缩写,也可以叫作跳转指令,使用方法如下: jmp 段地址:偏移地址 jmp 2AE3:0003 CS = 2AE3H IP = 0003H 2AE3H * 10H + 0003H = 2AE33H–cpu从...
  • 1,进入debug 2, 输入 “r + CS”, 按回车,即可修改CS寄存器的值,同理可修改IP寄存器的值,如下图所示
  • IP5108_IP5209_IP5109_IP5207_寄存器手册
  • 汇编语言学习笔记一:CS和IP寄存器

    万次阅读 多人点赞 2017-11-27 14:28:22
    1、CS是代码段寄存器IP是指令指针寄存器(相当于偏移地址)。修改CS、IP的指令不同于修改通用的寄存器值的指令,修改通用寄存器的值可以用mov 指令(mav ax,123),mov指令被称为传送指令。修改CS、IP的指令是jmp...
  • IP5209 IP5109 IP5207 IP5108寄存器手册,看到没有就上传了
  • 8086 CS和IP寄存器

    万次阅读 多人点赞 2016-10-07 23:32:22
    CS 寄存器IP 寄存器: 经过前面对段的介绍,相信各位朋友对段寄存器应该也有一定的了解了, 下面将要介绍的是一组非常非常重要的寄存器,即 CS:IP 。 CS:IP 两个寄存器指示了 CPU 当前将要读取的指令的...
  • arm IP寄存器

    千次阅读 2014-08-05 22:45:48
    arm中ip只是个通用寄存器,用来 在函数间分析和调用时暂存数据,例如arm和thumb互调 在8088中 PC是指向下一条将要执行的指令,而IP是指向下一次要取出的指令 mov ip, sp stmfd sp!, {fp, ip, lr, pc} 以上代码是 ARM...
  • 汇编(8086cpu): ip寄存器与指令的关系

    千次阅读 2018-11-19 22:09:20
    指令的执行过程:  1. cpu从cs:ip所指向的内存单元读取指令,存放到指令缓存器中...8086cpu不支持 mov cs, ax 或 mov cs, 5等修改cs,ip寄存器的内容. 要想修改,就必须通过jmp指令修改cs,ip寄存器的内容.  ...
  • 而图中的073F:0100两部分分别存放在CS寄存器和IP寄存器中。CS和IP是专门存放指令的寄存器,CPU也是据此来区分数据与指令的(也就是说在8086机中,任意时刻CPU将CS:IP指向的内容当做指令执行)。我们可以查看CS与IP...
  • 英集芯移动电源芯片的IIC寄存器手册,不是数据手册。支持IP5209/IP5109/IP5207/IP5108等芯片,有详细的寄存器地址说明。
  • 单片机中断的IE和IP寄存器(摘抄)

    千次阅读 2016-11-12 02:23:00
    一、中断允许寄存器IE CPU对中断源的开放或中断屏蔽的控制是通过中断允许寄存器IE设置的,IE既可按字节地址寻址(其字节地址为A8H),又可按位寻址。AT89S52单片机中的6个中断矢量都是可屏蔽中断,通过对IE的某些...
  • 寄存器CS和IP

    2021-07-01 17:46:17
    讲述这两个寄存器前我们先来引入8086CPU是如何给出物理地址来访问内存的。 一、物理地址的形成        8086CPU有20位地址总线,可以传送20位地址,寻址能力为1MB,但是它是16位...
  • CS、IP和PC寄存器

    千次阅读 2020-11-25 19:47:26
     CS寄存器和IP寄存器:  首先强调一下,这两个寄存器非常非常重要,CS的全拼为“Code segment”,即代码段寄存器,对应于内存中的存放代码的内存区域,用来存放内存代码段区域的入口地址(段基址)。  CPU在...
  • 文章目录前言一、IP寄存器运作过程二、为什么那样设计jmp指令call指令三、例题 前言 一、IP寄存器运作过程 汇编语言的指令执行过程如下: CPU从CS:IP寄存器所指向的内存单元读取指令,存放到指令缓存器中 IP=IP+所...
  • TLB、程序计数器PC和指令指针寄存器IP TLB TLB( Translation Look- aside buffer)专门用于缓存内存中的页表项,一般在MMU单元内部,页表一般存储在屋里内存中。当处理器要访问一个虚拟地址时,首先会在TLB中查询。...
  • IP寄存器的当前值

    2010-02-08 17:27:41
    call $+3 POP CX 把IP寄存器的当前值放入cx
  • CS,IP和PC寄存器

    2020-03-11 13:08:08
    CS寄存器和IP寄存器: 首先强调一下,这两个寄存器非常非常重要,CS的全拼为“Code segment”,即代码段寄存器,对应于内存中的存放代码的内存区域,用来存放内存代码段区域的入口地址(段基址)。 CPU在执行指令时...
  • 2.9-2.12段寄存器和cs:ip

    2022-03-25 21:14:42
    而与之相关联的是IP(指令指针寄存器), 步骤如下: (1)cs:ip在地址加法中获得内存地址(csX16+ip),然后将通过输入输出控制电路和20位地址总线获得内存地址,将指令通过数据总线和输入输出控制电路放到指令缓冲区,...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 64,741
精华内容 25,896
关键字:

ip寄存器

友情链接: Screenshot.zip