汇编 过程 创建并测试 proc endp call ret uses
过程
堆栈操作
- LIFO
运行时堆栈
入栈操作
- 高地址向低地址
出栈操作
- 低地址高低地址
堆栈作用
- 临时保存寄存器, 被修改后可恢复
- 执行call时,保存返回地址
- 参数压入堆栈进行传递
- 临时存储局部变量
push, pop
- push
- 减少esp的值,将源操作数复制到堆栈
- push reg/mem16
- push reg/mem32
- push imm32
- pop
- 增加esp的值,将堆栈中的内容复制到16位或32位操作数中
- pop reg/mem16
- pop reg/mem32
pushfd, popfd
- pushfd: 将32位eflags寄存器压入到堆栈中
- popfd: 将堆栈中的内容复制到eflags中
.data saveFlags dword ? .code pushfd pop saveFlagspush saveFlags popfd
pushad, pusha, popad, popa
- pushad将eax, ecx, edx, ebx, esp(执行之前的值), ebp, esi, edi的顺序压栈
- popad以相反顺序弹栈
- pusha将ax, cx, dx, bx, sp(执行之前的值), bp, si, di的顺序压栈
- popa以相反顺序弹栈
- 过程用一个或多个寄存器来返回结果时,不应该使用
定义并使用过程
proc
main proc
...
main endpsample proc
...ret
sample endp; 标号与jmp在同一个过程中
jmp destination
; 取消限制
destination ::; 三个整数求和
sumof procadd eax, ebxadd eax, ecxret
sumof endp
- 添加描述信息
- 输入参数及其用法的列表,并将其命名为Receives
- 返回值的描述,并命名为Returns
- 对过程返回的所有数值的描述(先决条件),在调用之前满足,并命名为Requies
;----------------------
; sumof
;
; 计算3个32位整数之和并返回和数
; Receives: eax,ebx和ecx为3个整数,可能是有符号数,或无符号数
; Returns:eax = 和数
;----------------------
sumof procadd eax, ebxadd eax, ecxret
sumof endp
call,ret
main proc
00000020 call MySub
00000025 mov eax, ebxMySub proc
00000040 mov eax, edx
...retMySub endp
- 过程调用嵌套
向过程传递寄存器参数
.data theSum dword ? .code main procmov eax, 10000hmov ebx, 20000hmov ecx, 30000hcall sumofmov theSum, eax
汇编 过程 创建并测试 proc endp call ret uses相关推荐
- ARM汇编:汇编中proc、endp、ret、near、far指令用法
ARM汇编:汇编中proc.endp.ret.near.far指令用法 子程序名 PROC NEAR ( 或 FAR ) -- ret 子程序名 ENDP (1)NEAR属性(段内近调用): 调用程序 ...
- v8学习笔记(六) 汇编过程
v8汇编过程 根据抽象语法树FunctionLiteral创建Code对象(内含机器指令),返回JSFunction对象. MakeCode(): 1.增加返回语句: Rewriter::Proce ...
- PCL——1.介绍及工程创建与测试
目录 pcl介绍 工程创建与测试 CMakeLists.txt内容解释 pcl介绍 对于3D点云处理来说,PCL完全是一个模块化的现代C++模板库.其基于以下第三方库:Boost.Eigen.FLAN ...
- 从零开始详解应用内支付——商品创建及测试上架
当用户在应用市场里下载APP,体验了免费的基础功能和服务后,通过自主选择付费,以获取和使用应用内提供的增值服务--这种用户应用内购买行为的完成,就需要用到应用内支付(In-App Purchases, ...
- Jmeter基本使用到精通(一)从安装第一个任务线程的创建及测试
(一)jemter介绍 Apache JMeter是100%纯JAVA桌面应用程序,被设计为用于测试客户端/服务端结构的软件(例如web应用程序).它可以用来测试静态和动态资源的性能,例如:静态文件, ...
- 项目描述_单元测试技巧:创建描述性测试
项目描述 您的单元测试应尽可能具有描述性. 他们给您的反馈应该非常清楚,您甚至不必启动调试器并一步一步地检查代码以检查局部变量. 为什么? 因为那需要时间,而且我们很懒,对吗? 为此,您需要创建描述性 ...
- 单元测试 问题描述_单元测试技巧:创建描述性测试
单元测试 问题描述 您的单元测试应尽可能具有描述性. 他们给您的反馈应该非常清楚,您甚至不必启动调试器,并一步一步地检查代码以检查局部变量. 为什么? 因为那需要时间,而且我们很懒,对吗? 为此,您需 ...
- 单元测试技巧:创建描述性测试
您的单元测试应尽可能具有描述性. 他们给您的反馈应该非常清楚,您甚至不需要启动调试器并一步一步地检查代码来检查局部变量. 为什么? 因为那需要时间,而且我们很懒,对吗? 为此,您需要创建描述性测试. ...
- Android官方开发文档Training系列课程中文版:Activity测试之创建功能性测试
原文地址:http://android.xsoftlab.net/training/activity-testing/activity-functional-testing.html 功能性测试包括模 ...
最新文章
- 疯狂上涨的 Python,开发者应从 2.x 还是 3.x 着手?
- 如何查看linux系统服务器磁盘大小和文件占用情况
- vb 字符串替换_学习VB编程第69天 字符串查找与替换
- OpenGL deferred shading延迟渲染的实例
- 理解正向代理和反向代理
- 计算机组成原理实验 组装实验报告,计算机组成原理实验一实验报告..doc
- 60页论文综述深度学习优化方法,出自UIUC
- 动态规划java LCS_动态规划递归求解LCS长度 | 学步园
- 《TensorFlow 2.0深度学习算法实战教材》学习笔记(五、神经网络)
- Xen虚拟化平台安装及实时迁移
- HBase之四--(1):Java操作Hbase进行建表、删表以及对数据进行增删改查,条件查询...
- 图数据库_多款业界流行图数据库对比
- html特殊符号拉丁文,拉丁文字符号大全,罗马字母
- 学习笔记(1):C#Winform水晶报表实例教程-设计带图片的水晶报表
- 解读《美国国家BIM标准》 – BIM能力成熟度模型 (七)
- 江苏计算机对口高考分数线,单招好还是高考好|江苏省对口单招 历年分数线是多少?...
- datav(datav)
- 烂笔头投资日记20221212
- python3*1**3 表达式输出结果为_3*1**3 表达式输出结果为________
- 宿舍管理系统的设计与实现/学生宿舍管理系统