Guten Tag, ich lerne seit ein paar Tagen Assembler mit NASM unter Linux x86.
Klappt auch soweit, bis auf einige Fragen, die ich habe:

Ich habe folgenden Code, welcher eine Datei text.txt erstellen soll und 'Erfolg' reinschreiben.
Klappt auch, nur dass er die Datei in test.txtErfolg nennt, kp wieso. Wäre schön wenn das einer erklären könnte.

section .data

f: db 'test.txt'
msg: db 'Erfolg',10
len: equ $-msg

section .text

global _start

_start:
mov eax,8
lea ebx,[f]
mov ecx,777o
xor edx,edx
int 0x80

cmp eax,0x00
je ende

mov ebx,eax
mov eax,4
lea ecx,[msg]
lea edx,[len]
int 0x80

mov eax,6
int 0x80

ende:
mov eax,1
mov ebx,0
int 0x80
Und zudem erstellt der Syscall 8 ja nur Dateien, kann ich mit 5 auch nur welche Öffnen, doch wie kann ich dann hineinschreiben?

2.
; simple readin


section .data

inp: db 0,0,0,0,0,0,0,0,0,0

section .text

global main

main
mov eax,3
xor ebx,ebx
mov ecx,inp
mov edx,10
int 0x80

mov [inp],eax

mov eax,4
inc ebx
mov ecx,inp
mov edx,10
int 0x80

mov eax,1
xor ebx,ebx
int 0x80
Hier werden 10 Bytes Platz reserviert und von STDIN eingelesen, doch es werden nur die letzten 5 Bytes ausgegeben, wieso, ich gebe doch die Startadresse an.
Und vorallem, wie kann ich dynamisch Platz reservieren und Daten einlesen?

Zuletzt, was bedeuted 'byte' bei asm, sprich z.B. mov eax,byte[ecx]
Und wann lohnt es sich esi und edi zu verwenden?
Und wenn ihr gute Dokumentationen habt, auch gerne her damit.