ASM Esercizi Assembly 8086 ?

Stato
Discussione chiusa ad ulteriori risposte.

Hemek

Utente Silver
9 Novembre 2014
57
14
9
61
Salve,
E' da poco che ho cominciato la programmazione in Assembly per CPU 8086, sono veramente alle prime armi con questo linguaggio, quindi stavo vedendo se su internet ci sia qualcosa di veramente semplice da poter realizzare, non sto chiedendo esercizi che vogliono la somma di due numeri ecc.. ma qualcosa di poco più complicato, ad esempio il programma più complesso che sono riuscito a fare io è stato quello per il calcolo dell' MCD (Massimo comune divisore), utilizzando i Jump, ecco cerco qualcosa del genere.
Qualcuno ha esercizi di libri, che conosce o che ha trovato su internet?
Attendo risposte, grazie mille in anticipo
​Hemek
 
prova a risolvere i primi problemi di projecteuler, io avevo iniziato così dopo una buona dose di teoria.

C'è una ragione precisa per cui usi istruzioni a 16 bit? Se non sei obbligato per motivi scolastici io ti consiglio vivamente di passare ad un set di istruzioni a 32 o 64 bit
 
lo so benissimo ed è proprio per questo che ho chiesto, hai una ragione precisa per programmare per l'8086 oppure non ti cambia nulla usare set di istruzioni a 32 o 64 bit per processori più moderni? (se non ti cambia nulla è ben più comodo)
 
Sicuramente più in la lo farò, ma per ora a scuola stiamo utilizzando questi, quindi per il momento preferisco seguire il programma e capire bene come funziona questo linguaggio
 
Sicuramente più in la lo farò, ma per ora a scuola stiamo utilizzando questi, quindi per il momento preferisco seguire il programma e capire bene come funziona questo linguaggio

Chiedo scusa per il ritardo di diversi giorni. Se può interessarle ancora una risposta (tanto non penso che lo studio dell'assembly lo avete finito già prima dell'inizio delle vacanze), ecco cosa le propongo.
Esercizi molto basilari :

- Le 4 operazioni (somma, differenza, frazione, moltiplicazione) di valori pre-assegnati e richiesti all'utente (hai già fatto lettura da tastiera, giusto?)

- Ordinamento (dal maggiore al minore e viceversa) di valori pre-assegnati e richiesti dall'utente

Ahimè questi esercizi per ora vanno abbastanza bene per comprendere il funzionamento dell'assembly.

Io stesso ho avuto modo di svolgere questi esercizi durante lo studio di assembly e posso dire che questo linguaggio è uno dei più semplici. Lungo (1 istruzione in C++ equivale a 50 in assembly), ma certamente facile (poche istruzioni da ricordare). Inoltre apre le porte a molti temi informatici (come il reverse engineering)
 
Ultima modifica:
Dal tuo post sembrava parlassi di assembly in generale (in effetti ho fatto l'assunzione che parlassi di processori intel), anche perchè parlando di reverse engineering immagino che ti riferissi a programmi scritti per processori un pelo più recenti dell'8086.

Comunque il set di istruzioni dell'8086 è composto da 116 istruzioni, che sono già di loro un sacco rispetto al numero di operatori e reserved keywords di molti linguaggi di alto livello.

E questo è proprio il set di istruzioni essenziale, solo aggiungendo l'FPU si introducono una novantina di nuovi mnemonici
 
Dal tuo post sembrava parlassi di assembly in generale (in effetti ho fatto l'assunzione che parlassi di processori intel), anche perchè parlando di reverse engineering immagino che ti riferissi a programmi scritti per processori un pelo più recenti dell'8086

La conoscenza dell'assembly 8086 non può oggi come oggi risultare molto utile per il Reverse Engineering (o almeno penso), ma è certamente un input. A livello didattico ho creato la base proprio con l'assembly 8086 per poi avanzare a processori di architettura più recente, questo era ciò che intendevo. La prossima volta avrò più cura nell'esprimermi.
 
Chiedo scusa per il ritardo di diversi giorni. Se può interessarle ancora una risposta (tanto non penso che lo studio dell'assembly lo avete finito già prima dell'inizio delle vacanze), ecco cosa le propongo.
Esercizi molto basilari :

- Le 4 operazioni (somma, differenza, frazione, moltiplicazione) di valori pre-assegnati e richiesti all'utente (hai già fatto lettura da tastiera, giusto?)

- Ordinamento (dal maggiore al minore e viceversa) di valori pre-assegnati e richiesti dall'utente

Ahimè questi esercizi per ora vanno abbastanza bene per comprendere il funzionamento dell'assembly.

Io stesso ho avuto modo di svolgere questi esercizi durante lo studio di assembly e posso dire che questo linguaggio è uno dei più semplici. Lungo (1 istruzione in C++ equivale a 50 in assembly), ma certamente facile (poche istruzioni da ricordare). Inoltre apre le porte a molti temi informatici (come il reverse engineering)


Purtroppo l'acquisizione da tastiera ancora non l'abbiamo studiata, nemmeno la visualizzazione a video.
Comunque grazie mille vedo cosa riesco a fare
 
  • Mi piace
Reazioni: Sekmet
La conoscenza dell'assembly 8086 non può oggi come oggi risultare molto utile per il Reverse Engineering (o almeno penso), ma è certamente un input. A livello didattico ho creato la base proprio con l'assembly 8086 per poi avanzare a processori di architettura più recente, questo era ciò che intendevo. La prossima volta avrò più cura nell'esprimermi.

Hai ragione, ma nonostante il suo utilizzo sia molto calato negli ultimi anni, per il reverse engineering è ancora necessario nella maggioranza dei casi per lo meno capire l'assembly. Non dico scriverlo o conoscerlo alla perfezione, ma almeno capirne la base si. Ma ripeto, anche questo sta cambiando.
Il merito è del software libero, al quale piano piano tutti, compresa microsoft, stanno lentamente migrando.
 
Hai ragione, ma nonostante il suo utilizzo sia molto calato negli ultimi anni, per il reverse engineering è ancora necessario nella maggioranza dei casi per lo meno capire l'assembly. Non dico scriverlo o conoscerlo alla perfezione, ma almeno capirne la base si. Ma ripeto, anche questo sta cambiando.
Il merito è del software libero, al quale piano piano tutti, compresa microsoft, stanno lentamente migrando.

Cosa intendi quando dici che le cose stanno cambiano per merito del software libero nel contesto dell'assembly?
 
Puo' voler dire solo una cosa: data la disponibilita' di software gratuito, non c'e' piu' la necessita' di dover craccare i programmi commerciali per poterli usare senza pagarli (eufemismo per dire rubare).

Il problema e' che questo modo di ragionare e' molto limitato.

L'assembler ha ancora un suo perche'. Certo, il dominio di utilizzo si sta' sempre di piu' riducendo per la presenza di compilatori sempre piu' efficienti e di librerie di terze parti che sfruttano l'assembler ma mettono a disposizione un'interfaccia a piu' alto livello.

Ad esempio le varie blas, fftw, librerie per la crittografia, la compressione, ...

Ormai il programmatore medio si appoggia sempre di piu' a librerie gia' pronte.
 
  • Mi piace
Reazioni: Tollero
Cosa intendi quando dici che le cose stanno cambiano per merito del software libero nel contesto dell'assembly?

No, intendevo una cosa molto diversa.
Io avevo solo risposto quotando ad un messaggio di sekmet realtivo all'assembly nel reverse engineering, e mi riferivo a quello e basta.
In quel caso specifico confermo che è sempre meno richiesto l'uso dell'assembly, questo perchè tutte le case compresa la Microsoft stanno migrando verso un'altra filosofia, che rende in primis meno utile la produzione di software a pagamento (almeno a livello user), e in seconda battuta sono sempre più presenti linguaggi interpretati dove l'assembly non è una prerogativa.

Naturalmente invece, parlando in generale, in tutti gli ambiti in cui si lavora ad un livello particolarmente basso, l'assembly può diventare un must, per esempio nel caso dello sviluppo di features per nuovi microcontrollori, o cose simili.
Questo però denota nella stragrande maggioranza dei casi una scelta "di vita" professionale ben precisa, che poco ha a che vedere con il comune sviluppo software.

Io personalmente mi sono sempre interessato all'assmbly, perchè mi piace, e comunque tendo a lavorare a basso livello per mia propensione personale. Tuttavia, se dovessi considerare la reale necessità professionale avuta negli anni legata all'assembly, questa sarebbe legata a episodi davvero molto rari.
 
  • Mi piace
Reazioni: MadCoder e Tollero
Stato
Discussione chiusa ad ulteriori risposte.