C 内联汇编控制台打印

C 内联汇编控制台打印,c,assembly,C,Assembly,所以,我试图制作一个简单的程序来在控制台上打印字符串,为了做到这一点,我创建了一个带有内联汇编的简单函数,我的想法是,在不使用windows库或C/C++函数的情况下打印字符串,如printf或cout。。。。所以,我知道VC++的宏汇编编译器使用masm sintax。。。所以,我做了这个: void print(char *msg) { __asm { mov ah, 9 mov dx, msg int 21h } }

所以,我试图制作一个简单的程序来在控制台上打印字符串,为了做到这一点,我创建了一个带有内联汇编的简单函数,我的想法是,在不使用windows库或C/C++函数的情况下打印字符串,如printf或cout。。。。所以,我知道VC++的宏汇编编译器使用masm sintax。。。所以,我做了这个:

void print(char *msg)
{
    __asm
    {
        mov ah, 9
        mov dx, msg
        int 21h
    }
}

int main()
{
    print("hello");
    return 0;
}
但是,我认为使用旧的DOS中断不起作用:(
所以,有一种方法可以做到这一点,即使用printf或cout或c/c++函数,只使用c和汇编???

不是真的。你不能在Windows中使用DOS/BIOS中断。那么在汇编中打印字符串的唯一方法是通过你的体系结构的系统调用机制使用Windows API。如果你想尝试这一点,我会选择较低级别的尝试使用完整的系统仿真器,如gem5(如果您想进行编译的话),或者尝试x86仿真器,如qemu或Dosbox。您需要一个工具链来处理它,但它会让您在没有任何操作系统的情况下直接处理汇编。