2017-01-04 14 views
-2

私は、テキストファイルを作成して何かを書くための簡単なコードをアセンブリ(NASM 2, Linux)に書き込もうとしています。しかし、以下のコードを実行すると、ファイル名がファイルの内容と連結されたコードで述べたとおりではないことがわかりました。すなわちアセンブリ内のファイル管理中にエラーが発生しました

file.txtHello Worldというファイルを生成します。ここで、Hello Worldはファイルの内容です。

section .data 
    file_name db 'file.txt' 

    msg  db 'Hello World', 0xa 
    len equ $-msg 

section .bss 
    fd_out resb 1 

section .text 
    global _start   ;must be declared for using gcc 
_start:      ;tell linker entry point 

    ;Create the file 
    mov ebx, file_name 
    mov ecx, 777   ;(read write execute = 111 = 7) by all (owner, group, and others) 
    mov eax, 8    ;system call number (sys_creat) 
    int 0x80    ;call kernel 
    mov [fd_out], byte eax 

    ;Write into the file 
    mov ebx, [fd_out]  ;file descriptor 
    mov ecx, msg   ;message to write 
    mov edx, len   ;number of bytes 
    mov eax, 4    ;system call number (sys_write) 
    int 0x80    ;call kernel 

    ;Close the file 
    mov eax, 6    ;system call number (sys_close) 
    int 0x80    ;call kernel 

    mov eax,1    ;System call number (sys_exit) 
    int 0x80    ;Call kernel 

私は

答えて

2

ファイル名を起こっがゼロエンドでなければならないということですなぜ、任意のアイデアを持っていない:

file_name db 'file.txt',0 
関連する問題