如何解决如何使用 WinApi 的 WriteConsole 打印 LOCAL 字节
我很难澄清我的问题,但我会努力。我正在尝试学习 MASM32,我的任务是在控制台中打印一些文本而不使用 .data 或 .const。问题是 LOCAL 将变量放在堆栈上,而不是放在静态内存中。所以我无法获得它们的地址(偏移量),并且 WriteConsole 使用指向内存中文本地址的指针。关于如何处理这个问题的任何想法?谢谢! 我有这个:
.data
string db 10 'somestring'
.code
WritetoConsole PROC
LOCAL handle :DWORD
invoke GetStdHandle,-11
mov handle,eax
mov edx,offset string
invoke WriteConsoleA,handle,edx,10,0
xor eax,eax
ret
WritetoConsole ENDP
我想要这样的东西:
.code
WritetoConsole PROC
LOCAL string[10] :SBYTE
LOCAL handle :DWORD
invoke GetStdHandle,offset string ;impossible because of stack
invoke WriteConsoleA,0 ;can't call without a pointer
xor eax,eax
ret
WritetoConsole ENDP```
解决方法
好吧,我找到了答案:
LOCAL string[10] :DWORD
lea edx,string
invoke WriteConsoleA,handle,edx,stringlength,0
加载有效地址而不是偏移量有帮助!
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。