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?


Anmelden zum Antworten