当前位置: 首页 > news >正文

汇编-PROC定义子过程(函数)

过程定义

过程用PROC和ENDP伪指令来声明, 并且必须为其分配一个名字(有效的标识符) 。目前为止, 我们所有编写的程序都包含了一个main过程, 例如:

当要创建的过程不是程序的启动过程时, 就用RET指令来结束它。RET强制CPU返回到该过程被调用的地方:

过程中的标号

在默认情况下,代码标号只在其被声明的过程内可见,这个规则常常影响到跳转和循环指令.

解决这个限制的方法是声明全局标号 , 即在名字后面加双冒号(::) 

就程序设计而言,跳转或循环到当前过程之外不是个好主意

USES自动压栈和出栈指定的寄存器
 

USES操作符与PROC伪指令一起使用,能自动压栈和出栈指定的寄存器


.386  
.model flat,stdcall 
option casemap:none
.stack 4096.data   
var DWORD 1010h,2020h,3030h,4040hExitProcess PROTO,dwExitCode:DWORD      .code  ArraySum PROC USES esi ecx   ;子过程
mov esi,OFFSET var
mov ecx,4040h
add ecx,2
ret
ArraySum ENDPmain PROC   mov esi,1010hmov ecx,2020hcall ArraySumINVOKE ExitProcess,0  
main ENDP   
END main  

说明:1.在子过程第一条语句执行之前(在mov esi,OFFSET var之前),先PUSH指定的寄存器

        2.在执行ret之前,先执行POP指定的寄存器

http://www.lryc.cn/news/239846.html

相关文章:

  • 服务器主机安全的重要性及防护策略
  • PDF转成图片
  • Qt无边框设计
  • 规则引擎Drools使用,0基础入门规则引擎Drools(二)高级语法
  • C语言二十三弹---求第N项斐波那契数列的值
  • Pickcode:教孩子们编码的新视觉语言
  • 乐划锁屏插画大赏热度持续,进一步促进价值内容的创造与传播
  • 【ArcGIS Pro微课1000例】0034:矢量数据几何校正案例(Spatial Adjustment)
  • 2023亚太杯数学建模B题:玻璃温室中的微气候法规,思路模型代码论文
  • Eclipse常用设置-乱码
  • MySQL面试,MySQL事务,MySQL锁,MySQL集群,主从,MySQL分区,分表,InnoDB
  • HarmonyOS应用开发者认证题目满分指南
  • openssl+ SM2 + linux 签名校验开发实例(C++)
  • 有关Vue、微信小程序、UniApp中的CSS中的宽度width单位、自适应
  • 黑马React18: ReactRouter
  • 算法刷题-动态规划-1
  • 分享一篇很就以前的文档-VMware Vsphere菜鸟篇
  • QT中的lambda表达式
  • linux文件I/O:文件锁的概念、函数以及代码实现
  • MySQL数据库系统教程
  • 这样写postman实现参数化,阿里p8都直呼牛逼
  • 【Qt-25】控件篇
  • 《算法通关村——反转字符串中的单词问题解析》
  • C++使用Tensorflow2.6训练好的模型进行预测
  • 5-1 Java 网络编程
  • 汇编-CALL和RET指令
  • STM32_5(中断)
  • docker 部署hbase 并且java Api连接
  • EasyExcel listener无法通过Autowired注入xxMapper
  • Android Spannable 使用​注意事项