Этот код должен прочитать моё имя из существующего файла, затем создать новый файл и записать его в него. По некоторым причинам первые два символа в новом файле являются мусором (\ 00, \ 00). Кажется, он не меняется, когда я изменяю длину буфера, за исключением того, что длина буфера больше, чем мое имя +2, в конце выдает man '\ 00'.
section .data
inFile db 'fileIN.txt', 0
outFile db 'fileOUT.txt', 0
;length equ $-msg
msgA db 'File Read', 10, 0
lenMsgA equ $-msgA
section .bss
fileHandle_out resb 1
fileHandle_in resb 1
buff resb 10
section .text
global main ;declare for gcc
main:
;open fileIN.txt
mov eax, 5
mov ebx, inFile
mov ecx, 0 ;read only
int 80h
mov [fileHandle_in], eax ; stores file handle invariable
;read from fileIN.txt
mov eax, 3
mov ebx, [fileHandle_in]
mov ecx, buff
mov edx, 10
int 80h
;message to CLI
mov eax, 4
mov ebx, 1
mov ecx, msgA
mov edx, 10
int 80h
;close fileIn.txt
mov eax, 6
mov ebx, [fileHandle_in]
int 80h
;create fileOUT.txt
mov eax, 8
mov ebx, outFile
mov ecx, 0444 ;write
int 80h ; call kernel
mov [fileHandle_out], eax ; mov file handle to variable
;write to fileOut.txt
mov eax, 4
mov ebx, [fileHandle_out]
mov ecx, buff
mov edx, 10
int 80h
;close fileOUT.txt
mov eax, 6
mov ebx, [fileHandle_out]