《汇编语言程序设计教程》 第六章 子程序设计

第6章子程序设计 6.1堆栈 6.2子程序 6.3 WindOws api
第6章 子程序设计 6.1 堆栈 6.2 子程序 6.3 Windows API

6.1堆栈 ■供程序使用的一块连续的内存空间; 用于保存和读取一些临时的数据 ■堆栈中的数据有以下几个特点: 临时性 ■快速性 动态扩展性
6.1 堆栈 ◼ 供程序使用的一块连续的内存空间; ◼ 用于保存和读取一些临时的数据 ◼ 堆栈中的数据有以下几个特点: ◼ 临时性 ◼ 快速性 ◼ 动态扩展性

6.1.1堆栈空间 相关的3个寄存器:SS,ESP和EBP 在 Windows用户模式下 SS段寄存器通常和DS,ES段寄存器相等 ESP寄存器中的内容作为堆栈的当前指针 EBP寄存器中的内容作为堆栈的“基准”指 针
6.1.1 堆栈空间 ◼ 相关的3个寄存器:SS,ESP和EBP ◼ 在Windows用户模式下 ◼ SS段寄存器通常和DS,ES段寄存器相等 ◼ ESP寄存器中的内容作为堆栈的当前指针。 ◼ EBP寄存器中的内容作为堆栈的“基准”指 针

6.1.2进栈和出栈指令 1.进栈指令PUSH 格式: PUSH SRC 功能:堆栈指针ESP减4,SRC保存在ESP指 向的堆栈单元中。 SRC可以是32位寄存器、内存操作数、立即 数或16位段寄存器
6.1.2 进栈和出栈指令 1.进栈指令PUSH 格式:PUSH SRC 功能:堆栈指针ESP减4,SRC保存在ESP指 向的堆栈单元中。 ◼ SRC可以是32位寄存器、内存操作数、立即 数或16位段寄存器

2.出栈指令POP 格式: POP DST 功能:从ESP指向的堆栈单元中取出数据送 到DST中,堆栈指针ESP加4。 ■DST是32位寄存器、内存操作数或16位段寄 存器 立即数不能作为DST
2.出栈指令POP 格式:POP DST 功能:从ESP指向的堆栈单元中取出数据送 到DST中,堆栈指针ESP加4。 ◼ DST是32位寄存器、内存操作数或16位段寄 存器。 ◼ 立即数不能作为DST

PUSH、POP指令要点 注意进栈和出栈的顺序 入栈: 出栈(与入栈相反) PUSH EAⅩ POP EDX PUSH EBX POP ECX PUSH ECX POP EBX PUSH EDX POP EAX
3.PUSH、POP指令要点 注意进栈和出栈的顺序 入栈: PUSH EAX PUSH EBX PUSH ECX PUSH EDX 出栈 (与入栈相反) POP EDX POP ECX POP EBX POP EAX

4. PUSHFD指令 格式: PUSHFD 功能:堆栈指针ESP减4, EFLAGS标志寄存 器保存在ESP指向的堆栈单元中。 举例:将 EFLAGS标志寄存器复制到EAX中 PUSHFD POP EAX
4.PUSHFD指令 格式:PUSHFD 功能:堆栈指针ESP减4,EFLAGS标志寄存 器保存在ESP指向的堆栈单元中。 举例:将EFLAGS标志寄存器复制到EAX中 PUSHFD POP EAX

5. POPFD指令 格式: POPFD 功能:从ESP指向的堆栈单元中取出数据送 到 EFLAGS中,堆栈指针ESP加4。 举例: PUSHFD和 POPFD可以配对使用,用来保存 和恢复程序某一时刻的标志。 PUSHFD ;保存状态寄存器 ;执行其他的指令 POPFD ;恢复状态寄存器
5.POPFD指令 格式:POPFD 功能:从ESP指向的堆栈单元中取出数据送 到EFLAGS中,堆栈指针ESP加4。 举例:PUSHFD和POPFD可以配对使用,用来保存 和恢复程序某一时刻的标志。 PUSHFD ; 保存状态寄存器 … ; 执行其他的指令 POPFD ; 恢复状态寄存器

6. ENTER指令 格式: ENTER SRC1,SRC2 功能:SRC1和SRC2是两个立即数。 SRC2=0时,该指令相当于下面的3条指令 PUSH EBP Mov EBP ESP SUB ESP SRC1
6.ENTER指令 格式:ENTER SRC1, SRC2 功能:SRC1和SRC2是两个立即数。 SRC2=0时,该指令相当于下面的3条指令 PUSH EBP MOV EBP, ESP SUB ESP, SRC1

7.LEAV指令 格式: LEAVE 功能:令ESP等于EB,再从堆栈弹出EBP 相当于: MOV ESP. EBP POP EBP 常用于子程序返回之前
7.LEAVE指令 格式:LEAVE 功能:令ESP等于EBP,再从堆栈弹出EBP。 相当于: MOV ESP, EBP POP EBP 常用于子程序返回之前
按次数下载不扣除下载券;
注册用户24小时内重复下载只扣除一次;
顺序:VIP每日次数-->可用次数-->下载券;
- 《汇编语言程序设计教程》 第五章 分支与循环程序设计.ppt
- 《汇编语言程序设计教程》 第四章 数据操作.ppt
- 《汇编语言程序设计教程》 第三章 Windows汇编程序基础.ppt
- 《汇编语言程序设计教程》 第二章 Intel80x86系列微处理器.ppt
- 《汇编语言程序设计教程》 第一章 基础知识.ppt
- 《C语言》课程教学资源(作业习题)实例试题100题.doc
- 《网络程序设计》PPT电子课件(共三章).ppt
- 西安交通大学软件学院:《面向对象的软件工程》 第九章(9-2) 面向对象设计.ppt
- 西安交通大学软件学院:《面向对象的软件工程》 第九章 远程软工.ppt
- 西安交通大学软件学院:《面向对象的软件工程》 第八章 面向对象分析.ppt
- 西安交通大学软件学院:《面向对象的软件工程》 第八章 远程软工.ppt
- 西安交通大学软件学院:《面向对象的软件工程》 第七章(7-2) 面向对象软件工程的概念.ppt
- 西安交通大学软件学院:《面向对象的软件工程》 第七章 远程软工.ppt
- 西安交通大学软件学院:《面向对象的软件工程》 第六章(6-2) 远程软工.ppt
- 西安交通大学软件学院:《面向对象的软件工程》 第六章 软件维护.ppt
- 西安交通大学软件学院:《面向对象的软件工程》 第五章 软件测试续.ppt
- 西安交通大学软件学院:《面向对象的软件工程》 第五章 软件测试.ppt
- 西安交通大学软件学院:《面向对象的软件工程》 第四章 软件设计.ppt
- 西安交通大学软件学院:《面向对象的软件工程》 第三章 软件需求分析.ppt
- 西安交通大学软件学院:《面向对象的软件工程》 第二章 软件项目管理.ppt
- 《汇编语言程序设计教程》 第七章 常用数据结构.ppt
- 《汇编语言程序设计教程》 第八章 汇编语言高级编程技术.ppt
- 《汇编语言程序设计教程》 第九章 I/0程序设计.ppt
- 《汇编语言程序设计教程》 第十章 保护模式及其编程.ppt
- 黑龙江八一农垦大学:《计算机辅助设计》课程教学大纲(草业科学及园林专业).doc
- 黑龙江八一农垦大学:《计算机辅助设计》理论课程各章电子教案.doc
- 《计算机辅助设计》AutoCAD教程讲义(共十章).doc
- 《高级程序设计语言》 第一章 C语言概述.ppt
- 《高级程序设计语言》 第七章 数组.ppt
- 《高级程序设计语言》 第三章 数据类型、运算符与表达式.ppt
- 《高级程序设计语言》 第二章 程序的灵魂——算法.ppt
- 《高级程序设计语言》 第五章 选择结构程序设计.ppt
- 《高级程序设计语言》 第八章 函数.ppt
- 《高级程序设计语言》 第六章 循环控制.ppt
- 《高级程序设计语言》 第十一章 结构体与公用体.ppt
- 《高级程序设计语言》 第十章 指针.ppt
- 《高级程序设计语言》 第四章 顺序程序设计.ppt
- 上海交通大学:《接口技术》 实验教学大纲.doc
- 上海交通大学:《微机原理与接口技术》课程PPT教学课件(微型计算机技术)目录(孙德文).ppt
- 上海交通大学:《微机原理与接口技术》课程PPT教学课件(微型计算机技术)第十章 微型计算机系统实用接口技术.ppt