Как вывести информацию в Visual Studio с помощью ассемблера - PullRequest
1 голос
/ 04 ноября 2019

Я пытаюсь использовать ассемблер, и при вызове 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;
}

1 Ответ

0 голосов
/ 15 ноября 2019

Был найден интересный метод для вывода Hello World во встроенном ASM с использованием Visual Studio C ++.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...