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

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

 1 assume cs:code
 2 stack segment
 3     db 16 dup(0)
 4 stack ends
 5 code segment
 6     mov ax,4c00h
 7     int 21h
 8 start:
 9     mov ax,stack
10     mov ss,ax
11     mov sp,16
12     mov ax,0
13     push ax
14     mov bx,0
15     ret
16 code ends
17 end start

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

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

 1 assume cs:code
 2 stack segment
 3     db 16 dup(0)
 4 stack ends
 5 code segment
 6     mov ax,4c00h
 7     int 21
 8 start:
 9     mov ax,stack
10     mov ss,ax
11     mov    sp,16
12     mov ax,0
13     push cs
14     push ax
15     retf
16 code ends
17 end start

reference:

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

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

 1 assume cs:code
 2 stack segment
 3     db 16 dup(0)
 4 stack ends
 5 code segment
 6     mov ax,4c00h
 7     int 21
 8 start:
 9     mov ax,stack
10     mov ss,ax
11     mov    sp,16
12     mov ax,1000H
13     push ax
14         mov ax,0
15     push ax
16     retf
17 code ends
18 end start

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

push Ip

jmp near ptr 标号

 1 assume cs:code
 2 code segment
 3 start:
 4     mov ax,0
 5     call s
 6     inc ax
 7 s:
 8     pop ax
 9 code ends
10 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

转载于:https://www.cnblogs.com/galoishelley/p/3788306.html

[汇编语言]-第十章 ret,retf,call指令相关推荐

  1. (十)汇编语言——CALL和RET指令

    (十)汇编语言--CALL和RET指令 文章目录 (十)汇编语言--CALL和RET指令 CALL指令 功能 寄存器 内存 段间转移 返回指令 ret retf 实例 MUL指令 模块化程序设计 寄存 ...

  2. RET RETF IRET IRETD 指令的不同

    文章目录 RET RETF (return far) IRET (interrupt return) IRETD 参考书籍 操作系统:32位,保护模式,非影子堆栈(Shadow-Stack) 填一下之 ...

  3. 汇编语言ret与call指令

    文章目录 CALL和RET指令 ret和retf call指令 根据位移进行转移 转移目的地址在指令中 转移地址在寄存器中 转移地址在内存中 使用call和ret来编写子程序 CALL和RET指令 r ...

  4. [汇编语言]CALL和RET指令

    目录 一.ret和retf 二.call指令 2.1 依据位移进行转移的call指令 2.2 转移的目的地址在指令中的call指令 2.3 转移地址在寄存器中的call指令 2.4 转移地址在内存中的 ...

  5. ret/retf/iret

    ret/retf/iret (2011-03-10 23:10:27) http://blog.sina.com.cn/s/blog_67146a750100ra3l.html 转载▼ 标签: ret ...

  6. 【微机原理与接口技术学习实践】汇编语言程序设计初步——debug编写调试指令序列

    halo~我是bay_Tong桐小白 本文内容是桐小白个人对所学知识进行的总结和分享,知识点会不定期进行编辑更新和完善,了解最近更新内容可参看更新日志,欢迎各位大神留言.指点 [微机原理与接口技术学习 ...

  7. Win-MASM64汇编语言-CALL/RET/RETF指令

    CALL和RET都是转移指令,它们都会修改IP,或者同时修改CS和IP,两个指令配合使用用来实现子程序 一:RET与RETF RET 将栈中的数据,放到IP中,从而实现修改IP,达到近转移 RETF ...

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

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

  9. 汇编语言 | CALL 和RET指令

    call和ret指令都是转移指令,它们都修改IP,但同时修改CS和IP. 1.ret和retf ret指令用栈中的数据,修改IP的内容,从而实现近转移. retf指令用栈中的数据,修改CS和IP的内容 ...

最新文章

  1. Java8新特性之stream的详细用法
  2. java atomicinteger_Java多线程进阶(十三)—— J.U.C之atomic框架:AtomicInteger
  3. 在Spring中使用DButils
  4. 拉屎能赚钱?在马桶上月入过万?原来卫生间里还有这么多隐藏福利,超模君都惊了……
  5. 华为Mate30和华为Mate30 Pro哪款实用?
  6. 特斯拉已在中国建立数据中心
  7. [渝粤教育] 广东-国家-开放大学 21秋期末考试土力学与地基基础10445k1
  8. 微信小程序 云函数 Date时间不对+8小时 设置北京时间
  9. cmd字体推荐-更纱黑体
  10. ASPICE总结2——软件详细设计与软件测试过程
  11. ubuntu apt-get安装或卸载软件时出现了python-minimal等错误问题的解决方法
  12. 30分钟简易复刻元气骑士地图生成系统
  13. linux xen 管理,ARM平台上运行Xen 可同时管理linux和VxWorks
  14. Acer S3 拆机换固态硬盘!【我的Acer S3小三,时尚时尚最时尚!】
  15. 【Unity开发小技巧】模型单指旋转双指缩放功能代码(多种情况)
  16. EC-PCA: 利润中心主数据维护流程
  17. 复爱合缘发布《白皮书》 传统恋爱仍是主流
  18. 【Chips】跨时钟域的亚稳态处理、为什么要打两拍不是打一拍、为什么打两拍能有效?
  19. 防水行业在vivo投放广告有效果吗?vivo广告开户全国代理商!
  20. 简化版的校园天翼使用路由

热门文章

  1. JZOJ 5701. 【gdoi2018 day2】第一题 谈笑风生(magic)
  2. oracle 数据库问题,ORACLE数据库常见问题汇总,oracle常见问题汇总
  3. 字符串拼接数字 java_使用JAVA代码实现字符串的简单拼接
  4. max复制关键帧到不同的文件_彭占元|如何排除PostgreSQL WAL 文件数量长期持续增加?...
  5. matlab优化应用
  6. 一篇演讲 By 浙江大学数学系主任刘克峰
  7. 破解xp(sp2)密码
  8. [CODEVS 3044] 矩形面积求并
  9. hdu5442(2015长春网络赛F题)
  10. hdu3697(贪心+暴力)