程序集写入文件x86

时间:2013-06-06 11:16:56

标签: assembly x86

以下代码用于在文本文件中编写foobar。命名为tests.txt位于H.但它没有这样的事情,它不会给我一个错误,它只是让文件处于我发现它的相同状态。在解码时,看起来%eax在调用_fopen之后是0,这看起来像我喜欢

blablaaa: .asciz "foobar /n"
filewritemode: .asciz "a"
filelocation: .asciz "/h/tests.txt"


_main:  

push $filewritemode
push $filelocation
call _fopen


push $blabla
push %eax 
call _fprintf
addl $16,%esp
push $0
call _exit # exit the program

我使用gcc来编译这个东西,以防它重要并且之前能够成功调用printf。 在尝试播放声音时,我发现将声音的位置更改为test.wav但是这不起作用,这里有什么东西吗?顺便说一句是的,我试过/H/test.txt H:/test.txt test.txt我错过了什么? 或者这可能是一个许可问题?

1 个答案:

答案 0 :(得分:1)

您正在将参数传递给fprintf。来吧,多注意一下,你已经犯了这个错误!

但这不应影响fopen的返回值。那部分对我有用。请注意,某些环境需要堆栈指针的16字节对齐。

顺便说一下,/n不是换行符,如果你想要的话。

相关问题