Linux x86 Assembly, чтение из файла, создание записи в новый файл: недопустимые символы - PullRequest
0 голосов
/ 04 ноября 2018

Этот код должен прочитать моё имя из существующего файла, затем создать новый файл и записать его в него. По некоторым причинам первые два символа в новом файле являются мусором (\ 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]
...