汇编子过程内能否定义一些变量?
我要写个子过程来实现数据类型检测的功能 比如子过程 处理141234sda 这要样的串数据时就提示一些错误信息 我想把 提示错误信息 定义在子过程内
但汇编好像只能在数据段内定义一些变量。。。
我可能是因为高级语言错误的思想 这样提问 但我希望就是该子过程 包含它自己所有的东西 这样更通用些
[解决办法]
我用MASM6.15
子过程定义临时变量可以使用local命令,但是要使用字符串的时候我是在在子过程中重新定义数据段和代码段。
如:
xxx proc
.data
msg byte "xxxx ",0
.code
pushad
.
.
xxx endp
[解决办法]
当然可以。
如果在子程序里定义了变量,那最好有个跳转(一般是短跳转)语句,跳到子程序中的除变量定义语句的“真正开始执行”语句当中就行!!!
[解决办法]
完全可以,具体语法是这样的:
.code
.....
temp_var PROC
LOCAL var1:BYTE,var2:DWORD....
temp_var PROC
定义局部变量后,回收的工作都可以交给编译器去做,它会在你的过程的末尾自动加上leave指令撤销堆栈框架。
这也算是汇编语言的一种“封装性”吧,呵呵。不过需要注意的是,局部变量的名称是不能与数据段内的全局变量相重复的(这里就没有了C/C++的覆盖机制),而不同过程内的局部变量名称则是可以重复的。
[解决办法]
masm无法直接定义局部静态变量,但通过宏可以。