-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
私は