汇编-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,4040h

ExitProcess PROTO,dwExitCode:DWORD      

.code  

ArraySum PROC USES esi ecx   ;子过程
mov esi,OFFSET var
mov ecx,4040h
add ecx,2
ret
ArraySum ENDP




main PROC   
	
	mov esi,1010h
	mov ecx,2020h
	call ArraySum
	


INVOKE ExitProcess,0  
main ENDP   
END main  

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

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

相关推荐
顾鉴行思6 小时前
10 字符串常量到底存在哪里?
c语言·汇编·经验分享
iCxhust10 小时前
在 emu8086 中可以直接编译运行的完整汇编程序,演示数组的定义、遍历、求和、求最大值。
开发语言·前端·javascript·汇编·单片机·嵌入式硬件·算法
浩浩测试一下18 小时前
堆栈中的 参数与局部变量 (逆向分析)
汇编·逆向·免杀·堆栈·windows编程·pe壳
iCxhust1 天前
微机原理实践教程(C语言篇)---A001闪烁灯
c语言·开发语言·汇编·单片机·嵌入式硬件·51单片机·微机原理
浩浩测试一下2 天前
抬栈 恢复上下文 (逆向分析)
汇编·逆向·堆栈·windows核心编程
zhouwy1132 天前
ARM汇编指令集详解
汇编·arm开发
iCxhust2 天前
微机原理实践教程(汇编篇)---A002流水灯
汇编·单片机·嵌入式硬件·51单片机·微机原理
浩浩测试一下2 天前
栈帧 抬栈与平栈 (逆向分析)
汇编·windows api·堆栈·windows编程·windows 开发
陈eaten2 天前
win11下nasm编写汇编及链接方案
汇编·链接·nasm·gcc·golink
iCxhust2 天前
【无标题】8086/8088裸机对于学习微机原理的重要意义
汇编·单片机·嵌入式硬件·嵌入式·微机原理