zoukankan      html  css  js  c++  java
  • ret ,retf ,iret ,int 指令

    ret指令,

    执行过程

    ret指令用栈中的数据,修改IP的值,从而实现近转移。
    CPU执行ret指令时,进行下面两步操作:
    (IP)=((SS)*16+(SP))
    (SP)=(SP)+2;
    另一种用法 ret n (n为整数)
    等效于
    (IP)=((SS)*16+(SP))
    (SP)=(SP)+2;
    (SP)=(SP)+n;
    例如ret 4
    pop ip
    add sp,4
     
    retf指令,
     
    retf用栈中数据同时改CS,IP,远转移

    远返回指令。当它执行时,处理器先从栈中弹出一个字到IP,再弹出一个字到CS。

    最后,callretretf 这三条指令执行后不会对标志位产生影响。

     retf  ->  pop ip
                 pop cs
     
    iret  (interrupt return )  中断返回指令 
     
    1.恢复IP(instruction pointer):(IP)←((SP)+1:(SP)),(SP)←(SP)+2
    2.恢复CS(code segment):(CS)←((SP)+1:(SP)),(SP)←(SP)+2
    3.恢复中断前的PSW(program status word),即恢复中断前的标志寄存器的状态。
    (FR)←((SP)+1:(SP)),(SP)←(SP)+2
    4.恢复ESP(返回权限发生变化)
    5.恢复SS(返回权限发生变化)
     IRET指令影响所有标志位。
     
     
    int 指令
    1) 中断类型号 
    2) 标志寄存器入栈,IF=0.TF=1 
    3) Cs ,ip入栈 
    4) IP=(n*4),CS=(n*4+2)






  • 相关阅读:
    centos 查看硬盘使用情况
    查看centos内存命令
    VS2008编译运行时出现“外部组件发生异常”错误的解决方法
    20170307-1
    20170307
    centos7安装配置git
    Git理解笔记3
    Git理解笔记2
    Git理解笔记1
    php-设计模式
  • 原文地址:https://www.cnblogs.com/Crisczy/p/7801140.html
Copyright © 2011-2022 走看看