汇编语言LOCAL伪指令:声明一个或多个变量名
不难想象,Microsoft 创建 LOCAL 伪指令是作为 ENTER 指令的高级替补。LOCAL 声明一个或多个变量名,并定义其大小属性。(另一方面,ENTER 则只为局部变量保留一块未命名的堆栈空间。)如果要使用 LOCAL 伪指令,它必须紧跟在 PROC 伪指令的后面。
其语法如下所示:
【示例】MySub 过程包含一个局部变量 var1,其类型为 BYTE:
其语法如下所示:
LOCAL varlist
varlist 是变量定义列表,用逗号分隔表项,可选为跨越多行。每个变量定义采用如下格式:label:type
其中,标号可以为任意有效标识符,类型既可以是标准类型(WORD、DWORD 等),也可以是用户定义类型。【示例】MySub 过程包含一个局部变量 var1,其类型为 BYTE:
MySub PROC
LOCAL var1:BYTE
BubbleSort PROC
LOCAL temp:DWORD, SwapFlag:BYTE
Merge PROC
LOCAL pArray:PTR WORD
LOCAL TempArray[10]:DWORD
MASM 代码生成
使用 LOCAL 伪指令时,查看 MASM 生成代码是有好处的。下面的过程 Example1 有一个双字局部变量:Example1 PROC LOCAL temp:DWORD mov eax,temp ret Example1 ENDPMASM 为 Example1 生成如下代码,展示了 ESP 怎样减去 4,以便为双字变量预留空间:
push ebp mov ebp, esp add esp, OFFFFFFFCh ;ESP 加 -4 mov eax, [ebp-4] leave retExample1 的堆栈帧示意图如下所示:
所有教程
- socket
- Python基础教程
- C#教程
- MySQL函数
- MySQL
- C语言入门
- C语言专题
- C语言编译器
- C语言编程实例
- GCC编译器
- 数据结构
- C语言项目案例
- C++教程
- OpenCV
- Qt教程
- Unity 3D教程
- UE4
- STL
- Redis
- Android教程
- JavaScript
- PHP
- Mybatis
- Spring Cloud
- Maven
- vi命令
- Spring Boot
- Spring MVC
- Hibernate
- Linux
- Linux命令
- Shell脚本
- Java教程
- 设计模式
- Spring
- Servlet
- Struts2
- Java Swing
- JSP教程
- CSS教程
- TensorFlow
- 区块链
- Go语言教程
- Docker
- 编程笔记
- 资源下载
- 关于我们
- 汇编语言
- 大数据
- 云计算
- VIP视频