汇编-PROTO声明过程

64位汇编

64 模式中,PROTO 伪指令指定程序的外部过程,示例如下:

复制代码
ExitProcess PROTO   ;指定外部过程,不需要参数


.code
main PROC
	
	mov ebx, 0FFFFFFFFh 
	

	
	mov ecx,0   ;结束程序
	call ExitProcess    ;调用外部过程
	

main ENDP
END  

32位汇编

然而在32位模式中,PROTO需要包含过程参数列表

PROTO 必须在 INVOKE 之前首先岀现。换句话说,这些伪指令的标准顺序为:

复制代码
MySub PROTO        ;过程原型
.
INVOKE MySub       ;过程调用
.
MySub PROC          ;过程实现
..
MySub ENDP

还有一种情况也是可能的:过程实现可以出现在程序的前面,先于调用该过程的 INVOKE 语句

复制代码
MySub PROC           ;过程定义
..
MySub ENDP
.
INVOKE MySub       ;过程调用

声明函数的格式是:

函数名 proto [距离] [语言] [参数1]:数据类型,[参数2]:数据类型,......

距离可以是NEAR, FAR, NEAR 16, NEAR 32, FAR 16或FAR 32, Win 32中只有一个平坦的段, 无所谓距离, 所以在定义时是忽略的; 语言类型就是.model那些类型, 如果忽略, 则使用.model定义的默认值

对于编译器来说, 它只关心参数的数量, 参数的名称在这里是"无用"的,仅是为了可读性而设置的,可以省略掉,所以下面两句消息框函数的定义实际上是一样的:

相关推荐
rechol7 天前
汇编与底层编程笔记
汇编·arm开发·笔记
CHANG_THE_WORLD7 天前
switch语句在汇编层面的几种优化方式 ,为什么能进行优化
汇编·算法·switch·汇编分析·switch case·switch case 汇编·switch case 语句
SundayBear8 天前
嵌入式进阶:C语言内联汇编
c语言·开发语言·汇编
CC-NX10 天前
32位汇编:实验5算数运算类指令使用
汇编·win32·算数运算
伐尘10 天前
【汇编】RAX,eax,ax,ah,al 关系
汇编
CHANG_THE_WORLD10 天前
c语言位运算 汇编代码分析
c语言·开发语言·汇编
CHANG_THE_WORLD10 天前
if条件语句 三目运算符 汇编分析
汇编·算法·条件语句·if 语句·汇编分析·条件语句汇编分析
CHANG_THE_WORLD11 天前
有符号数和无符号数的 汇编视角 区别
汇编
南飞测绘视界12 天前
【编号220】中国国内生产总值历史数据汇编1952-2021合订本(PDF扫描版)
汇编·pdf·年鉴
Ayanami_Reii13 天前
汇编和C语言结构
c语言·汇编·笔记