Function MASM x86汇编打印字符串函数

Function MASM x86汇编打印字符串函数,function,assembly,masm,Function,Assembly,Masm,(我对汇编语言比较陌生,所以这可能是一个非常明显的问题,对不起) 我试图在x86汇编(VisualStudio、MASM、Windows10)中编写一个函数,我可以从C调用该函数,它接收字符*并打印它 到目前为止,我有以下函数代码: _scuffed_printf PROC push ebp mov ebp, esp <???> pop ebp ret _scuffed_printf ENDP \u磨损\u打印过程 推ebp 电动汽车

(我对汇编语言比较陌生,所以这可能是一个非常明显的问题,对不起)

我试图在x86汇编(VisualStudio、MASM、Windows10)中编写一个函数,我可以从C调用该函数,它接收字符*并打印它

到目前为止,我有以下函数代码:

_scuffed_printf PROC

    push ebp
    mov ebp, esp

    <???>

    pop ebp
    ret

_scuffed_printf ENDP
<代码>\u磨损\u打印过程 推ebp 电动汽车 流行ebp ret _磨损的印刷品
有没有什么方法可以在不使用MessageBox等Windows API函数的情况下实现这一点?

您是否正在链接C库?您可以将字符串传递到
fputs(string\u arg,stdout)
,或传递到
printf(“%s”,string\u arg)
。(仅仅
jmp printf
tailcall是不安全的,因为字符串可能包含
%
字符。但是如果您不介意添加换行符,可以用
jmp put
替换整个函数)是的,我正在链接C库,事实上,我想要的是纯粹在汇编中编写一个全新的函数,它不依赖于任何其他现有函数,如printf或put。这在Windows中是可能的吗?是的,您当然可以调用Windows DLL导出的本机Windows函数,例如WriteFile以在标准输出上执行IO。(Windows没有一个文档化的/稳定的
syscall
接口,无法像在Linux上那样直接调用内核。当然,您可以在Windows上使用原始系统调用,因为人们已经对DLL进行了反向工程,但调用号码可能因Windows内核版本而异)非常感谢!