• Regolamento Macrocategoria DEV
    Prima di aprire un topic nella Macrocategoria DEV, è bene leggerne il suo regolamento. Sei un'azienda o un hosting/provider? Qui sono anche contenute informazioni per collaborare con Sciax2 ed ottenere l'accredito nella nostra community!

Problema risolto piccolo aiuto:linguaggio Assembly

hackergame

Utente bannato
Autore del topic
6 Giugno 2012
26
0
Miglior risposta
0
Salve a tutti :emoji_slight_smile:
Sto studiando il linguaggio Assembly visto che con il Visual Basic,il C e il C++ e anche un po' il Visual C# me la cavo..Siccome è da poco che lo studio ( ovviamente ho studiato tutto da autodidatta,anche i linguaggi sopra citati ) e ho solo 15 anni e quindi non ho l'esperienza di uno di 20 anni o più,volevo chiedervi se,per far apparire un messaggio,il solito Hello World,sia giusto questo codice in linguaggio Assembly:

.model small
.stack
.data
mess1 db 'Hello World',00h
.code

mov ax,@data
mov ds,ax

mov bx,offset mess1
mov di,0000h
visualizza:
mov al,byte ptr[bx+di]
cmp al,00h ;al=fine?
je continua ;SI:esci dal ciclo

mov ah,0Eh ;NO:stampa il carattere
int 10h
inc di
jmp visualiza
continua:
...
fine:
mov ah,4Ch
mov al,00h
int 21h
end




Grazie in anticipo per le vostre risposte e spero che rispondiate presto perchè se no non posso andare avanti con lo studio ;)
 
Riferimento: piccolo aiuto:linguaggio Assembly

Salve a tutti :emoji_slight_smile:
Sto studiando il linguaggio Assembly visto che con il Visual Basic,il C e il C++ e anche un po' il Visual C# me la cavo..Siccome è da poco che lo studio ( ovviamente ho studiato tutto da autodidatta,anche i linguaggi sopra citati ) e ho solo 15 anni e quindi non ho l'esperienza di uno di 20 anni o più,volevo chiedervi se,per far apparire un messaggio,il solito Hello World,sia giusto questo codice in linguaggio Assembly:

.model small
.stack
.data
mess1 db 'Hello World',00h
.code

mov ax,@data
mov ds,ax

mov bx,offset mess1
mov di,0000h
visualizza:
mov al,byte ptr[bx+di]
cmp al,00h ;al=fine?
je continua ;SI:esci dal ciclo

mov ah,0Eh ;NO:stampa il carattere
int 10h
inc di
jmp visualiza
continua:
...
fine:
mov ah,4Ch
mov al,00h
int 21h
end




Grazie in anticipo per le vostre risposte e spero che rispondiate presto perchè se no non posso andare avanti con lo studio ;)
L'assembly di che architettura?
 
Riferimento: piccolo aiuto:linguaggio Assembly

In che senso?Posso solo dirti che sto studiando da un manuale trovato su internet e parla dell'Assembly 8086
 
Riferimento: piccolo aiuto:linguaggio Assembly

In che senso?Posso solo dirti che sto studiando da un manuale trovato su internet e parla dell'Assembly 8086

Nel senso che come dovresti sapere l'assembly è un linguaggio a basso livello ed è appena sopra il linguaggio macchina; dunque ogni processore (o famiglia di processori) possiede un set di istruzioni proprio. Ovviamente le istruzioni base sono all'incirca uguali per tutti, ma la sintassi può cambiare... comunque se pensi di programmare in assembly con lo stesso approccio che fai con linguaggi ad alto livello come C o Java sei un po' fuori strada. L'assembly serve per creare programmi tendenzialmente non troppo complessi e in cui il tempo e la gestione delle risorse è un fattore fondamentale (per esempio un programma che serve per misurare la velocità in un autovelox, la macchina che prende i soldi alla pompa di benzina o la gestione dei movimenti di un robot). Io conosco l'assembly del MIPS e per fare hello world serve una cosa di questo tipo
Codice:
Perfavore, Entra oppure Registrati per vedere i codici!
All'inizio con la direttiva .data dico all'assemblatore di memorizzare quello che segue nel segmento dati (non avendo specificato l'indirizzo della memoria uso quello di default 0x10010000). Successivamente con la direttiva .asciiz memorizzo la stringa indicata (compresa del terminatore di stringa \0; l'etichetta ciao rappresenta l'indirizzo di memoria in cui ho caricato la stringa Hello world). Con .text indico all'assemblatore che ciò che segue va messo nel segmento di testo della memoria (quindi il codice vero e proprio). Con la carico nel registro $a0 il valore contenuto nell'indirizzo di memoria indicato dall'etichetta precedente; con li carico nel registro $v0 il valore 4 che mi serve per effettuare la syscall che stampa il valore che ho deciso nella console. Le ultime due istruzioni servono per terminare l'esecuzione del programma.
 
Riferimento: piccolo aiuto:linguaggio Assembly

AH ok..pensavo si potessero programmare programmi complessi..comunque grazie per l'informazione ;)
 
Riferimento: piccolo aiuto:linguaggio Assembly

Credo il problema sia risolto.

Sposto e rinomino.