zoukankan      html  css  js  c++  java
  • 修改CS,IP寄存器的指令

    汇编指令  jmp——》jump

    jmp是转移指令,可以修改CS,IP这两个寄存器  决定CPU从哪里读取指令

    jmp 2000:0

    jmp 寄存器

    若想同时修改CS、IP的值可以用形如“jmp 段地址:偏移地址”的指令完成,功能:用指令中给出的段地址修改CS,偏移地址修改IP如:

    jmp 2AE3:3,执行后:CS=2AE3H,  IP=0003H, CPU将从2AE33H处读取指令。

    只想修改IP   “jmp 某一合法寄存器” 的指令完成,功能为:用寄存器的值修改IP,如:

    jmp ax,执行指令前:ax=1000H   CS=2000H   IP=0003H

                  执行指令后:ax=1000H    CS=2000H    IP=1000H    jmp ax含义上好似:  mov IP, ax

    指令的执行过程:

    1、CPU从CS:IP所指向的内存单元读取指令,将读取的指令存放到指令缓存器中

    2、IP=IP+所读指令长度,从而指向下一条指令

    3、执行指令缓冲器中的内容,回到步骤1

    题目:

    假设CS=2000H, IP=0000H  写出下列指令的执行过程

    -a 2000:0                                            CS=2000H   IP=0

    mov ax,6622H                                    CS=2000H   IP=0+3=3

    jmp 1000:3                                          CS=2000H   IP=3+5=8

    mov cx,ax

    a 1000:0                                            CS=1000H      IP=3

    mov ax,0123H                                  

    mov ax,0                                           CS=1000H      IP=3+3=6

    mov bx,ax                                         CS=1000H      IP=6+2=8

    jmp bx                                               CS=1000H      IP=8+2=10

    mov cx,0

    检测点  2.3

    下面三条指令执行后,CPU修改几次IP?4     都是在什么时候?最后IP中的值是多少? 

    mov  ax,bx         ----》存放到指令缓冲器中---》1 ——》执行          ax=bx

    sub   ax,ax        ----》存放到指令缓冲器中——》1 ——》执行        ax=0                               sub=subtract减去

    jmp   ax                ----》存放到指令缓冲器中——》1——》执行         1     IP=0

    指令的执行过程:

    1、CPU从CS:IP所指向的内存单元读取指令,将读取的指令存放到指令缓存器中

    2、IP=IP+所读指令长度,从而指向下一条指令

    3、执行指令缓冲器中的内容,回到步骤1

  • 相关阅读:
    Java的快速失败和安全失败
    Java RMI与RPC的区别
    Java动态代理之JDK实现和CGlib实现(简单易懂)
    JVM——字节码增强技术简介
    Linux内存分配机制之伙伴系统和SLAB
    操作系统动态内存管理——malloc和free的工作机制
    Java中的Map
    Java的PriorityQueue
    Java中的List
    Java中的Set
  • 原文地址:https://www.cnblogs.com/hsp1269/p/13751481.html
Copyright © 2011-2022 走看看