如何在Linux程序集中创建文件

时间:2015-05-12 11:47:09

标签: linux file assembly nasm

我有以下代码:

section .text
    global _start       ;must be declared for using gcc
_start:                     ;tell linker entry point
    mov ecx, 2      ;read-write perms
    mov ebx, name       ;name of file
    mov eax, 8      ;system call number (sys_creat)
    int 0x80        ;call kernel
    mov eax, 1      ;system call number (sys_exit)
    int 0x80        ;call kernel

section .data
name    db  'C:\\test.txt',0xa  

这是为了在C盘中创建一个文件(test.txt)但不起作用,这是做什么的正确方法?

1 个答案:

答案 0 :(得分:3)

首先,syscall = 8是sys_creat,而不是写。

但是找出正在发生的事情的最简单方法是查看程序的strace输出。在那里你可以看到系统调用是否成功,如果没有,那么错误值是多少。 (错误)

Afaik creat(2)不再使用,现在使用第二个参数中带有O_CREAT的Open(2)。