-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
Я не имею ни малейшего представления, почему это происходит, что