Repository 32bit  Forum
Repository 64bit  Wiki

bug mini programma assembly

Forum dedicato alla programmazione.

Moderatore: Staff

Regole del forum
1) Citare in modo preciso il linguaggio di programmazione usato.
2) Se possibile portare un esempio del risultato atteso.
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 della regola 5 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 18: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 17: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 9: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: 2876
Iscritto il: mer feb 13, 2008 16:19
Località: Bulagna
Slackware: 14.0 (x64)
Kernel: 3.2.29
Desktop: LXDE


Torna a Programmazione

Chi c’è in linea

Visitano il forum: Majestic-12 [Bot] e 2 ospiti