两个小问题,望高手仔细回答!

nightsuns 2003-05-16 02:24:46
1.在一个子程序中调用另一个子程序,内容如下:
invoke _RegisterProc,addr @Buffer,addr @lpResult,Length

_RegisterProc proc Buffer,Result,Length



_RegisterProc endp

结果不能够编译,于是删除Length(第三个参数),之后程序编译通过,
但是因为我必须要传三个参数,于是将第三个参数改为addr Length结果,编译又不能够通过,
为什么呢?难道子程序对参数的个数有限制吗?


2。_RegisterProc proc Buffer,Result,Length
local @MyVal


_RegisterProc endp
这样定义的一个局部变量在程序中如果有这样的语句:mov eax,@MyVal它传入的值为什么意义?
还有如果是这样:mov eax,Buffer(是程序的参数,传入的是地址),那么它的意义又是什么?

望高手仔细回答这个问题,在此谢过了!
...全文
30 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
nightsuns 2003-05-17
  • 打赏
  • 举报
回复
多谢这位兄台啦!
zara 2003-05-16
  • 打赏
  • 举报
回复
1. Length 是保留字, 不能作为变量名或标号. 可以将第三个参数设为 NULL
2. mov eax, @MyVal 传入的是那个局部变量的值: mov eax, [ebp-??];
不过如果没有进行初始化的话, 值是不定的.
mov eax, Buffer 还是那个参数的值, 等于调用指令传来的地址: mov eax, [ebp+??]

21,458

社区成员

发帖
与我相关
我的任务
社区描述
汇编语言(Assembly Language)是任何一种用于电子计算机、微处理器、微控制器或其他可编程器件的低级语言,亦称为符号语言。
社区管理员
  • 汇编语言
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧