我尝试使用汇编程序,当我调用int 0x80时,我的程序崩溃了。如果我想在C++代码中通过汇编器在控制台中输出一些信息,该怎么办?

#include <iostream>

int main()
{
    char *msg = "Hello";

    __asm
    {
        mov eax, 4;
        mov ebx, 1;
        mov ecx, msg;
        mov edx, 5;
        //int 0x80;
    }
    system("pause");
    return 0;
}

最佳答案

我发现一些有趣的方法可以使用Visual Studio C++在Inline ASM中输出Hello world。

char* hi = "Hello World\n";
char* text = "%s";
__asm
{
    mov eax, hi;             // load C pointer variable from memory
    push eax;                // function args on the stack with rightmost highest
    mov eax, text;
    push eax;
    call DWORD ptr printf;    // indirect call to DLL function
    pop eax;                  // clean up the stack
    pop eax;                  // with these 2 dummy pops
}

有关更多信息,请参见本文:http://rodrigosavage.blogspot.com/2010/07/hello-world-with-inline-asm.html?m=1

关于c++ - 如何通过汇编器在Visual Studio中输出信息,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/58688328/

10-13 07:52