Repository 32bit  Forum
Repository 64bit  Wiki

bug mini programma assembly

Forum dedicato alla programmazione.

Moderatore: Staff

Regole del forum
1) Citare sempre la versione di Slackware usata e la versione del Kernel. Questi dati aiutano le persone che possono rispondere.
2) Specificare sempre il tipo di shell (bash, sh, csh, etc...)
3) Leggere attentamente le risposte ricevute
4) Scrivere i messaggi con il colore di default, evitare altri colori.
5) Scrivere in Italiano o in Inglese, se possibile grammaticalmente corretto, evitate stili di scrittura poco chiari, quindi nessuna abbreviazione tipo telegramma o scrittura stile SMS o CHAT.
6) Appena registrati è consigliato presentarsi nel forum dedicato.

La non osservanza delle regole porta a provvedimenti di vari tipo da parte dello staff, in particolare la non osservanza dell'ultima regola porta alla cancellazione del post e alla segnalazione dell'utente. In caso di recidività l'utente rischia il ban temporaneo.

bug mini programma assembly

Messaggioda NicoMetal » sab apr 07, 2012 19:54

Qualcuno mi sa dire cosa c'è di errato in questo codice? Non riesco proprio a venirci a capo. È un esercizio in assembly sintassi AT&T. Ciò che non va è che l'output al posto di essere "Il contenuto di somma è: 201" è identico ma con al posto di 201 il simbolo di carattere sconosciuto.

Codice: Seleziona tutto

# Somma i valori 100, 33, 68 e inserisce il loro contenuto
# in eax. Dopodichè copia il contenuto di eax neòlla variabile somma
# e la stampa a video.

.section .data

  messaggio:
         .string  "Il contenuto di somma è: "

  leng_mes:
        .long  . - messaggio

  somma:
        .long 0

  leng_sum:
        .long . - somma

.section .text
  .global _start

  _start:
        movl $100, %eax
        addl $33, %eax
        addl $68, %eax
        movl %eax, somma

# Stampa a video "messaggio"
        movl $4, %eax
        movl $1, %ebx
        leal messaggio, %ecx
        movl leng_mes, %edx
        int $0x80

# Stampa a video il contenuto di somma
        movl $4,%eax
        movl $1, %ebx
        leal somma, %ecx
        movl leng_sum, %edx
        int $0x80

# Uscita programma
        movl $1, %eax
        xorl %ebx, %ebx
        int $0x80


ps. Il problema ho capito qual'è: in pratica mi stampa a video sì il contenuto di somma ma utilizzando la codifica ascii (l'ho capito perchè ho provato ad assegnare solo cento ad eax e poi trasferirne il contenuto in somma. Facendo così l'output è: il contenuto di somma è: d).
Avatar utente
NicoMetal
Linux 2.4
Linux 2.4
 
Messaggi: 366
Iscritto il: dom mag 02, 2010 18:21
Località: Verona
Nome Cognome: Nicola
Slackware: 13.37
Kernel: 3.2.2
Desktop: FluxBox - xfce

Re: bug mini programma assembly

Messaggioda 414N » mar apr 10, 2012 10:25

Beh, ti serve una procedura che ti trasformi un numero binario in un insieme di cifre ASCII, allora ;)
Con una serie di divisioni successive devi estrarre le singole cifre che compongono il tuo numero (unità, decine, centinaia ecc.) e aggiungere ad esse lo 0 ASCII ('0' oppure 30H).
Avatar utente
414N
Iper Master
Iper Master
 
Messaggi: 2845
Iscritto il: mer feb 13, 2008 17:19
Località: Bulagna
Slackware: 14.0 (x64)
Kernel: 3.2.29
Desktop: LXDE


Torna a Programmazione

Chi c’è in linea

Visitano il forum: Nessuno e 2 ospiti