汇编-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.hqwc.cn/news/212286.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

好细的Vue安装与配置

一、下载和安装Vue 官网下载地址Download | Node.js 选择适合自己的版本,推荐LTS,长久稳定版本。 我这里选择的是Windows Installer(.msi) 64-bit 下载好后,双击下载的安装包。 点next 勾选I accept............,点next 这里建…

MATLAB - text的两种使用方法

text小技巧 1. 常规使用(Method 1)2. 在显示画面的相对位置(Method 2)3. 举个例子 1. 常规使用(Method 1) text(x,y,txt)2. 在显示画面的相对位置(Method 2) text(string,‘ABC’,…

使用端口扫描工具解决开放端口威胁并增强安全性

从暴露网络漏洞到成为入侵者的通道,开放端口可能会带来多种风险向量,威胁到网络的机密性、完整性和可用性。因此,最佳做法是关闭打开的端口,为了应对开放端口带来的风险,网络管理员依靠端口扫描工具来识别、检查、分析…

跨境电商必须要海外代理IP吗?盘点五大海外代理IP

相信跨境电商人近日都为了2023的跨境黑五旺季奋战,而2024也即将来临,对于跨境人的考验一波接着一波,根据Adobe Analytics的数据,2022年黑色星期五的销售额创下91.2亿美元新高,网络星期的销售额同样达到创纪录的113亿美…

jenkins 参数构建

应用保存 [rootjenkins-node1 .ssh]# ssh-keygen Generating public/private rsa key pair. Enter file in which to save the key (/root/.ssh/id_rsa): Enter passphrase (empty for no passphrase): Enter same passphrase again: Your identification has been saved i…

ubuntu搭建phpmyadmin+wordpress

Ubuntu搭建phpmyadmin wordpress Linux系统设置:Ubuntu 22配置apache2搭建phpmyadmin配置Nginx环境,搭建wordpress Linux系统设置:Ubuntu 22 配置apache2 安装apache2 sudo apt -y install apache2设置端口号为8080 sudo vim /etc/apache…

Java中23种设计模式

一、创建型模式 1.单例模式(Singleton Pattern) 单例模式(Singleton Pattern)是 Java 中最简单的设计模式之一。这种模式涉及到一个单一的类,该类负责创建自己的对象,同时确保只有单个对象被创建。这个类提…

leetcode刷题之用栈实现队列(C语言版)

leetcode刷题之用栈实现队列(C语言版) 一、题目描述二、题目要求三、题目解析Ⅰ、typedef structⅡ、MyQueue* myQueueCreateⅢ、void myQueuePush(MyQueue* obj, int x)Ⅳ、int myQueuePeek(MyQueue* obj)Ⅴ、int myQueuePop(MyQueue* obj)Ⅶ、bool myQ…

微服务保护 Sentinel

1.初识Sentinel 文章目录 1.初识Sentinel1.1.雪崩问题及解决方案1.1.1.雪崩问题1.1.2.超时处理1.1.3.仓壁模式1.1.4.断路器1.1.5.限流1.1.6.总结 1.2.服务保护技术对比1.3.Sentinel介绍和安装1.3.1.初识Sentinel1.3.2.安装Sentinel 1.4.微服务整合Sentinel 2.流量控制2.1.簇点链…

【Vue】创建第一个实例

步骤&#xff1a; 1.创建容器 2.引包 3.创建实例 4.添加配置项 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>Title</title> </head> <body><!--准备容器 --> <di…

轻松搞定HTTP接口测试,JMeter让你事半功倍!

jmeter-http接口测试脚本 jmeter进行http接口测试的主要步骤&#xff08;1.添加线程组 2.添加http请求 3.在http请求中写入接口的URL&#xff0c;路径&#xff0c;请求方式&#xff0c;参数 4.添加查看结果树 5.调用接口&#xff0c;查看返回值&#xff09; 针对接口添加heade…

springcloud超市管理系统源码

技术说明&#xff1a; jdk1.8&#xff0c;mysql5.7&#xff0c;idea&#xff0c;vscode springcloud springboot mybatis vue elementui mysql 功能介绍&#xff1a; 后台管理&#xff1a; 统计分析&#xff1a;查看用户&#xff0c;商品&#xff0c;销售数量&#xff1b;…