Function MASM x86汇编打印字符串函数
(我对汇编语言比较陌生,所以这可能是一个非常明显的问题,对不起) 我试图在x86汇编(VisualStudio、MASM、Windows10)中编写一个函数,我可以从C调用该函数,它接收字符*并打印它 到目前为止,我有以下函数代码: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 电动汽车
_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内核版本而异)非常感谢!