PDA

Visualizza la versione completa : Imparare l' assembly


KrOW
22-03-2009, 13:41
Ciao a tutti ... Conosco abbastanza il c++ (premettendo che sono un autodidatta) e vorrei entrare nel mondo della programmazione in assembly ... A questo proposito, vorrei sapere:
E' possibile imparare l' assembly da autodidatta???
Se si, potreste consigliarmi dei testi (o risorse online) da cui possa imparare (possibilmente in italiano)???
Ringrazio anticipatamente ...

alfredo92
22-03-2009, 14:34
Imparare l'assembly da autodidatta non è facile ma nemmeno impossibile. Per avere un introdizione al linguaggio dai un'occhiata qui:
http://it.wikibooks.org/wiki/Assembly
Anche se per usarlo abbastanza bene dovresti orientarti su guide cartacee

KrOW
22-03-2009, 19:17
Grazie per la risposta . . . Lo sò che la miglior cosa è attingere da testi cartacei (è stato cosí anche col c++) ma vorrei fare un acquisto sicuro, cioè non vorrei ritrovarmi in mano un testo che non sarei in grado di capire . . . Quindi quale testo mi consigli???

xshell
23-03-2009, 22:34
Fidati, segui i consigli che ti ho dato precedentemente.

1) Impara i fondamenti di elettronica digitale: algebra di commutazione (che molto probabilmente già conoscerai), porte logiche, circuiti combinatori (tra cui i multiplexer, i demultiplexer, i sommatori e i moltiplicatori), circuiti sequenziali (in sostanza i bistabili, conosciuti come flip-flop, parola onomatopeica che deriva dal suono "flip" e "flop" che fa un relé, anche se sono tutt'altra cosa... sono i circuiti elementari che costituiscono la RAM... infatti un flip-flop singolo riesce a memorizzare un singolo bit...), i registri a scorrimento (insiemi di flip-flop e circuiti combinatori) e infine le macchine a stati finiti (FSM).

Tali nozioni non sono molto complesse, ma se vuoi masticare assembly devi avere pazienza e studiarle.

2) Poi ti consiglierei, come ti ho già detto, di cominciare con l'assembly del processore Zylog Z80. Abbastanza semplice. Se lo imparerai bene, non avrai molte difficolta a passare allo studio di assembly più complessi e con più parole chiave: il sistema degli assembly è identico. Leggi il PM.

Prima parti con la dispenza e il simulatore che ti ho dato. Completa tutti gli esercizi sul simulatore e testa il programma (se non ti riesce qualcosa, chiedi pure aiuto... li ho già completati tutti, anche se a fatica). Poi compra un vero Zylog Z80, e un programmatore (con l'assembler) e una scheda... puoi scegliere tra la breadboard oppure una scheda forata (millefori) di rame o stagno (in questo caso però c'è la necessità di fare delle piccole saldature... e il processore non si stacca più... io ti consiglio di optare per una breadboard abbastanza grande)... cerca su Google che cos'è la breadboard e la scheda millefori. Poi compra delle lucine e crea dei programmi per creare dei luminari per il prossimo natale, che si accendono e spengono a intermittenza (se usi dei resistori graduati, ossia i cosiddetti "trimmer", puoi anche fare accendere e spegnere le lucine gradualmente... ma questo lo farai se ne avrai voglia per puro "divertimento" (ogni hanno preparo nuovi luminari... è un passatempo per me, molto divertente). :D

oregon
23-03-2009, 22:43
Originariamente inviato da xshell
Zylog Z80

Ti correggo solo perche' sono affezionato al glorioso Zilog Z80 ... :)

In linea di massima sono d'accordo che l'elettronica digitale si dimostri un aiuto per l'apprendimento dell'assembly (a me e' servita tantissimo in questo senso) ma non sarei cosi' categorico ... prova anche senza ...

Inoltre, non ti consiglio la CPU Z80 per iniziare, ma la 6502 ... poche istruzioni, molto chiare e potenti per capire il "meccanismo" ...

Poi, passa alla 8088 e seguenti ...

xshell
23-03-2009, 22:45
Originariamente inviato da oregon
Ti correggo solo perche' sono affezionato al glorioso Zilog Z80 ... :)

In linea di massima sono d'accordo che l'elettronica digitale si dimostri un aiuto per l'apprendimento dell'assembly (a me e' servita tantissimo in questo senso) ma non sarei cosi' categorico ... prova anche senza ...

Inoltre, non ti consiglio la CPU Z80 per iniziare, ma la 6502 ... poche istruzioni, molto chiare e potenti per capire il "meccanismo" ...

Poi, passa alla 8088 e seguenti ...

Ops... :zizi: Hai ragione!

Io gli ho consigliato il Zilog Z80, perché lui ha un simulatore inventato di un processore (non esistente realmente) che ha la sintassi molto simile a tale processore. Una specie di Z80 semplificato.

Ecco il simulatore del mio mitico professore:

http://img9.imageshack.us/img9/1613/senzanome3s.png (http://img9.imageshack.us/my.php?image=senzanome3s.png)

Come puoi notare, A, B, D, E, H ed L, sono i nomi dei registri. A è il registro ALU riservato per le operazioni aritmetiche. Quella serie di zero sono i bit registrati, che durante l'esecuzione cambieranno stato a seconda del codice assembly. A destra invece hai le locazioni di memoria. Le prime 800 cellette (in esadecimale) sono riservate. Le altre memorizzeranno i dati che immetterai. La colonna a destra ti presenta la codifica ASCII del dato immesso.

KrOW
24-03-2009, 01:15
Grazie per i consigli . . . Li terrò a mente . . .

oregon
24-03-2009, 01:25
Originariamente inviato da xshell
... A è il registro ALU ...

Conosco l'assembly (dello Z80 in particolare ...) ... probabilmente ci lavoravo quando tu (forse) avevi i pantaloncini corti ... :)

E in realta' A non e' il "registro ALU", ma il "registro accumulatore", collegato con l'ALU (che e' una unità funzionale interna dedicata alle operazioni Aritmetico Logiche).

-UtèñtE-
24-03-2009, 05:37
Elettronica digitale, schede forate... capisco che siano splendidi argomenti che consiglierei a chiunque, però vuole imparare l'assembler, non la microprogrammazione dei chip o la loro realizzazione hardware :D

Credo che conoscere a livello software gli elementi base sia più che sufficiente, visto che alla traduzione a livello elettronico ci pensa comunque il processore, anche se scrivi in linguaggio macchina binario :)

Credo che la guida che ti hanno linkato sia una buona introduzione, se poi giustamente preferisci il cartaceo, vai in una libreria scientifica, sfoglia e scegli quello che lo spiega nel modo più adatto a te... io col crescere della complessità degli os ho mollato quel mondo perchè ormai ci realizzi davvero poco... le chiamate di sistema son aumentate in maniera esponenziale e diventano ingestibili senza librerie di medio livello... quindi non ti so consigliare una guida ancora in stampa :zizi:

Chiaramente se lo fai per pura curiosità, il passo successivo sarà quello che ti citava xshell... quindi, se hai l'età giusta, ti consiglio d'iscriverti in ingegneria informatica, altrimenti di acquistarti per conto tuo i testi dei corsi, nell'ordine consigliato dal corso di studi, è un percorso completo ed un'ottima alternativa alle droghe :)

XWolverineX
24-03-2009, 10:48
Noi al corso di calcolatori elettronici (tenuti da un pirla, purtroppo) stiamo facendo le reti logiche (mitermini, maxtermini, mappe di Karnaugh, implicanti) e dovremmo usare il Motorola 68000.

Loading