【问题标题】:How to print LOCAL byte with WinApi's WriteConsole如何使用 WinApi 的 WriteConsole 打印 LOCAL 字节
【发布时间】:2021-05-11 12:45:37
【问题描述】:

我很难澄清我的问题,但我会尝试。我正在尝试学习 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, 0
    xor eax, eax
    ret
WriteToConsole ENDP

我想要这样的东西:

.code
WriteToConsole PROC 
    LOCAL string[10] :SBYTE
    LOCAL handle :DWORD
    invoke GetStdHandle, -11
    mov handle, eax
    mov edx, offset string ;impossible because of stack
    invoke WriteConsoleA, handle, edx, 10, 0, 0 ;can't call without a pointer
    xor eax, eax
    ret
WriteToConsole ENDP```

【问题讨论】:

    标签: pointers memory stack masm masm32


    【解决方案1】:

    嗯,我找到了答案:

     LOCAL string[10] :DWORD
     lea edx, string
     invoke WriteConsoleA, handle, edx, stringlength, 0, 0
    

    加载有效地址而不是偏移量有帮助!

    【讨论】:

      猜你喜欢
      • 2012-04-05
      • 1970-01-01
      • 1970-01-01
      • 2017-05-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多