1- ret 相当于 pop IP;用栈中数据,修改IP内容.从而实现近转移.

执行后(IP)=0, CS:IP指向代码段的第一条指令.

 assume cs:code
stack segment
db dup()
stack ends
code segment
mov ax,4c00h
int 21h
start:
mov ax,stack
mov ss,ax
mov sp,
mov ax,
push ax
mov bx,
ret
code ends
end start

2- retf 相当于 pop IP; pop CS;用栈中数据修改CS,IP内容.从而实现远转移.

执行后 CS:IP指向代码段的第一条指令.

 assume cs:code
stack segment
db dup()
stack ends
code segment
mov ax,4c00h
int
start:
mov ax,stack
mov ss,ax
mov sp,
mov ax,
push cs
push ax
retf
code ends
end start

reference:

http://bbs.csdn.net/topics/340237304

3- 实现从内存1000:0000处开始执行指令

 assume cs:code
stack segment
db dup()
stack ends
code segment
mov ax,4c00h
int
start:
mov ax,stack
mov ss,ax
mov sp,
mov ax,1000H
push ax
mov ax,
push ax
retf
code ends
end start

4- call 标号 (将当前的IP压栈后,转到标号处执行指令)

push Ip

jmp near ptr 标号

 assume cs:code
code segment
start:
mov ax,
call s
inc ax
s:
pop ax
code ends
end start

ax=6

CPU指令执行的过程:

1- 从CS:IP指向的内存单元读取指令,读取的指令,进入指令缓冲器.

2- (IP) = (IP) + 所读取的指令长度, 从而指向下一条指令

3- 执行指令, 转到1, 重复这个过程

5- call far ptr 标号

push cs

push ip

jmp far ptr 标号

执行步骤分析:

CS:1000 IP:3 时 读取call far ptr s放入缓存, ip = IP + 5 = 8

push cs  //1000

push ip  //8

跳转到s执行

pop ax  //ax = 8

add ax,ax // ax = 8 + 8 = 10 寄存器中存放的数为16进制

pop bx  //bx = 1000

add ax,bx  //ax = 1000 + 10 = 1010

最终结果 ax = 1010

6- call 16位寄存器

push IP

jmp 16位寄存器  // mov IP,16位寄存器; jmp IP

ax=000B

sp是栈顶地址,[bp]栈顶值为5

ax = 6 + 5 = B

reference:

http://bbs.csdn.net/topics/100016651

[汇编语言]-第十章 ret,retf,call指令的更多相关文章

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

    汇编语言--call和ret指令 call和ret指令 call和ret指令都是转移指令,它们都修改IP,或同时修改CS和IP. 它们经常被共同用来实现子程序的设计. ret和retf ret指令用栈 ...

  2. 高特权级代码段转向低特权级代码段(利用 ret(retf) 指令实现 jmp from ring0 to ring3)

    [0]写在前面 0.1)本代码旨在演示 从 ring0 转移到 ring3(即,从高特权级 转移到 低特权级) 0.2)本文 只对 与 门相关的 代码进行简要注释,言简意赅: 0.3)文末的个人总结是 ...

  3. 【转】ret,retf,iret的区别

    ret RET, and its exact synonym RETN, pop IP or EIP from the stack and transfer control to the new ad ...

  4. Linux 之 AT&T汇编语言 mov、add、sub指令、数据段

    mov指令的几种形式: mov 寄存器. 数据 mov ax,8888 mov 寄存器. 寄存器 mov bx,ax mov 寄存器. 内存单元 mov ax,[0] mov 内存单元.寄存器 mov ...

  5. 汇编语言学习笔记(十二)-浮点指令----ACM

    http://blog.csdn.net/q_l_s/article/details/54909328

  6. [汇编学习笔记][第十章 CALL和RET指令]

    第十章 CALL和RET指令 call和ret指令都是转移指令,它们都修改CS和IP.经常被共同用于实现子程序的设计.这一章,我们讲解call和ret指令的原理 10.1 ret和retf ret指令 ...

  7. 汇编-10.0-CALL和RET指令

    call和ret指令都是转移指令,他们都是修改IP,或同时修改CS和IP.它们常被共同用来实现子程序设计. 1.ret和retf ret指令用栈中的数据,修改IP的内容,从而实现近转移: retf指令 ...

  8. 汇编指令之JMP,CALL,RET(修改EIP的值!!!)

    简单介绍了,JMP指令按市面上的意思来说是跳转到指定地址,但我这里不这么说,JMP, CALL, RET三个指令均为修改EIP值的指令,EAX, ECX, EBX, EDX, ESP, EBP, ES ...

  9. ASM:《X86汇编语言-从实模式到保护模式》第8章:实模式下硬盘的访问,程序重定位和加载

        第八章是一个非常重要的章节,讲述的是实模式下对硬件的访问(这一节主要讲的是硬盘),还有用户程序重定位的问题.现在整理出来刚好能和保护模式下的用户程序定位作一个对比. ★PART1:用户程序的重 ...

随机推荐

  1. 网页中flash背景透明

    <embed src="文件路径" width="长度" height="宽度" quality="high" t ...

  2. django删除migrations

    先把migrations文件夹里面的数据删除. 删除数据库中关联的表 删除django_migrations里面关联的数据(因为在migrate的时候发现django_migrations表有相关数据 ...

  3. 使用POI插件,提取导出excel的工具类

    在网站的不同的模块都需要使用到导入导出excel的功能,我们就需要写一个通用的工具类ExcelUtil. 我的思路:首先,导入和导出的Excel的文件格式固定:主标题,二级标题,数据行(姑且就这么叫) ...

  4. Tempter of the Bone--hdu1010--zoj2110

    Tempter of the Bone Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Othe ...

  5. HDU 5492(DP) Find a path

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5492 题目大意是有一个矩阵,从左上角走到右下角,每次能向右或者向下,把经过的数字记下来,找出一条路径是 ...

  6. 关于svcutil.exe

    添加环境变量 name NETFX4 value C:\Program Files\Microsoft SDKs\Windows\v7.0A\bin\NETFX 4.0 Tools Server.Pr ...

  7. Google Chrome源码剖析【序】

    [序(本人什么都没做,完全转载)] 开源是口好东西,它让这个充斥着大量工业垃圾代码和教材玩具代码的行业,多了一些艺术气息和美的潜质.它使得每个人,无论你来自米国纽约还是中国铁岭,都有机会站在巨人的肩膀 ...

  8. TinyURL缩短网址服务 - Blog透视镜

    TinyURL是个缩短网址服务的网站,提供1个短网址转向指定到长网址,像是杂志书籍中若有网址太长,也都会用TinyURL来缩短网址,例如本篇文章:http://blog.openyu.org/2014 ...

  9. USB 各型插座插头引脚分布

    最近画USB的电路,老是忘记它的引脚排列,每次都要去翻手册,很麻烦,索性整理了一下,以后用着也方便,这些图都来自USB标准上. 注:以下均为插座或插头的前视图,即将插座或插头面向自己. USB A型插 ...

  10. android批量文件上传(android批量图片上传)

    项目中多处用到文件批量上传功能,今天正好解决了此问题,在此写出来,以便日后借鉴. 首先,以下架构下的批量文件上传可能会失败或者不会成功:   1.android客户端+springMVC服务端:服务端 ...