x86程序集读/写文件

时间:2013-06-05 14:11:09

标签: c assembly x86 read-write

我目前正在尝试写入文件到目前为止,我有以下代码附加到该文件。有谁知道为什么这不起作用?它运行良好,但最终没有任何改变。

filewritemode: .asciz "a"
filelocation: .asciz "/h/test.txt"

_main:  

push $filelocation
push $filewritemode
call _fopen
push $blabla
push %eax 
call _fprintf

push $result
call _printf
push $0
call _exit # exit the program

使用gcc将源文件转换为.exe $ blabla目前是带有一些随机字符的字符串,用于测试

2 个答案:

答案 0 :(得分:2)

您正在将参数传递给fopen,而您没有检查错误。在这种情况下,ltrace可能是您的朋友。

答案 1 :(得分:2)

它不起作用,因为您以错误的顺序推送了fopen的参数。必须将参数从最后推到第一个。除此之外,您反复推送参数,但不要再次删除它们。在这种情况下,因为你潜水到exit,但是如果相反你会用ret指令返回,你会发现这会导致崩溃,因为你会跳到推送参数之一。