首页 > 编程语言 >汇编语言-CALL和RET指令

汇编语言-CALL和RET指令

时间:2024-11-13 15:33:36浏览次数:1  
标签:标号 16 汇编语言 IP SP RET 指令 CALL call

call和ret都是转移指令,修改Ip或同时修改cs ip。
1.ret和retf
ret指令用栈中的数据,修改ip的内容。从而实现近转移
retf指令用栈中的数据,修改cs和ip的内容,从而实现远转移。

CPU执行ret指令时,进行下面两步操作
(IP)=((SS)*16+(SP))
(SP)=(SP)+2
相当于POP IP

CPU执行retf指令时进行下面4步操作
(1) (IP)=((SS)16+(SP))
(2) (SP)=(sp)+2
(3) (CS)=((SS)
16+(SP))
(4) (sp)=(SP)+2
相当于 POP IP
POP CS

2.CALL指令
(1)将当前的ip或cs和IP压入栈中
(2)转移
call指令不能实现短转移
3.依据位移进行转移的call指令
call 标号(将当前的IP压栈后,转到标号处执行指令)

进行的操作是:
(1)(SP)=(SP)-2
((SS)*16+(SP))=(IP)
(IP)=(IP)+16位位移

16位位移=标号处地址-call指令后的第一个字节的地址
16位位移的表示范围-32768-32767,用补码表示
16位位移由编译程序在编译时算出。

相当于:
push IP
jmp near ptr 标号

4.转移的目的地址在指令中的call指令
(1)(SP)=(SP)-2
((SS16)+(SP))=(CS)
(SP)=(SP)-2
((SS)
16+(SP))=(IP)
(2)(CS)=标号所在段的段地址
(IP)=标号在段中的偏移地址
相当于
push cs
push ip
jmp far ptr 标号

标签:标号,16,汇编语言,IP,SP,RET,指令,CALL,call
From: https://www.cnblogs.com/zhongta/p/18544053

相关文章

  • syscall
    syscall分析_syscall_的相关参数:intptr_t_syscall_(intptr_ttype,intptr_ta0,intptr_ta1,intptr_ta2){registerintptr_t_gpr1asm(GPR1)=type;registerintptr_t_gpr2asm(GPR2)=a0;registerintptr_t_gpr3asm(GPR3)=a1;registerintptr_t_......
  • ECE 498/598 Associative Recall Problem
    ECE498/598Fall2024,Homeworks3and4Remarks:HW3&4:Youcanreducethecontextlengthto32ifyouarehavingtroublewiththetrainingtime.HW3&4:Duringtestevaluation,notethatpositionalencodingsforunseen/longcontextarenottrai......
  • [题解]CF1407D Discrete Centrifugal Jumps
    思路注意到第二个条件和第三个条件本质相似,可以用相同的维护方式处理,因此这个只讨论第二个条件的维护方式。定义\(dp_i\)表示走到\(i\)的最少步数。第一个条件的转移显然为\(dp_i\leftarrowdp_{i-1}\)。对于第二个条件,\(i\)能向\(j\)转移,当且仅当\(h_{i+1\sim......
  • 基于RetinaFace+Jetson Nano的智能门锁系统——第四篇(完整项目)
    文章目录1.项目背景2.研究目的3.项目架构3.1NvidiaJetsonNano3.2工作逻辑4.主要算法4.1Retinaface算法4.2FaceNet算法4.3PyQt界面4.4MG996R舵机5.项目核心文件与代码5.1项目文件目录5.2项目部分代码5.2.1Main.py5.2.2Esp8266.c6.参考文献1.项目背景......
  • lec 02 arm汇编语言基础
    Lecture02:ARM汇编基础Contents为什么学习ARM/ISA汇编从C到汇编理解arm汇编理解机器执行1为什么学习汇编和指令集架构?1.令人困惑的应用表现2.指令集架构ISA(InstructionSetArchitecture)CPU向软件(应用程序和操作系统)提供的接口。理解软件在CPU上的运行(OS设......
  • 函数(概念、使用、参数、return、argument、函数方法、嵌套函数、立即执行函数)
    一、函数的概念函数:就是封装一段可被重复调用执行的代码块。通过代码块可以实现在需要的的重复使用,使用typeof检查一个函数对象时,会返回function函数的封装是把一个或者多个功能通过函数的方式封装起来,对外只提供一个简单的函数接口,简单理解:将很多衣服打包到一个行李箱,jQuer......
  • [极客大挑战 2019]Secret
    首页什么都没有,查看网页源码,发现有一个链接,提示found除去view-source访问,得到以下页面,点击secret直接查阅结束,没回显flag,依旧在卖关子。使用burpsuite抓包获取返回的源码,找到注释中有个文件secr3t.php访问secr3t.php得到代码里说flag在flag.php里,直接访问flag.php,发现......
  • antD——Warning: `callback` is deprecated. Please return a promise instead.
    参考:1.https://blog.csdn.net/huochai770880/article/details/125925665 我的情况antD表单校验,代码未报错,但提交时控制台报错:Warning:`callback`isdeprecated.Pleasereturnapromiseinstead. 原报错代码:constvalidateParams=useCallback((_:RuleObjec......
  • 【源码分析】FutureTask超详细的源码分析
    介绍:FutureTask是一个可取消的异步计算。    1.通过get方法异步的获取任务执行结果    2.通过cancel方法来尝试取消正在执行的任务    3.通过get方法来捕获线程内部执行任务时抛出的异常    那么,大家是否知道上述这些方法的底层呢,为什么get方法能获取......
  • call(),bind(),apply(),的区别和手写
    1.call(),bind(),apply()的区别call(),bind(),和apply()是JavaScript中用于改变函数执行上下文(即this的指向)的方法,它们之间有一些区别:call():call()方法允许你调用一个具有指定this值的函数,并且允许你传递一个参数列表。它的语法是function.call(thisArg,ar......