Assembly NASM - Command exited with non-zero status 1

di il
9 risposte

Assembly NASM - Command exited with non-zero status 1

Salve, sono alle prime armi con questo linguaggio di programmazione e ho fatto un codice che mi restituisce questo errore:
Command exited with non-zero status 1.
Vi allego il codice, se poteste dirmi cosa ho sbagliato ve ne sarei grato.
section .text

global _start

_start:
    mov     cx, 14h
    mov     al, 0h
    
    _ciclo:
    inc al
    dec cx
    LOOP _ciclo
    
    mov     [x],  al
    mov     ecx, [x]
    mov     edx, 1
    mov     ebx, 1
    mov     eax, 4
    int     0x80
    mov     eax, 1
    int     0x80

section .data
    x db ''

9 Risposte

  • Re: Assembly NASM - Command exited with non-zero status 1

    Che vuoi fare con

    mov [x], al
    mov ecx, [x]

    ?
  • Re: Assembly NASM - Command exited with non-zero status 1

    Voglio inserire il valore di al in exc, ma dato che non si può direttamente lo faccio tramite x.
  • Re: Assembly NASM - Command exited with non-zero status 1

    Hai dichiarato x come db: 1 byte ma lo leggi come 4 byte. Magari nello specifico non da errore ma in generale è un ORRORE!
    Potevi anche fare:
    
      xor  ecx,ecx
      mov cl,al
    
  • Re: Assembly NASM - Command exited with non-zero status 1

    Shark44 ha scritto:


    Voglio inserire il valore di al in exc, ma dato che non si può direttamente lo faccio tramite x.
    Si può, si può...:

    a) signed:
    movsx ecx, al       esempio al=200 -> ecx=-56

    b) unsigned:
    movzx ecx, al       esempio al=200 -> ecx=200
  • Re: Assembly NASM - Command exited with non-zero status 1

    jj2007 ha scritto:


    Shark44 ha scritto:


    Voglio inserire il valore di al in exc, ma dato che non si può direttamente lo faccio tramite x.
    Si può, si può...:

    a) signed:
    movsx ecx, al       esempio al=200 -> ecx=-56

    b) unsigned:
    movzx ecx, al       esempio al=200 -> ecx=200
    Anche inserendo movzx ecx non funziona, sempre l'errore di cui ho parlato prima.
  • Re: Assembly NASM - Command exited with non-zero status 1

    In ogni caso ho modificato il codice dichiarando x come dd (4 byte), e ora l'errore è cambiato.
    section .text
    
    global _start
    
    _start:
        mov     cx, 14h
        mov     al, 0h
        
        _ciclo:
        inc al
        dec cx
        LOOP _ciclo
        mov     [x], al
        mov     ecx, [x]
        mov     edx, 1
        mov     ebx, 1
        mov     eax, 4
        int     0x80
        mov     eax, 1
        int     0x80
    
    section .data
        x dd ''
  • Re: Assembly NASM - Command exited with non-zero status 1

    ]Quale è l'errore ?
    allora ci sono diversi errori.
    non puoi fare:
    mov [x],al[/code
    per 2 motivi
    1) una variabile non si può autoreferenziare.
    2) sono di tipo diverso.
    x fare quello che vuoi fare devi fare:
    [code]mov ebx,offset x
    mov byte ptr [ebx],al
    mov ecx,x
    altro errore evidente
    sta quando definisci la variabile x
    perchè se devi definire un byte va bene ma per una dword non va bene in quanto mancano altri 3 valori!
    per ovviare a questo problema ti consiglio
    x dd ?

    all'interno del ciclo non serve la dec cx perchè l'operazione viene svolta dall'istruzione loop
  • Re: Assembly NASM - Command exited with non-zero status 1

    Scusa se ti rispondo dopo 12 giorni, in ogni caso nè ptr nè ? sono ammessi in NASM, a quanto mi dice il compilatore.
  • Re: Assembly NASM - Command exited with non-zero status 1

    Scusa per la sintassi quella che ho scritto e masm
    per quanto riguarda il ptr in nasm come giustamente dicevi non c'è bisogno
    basta fare mov byte[x],al
    mentre al posto di ? puoi mettere 0
    comunque un buon forum su nasm è il seguente:
    https://forum.nasm.us
    comunque credo che esista anche in italiano.
    spero di averti aiutato
Devi accedere o registrarti per scrivere nel forum
9 risposte