【发布时间】:2014-11-17 02:33:46
【问题描述】:
我正在编写一个程序,将内容从一个文件写入另一个文件。 我现在正在做的(用于测试)是打开这两个文件并在其中一个中写入一个字符串。该程序没有显示任何错误,但是文件中没有写入任何内容。
这是我的代码
BITS 32
section .data
msg db "Hola"
section .bss
src_file resb 1 ; Source file descriptor
dest_file resb 1 ; Destination file descriptor
section .text
global _start
_start:
pop ebx ; argc
pop ebx ; argv[0] nombre del ejecutable
pop ebx ; src file name
;; Open src file
mov ecx,1 ; Write mode
mov eax,5 ; sys_open()
int 0x80 ; Interruption 80. kernel call
mov [src_file],eax
pop ebx ; dest file name
;; Open dest file
mov ecx,1 ; Write mode
mov eax,5 ; sys_open()
int 0x80 ; Interruption 80. kernel call
mov [dest_file],eax
;; Writes in src file
mov edx,4 ; Long
mov ecx,msg ; text
mov ebx,[src_file] ; File descriptor of dest file
mov eax,4
int 0x80
;; Closes src file
mov ebx,[src_file] ; File descriptor of src file
mov eax,6 ; sys_close()
int 0x80 ; Kernel call
;; Closes dest file
mov ebx,[dest_file] ; File descriptor of src file
mov eax,6 ; sys_close()
int 0x80 ; Kernel call
;; Exits the program
mov ebx,0 ; OS exit code
mov eax,1 ; sys_exit
int 0x80 ; Kernel call
我认为在打开文件后存储文件描述符可能有问题,因为如果我在打开源文件后立即移动写入文件的代码块,它就可以正常工作。
感谢您的帮助!
【问题讨论】: