0

以下代码用于在文本文件中写入 foobar。名为tests.txt 位于H。但是它没有做任何事情它不会给我一个错误,它只是让文件处于我找到它的相同状态。解码时,在调用 _fopen 后似乎 %eax 为 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 我错过了什么吗?或者这可能是一个许可问题?

4

1 回答 1

1

您也将参数传递给fprintfreversed 。来吧,多注意一点,你已经犯过一次这个错误了!

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

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

于 2013-06-06T22:27:41.403 回答