echo-Assemblerprogramm
-
Ich bin gerade dabei ein echo - assemblerprogramm zu schreiben,
(das Programm soll also die ihm mitgegebenen Argumente einfach ausgeben)
hier ist mein bisheriger code;echo.asm ;an echo-programm in asm ;Storm 2006 section .data buffersize: dw 1024 ; Declare buffersize, containing 1024 words section .text global _start _start: ;read commandline-arguments pop eax ;Number of arguments pop ecx ;Programm-name -> Trow it away pop ecx ;load argument in ecx ;write commanline-arguments mov eax,4 ;sys_write mov ebx,1 ;stdout mov edx,buffersize ;maximum number of chars int 80h ;kernel-interrupt ;exit mov eax,1 ;sys_exit mov ebx,0 ;return-code 0 (everything is ok) int 80h ;kernel-interrupt
Mein Problem liegt darin das ich nicht weis wieviel zeichen mein argument hat,
und meine bisherige lösung mit buffersize bringt zwar keinen fehler, gibt aber garnichts aus.
Mit strace erhalte ich folgendes:
**
storm@localhost ~/Assembler $ strace ./echo hallo
execve("./echo", ["./echo", "hallo"], [/* 57 vars */]) = 0
write(1, "hallo\0MANPATH=/usr/local/share/m"..., 134516928) = -1 EFAULT (Bad address)
_exit(0)
**Wie löse ich dieses Problem?
Auch bräuchte ich ein gescheites Tutorial für Linux NASM Assembler,
alles was ich bisher gefunden hab waren kurze Einführungen, ich möchte aber
mehr lernen als nur eine kurze Einführung.Wie ist das Programm sonst vom Aufbau her? Irgendwelche Tipps?