汇编-10.0-CALL和RET指令

call和ret指令都是转移指令,他们都是修改IP,或同时修改CS和IP。它们常被共同用来实现子程序设计。

1.ret和retf

ret指令用栈中的数据,修改IP的内容,从而实现近转移;

retf指令用栈中的数据,修改CS和IP的内容,从而实现远转移;

CPU执行ret指令时,进行下面两步操作:

(1).(IP)=((ss)*16+(sp))

(2).(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指令

CPU执行call指令时,进行两步操作:

(1).将当前的IP或CS和IP压入栈中;

(2).转移

call指令不能实现短转移,除此之外,call指令实现转移的方法和jmp指令的原理相同。

原文地址:https://www.cnblogs.com/xigongxiaosha/p/9457700.html

时间: 2024-10-31 22:24:11

汇编-10.0-CALL和RET指令的相关文章

第10章 CALL和RET指令

call 和 ret 指令都是转移指令,它们都修改IP ,或者同时修改CS 和IP .他们经常被共同用来修改实现子程序的设计. 10.1 ret 和 retf ret指令用栈中的数据,修改Ip的内容,从而实现近转移. retf 指令用栈中的数据,修改CS 和 IP 的内容,从而实现远转移. cpu执行 ret 指令时相当于  POP IP CPU 执行 retf指令时 相当于进行 POP IP pop CS cpu 执行call 指令时,实现俩步操作: 将当前的IP或者CS 和IP压入栈中 转移

自己总结:汇编CALL和RET指令

ret指令,相当于 pop IP:修改IP的内容,从而实现近转移 retf指令,相当于 pop IP pop CS:修改CS和IP的内容,从而实现远转移 -------------- CPU执行call指令时,进行两步操作: 1.将当前的IP或者CS和IP压入栈中: 2.转移 call指令不能实现短转移 "call  标号",这种用法是将该指令后的第一个字节的偏移地址入栈,再转到标号处执行指令

汇编语言---call和ret指令

汇编语言--call和ret指令 call和ret指令 call和ret指令都是转移指令,它们都修改IP,或同时修改CS和IP. 它们经常被共同用来实现子程序的设计. ret和retf ret指令用栈中的数据,修改IP的内容,从而实现近转移: retf指令用栈中的数据,修改CS和IP的内容,从而实现远转移. CPU执行ret指令时,进行下面的两步操作: (1)(IP) = ((ss)*16 +(sp)) (2)(sp) = (sp)+2 CPU执行retf指令时,进行下面四步操作: (1)(IP

汇编语言笔记 CALL和RET指令

转载地址:http://www.cnblogs.com/dennisOne ?模块化程序设计 模块化程序设计 汇编语言通过call和ret指令实现了模块化程序设计.可以实现多个相互联系.功能独立的子程序来解决一个复杂的问题. 子程序的框架 1 assume cs:code 2 code segment 3 main: : 4 : 5 call sub1 ; 调用子程序sub1 6 : 7 : 8 mov ax, 4c00h 9 int 21h 10 11 sub1: : ; 子程序sub1开始

汇编语言——call 和 ret 指令

一.ret 和 retf 我们用汇编语法来解释ret和retf指令,则: CPU执行ret指令时,相当于进行: pop IP CPU执行retf指令时,相当于进行: pop IP(一般IP都是在低位地址的) pop CS(CS在高位地址) 二.call指令 CPU执行call指令,进行两步操作: (1)将当前的 IP 或 CS和IP 压入栈中: (2)转移. call 指令不能实现段内短转移,除此之外,call指令实现转移的方法和 jmp 指令的原理相同,下面的几个小节中 ,我们以给出转移目的地

王爽汇编10.12

;10.12 assume cs:code,ds:data data segment db 'word',0 db 'unix',0 db 'wind',0 db 'good',0 data ends code segment start : mov ax,data mov ds,ax mov si,0 mov di,16 mov cx,4 s: call cap inc si loop s MOV AX,4C00H INT 21H cap: push cx tip: mov cl,[si] m

CALL和RET指令

1.call和ret指令都是转移指令,它们都修改IP的值,或同时修改CS和IP的值.它们经常共同用语实现子程序的设计. 2.ret指令用栈中的数据,修改IP的内容,从而实现近转移. 3.retf指令用栈中的数据,修改CS和IP的内容,从而实现远转移. 4.CPU执行ret指令时, (1)(IP)=((ss)*16+(sp)) (2)(sp)=(sp)+2 相当于进行:pop IP 执行retf指令时, (1)(IP)=((ss)*16+(sp)) (2)(sp)=(sp)+2 (3)(CS)=(

vue2.0学习(一)-内部指令

vue2.0学习(一)-内部指令 GitHub源码 https://github.com/sunnyguyan/VueDemo 1.v-if v-else v-show v-if:是vue的一个内部指令,指令用在我们的html中 v-if用来判断是否加载html的DOM,比如我们模拟一个用户登录状态,在用户登录后现实用户名称 <div v-if='isLogin'>你好,guyan</div> 完整的html代码 <!DOCTYPE html> <html lan

安装python 第三方库遇到的安装问题 microsoft visual studio c++ 10.0 is required,Could not find function xmlCheckVersion in library libxml2. Is libxml2 installed?

问题一: microsoft visual studio c++ 10.0 is required 安装scrapy时候出现需要vc c++ 10,有时安装其他也会有. 解决方法:安装vc 2010,安装过2017无效,安装过程也不一样. 问题二: 安装好,出现Could not find function xmlCheckVersion in library libxml2. Is libxml2 installed? 解决办法: 1.pip install wheel 2. 到http://