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.
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.
# 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).
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).