程序集文件管理期间出错
Error during File Management in Assembly
我正在尝试用汇编 (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
我不知道,为什么会这样
文件名必须以零结尾:
file_name db 'file.txt',0
我正在尝试用汇编 (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
我不知道,为什么会这样
文件名必须以零结尾:
file_name db 'file.txt',0