Nel Febbraio 2000 ho dovuto imparare il linguaggio Assembler dell'80x86, per poter superare l'esame di Calcolatori elettronici all'università.
Ho trovato grosse difficoltà nell'imparare un linguaggio così ostico, così diverso dai normali linguaggi di programmazione ad alto livello che ero abituato ad usare. Ma ho anche trovato tutto quello che mi serviva consultando esclusivamente Internet. In poco tempo sono passato dal non sapere quasi niente dell'Assembler alla stesura di un programma tutt'altro che banale, il quale è venuto bene, dato che ha contribuito in larga parte a farmi guadagnare un 30 all'esame.
Così, ho deciso di mettere a disposizione in questa pagina il mio programma, alcuni programmini di prova che mi hanno aiutato nella stesura del programma principale, e tutti i link a documenti e programmi che sono risultati utili nell'apprendimento di questo linguaggio.
Ma prima di iniziare...
Se hai un problema con la programmazione in assembler, prima di fare qualunque cosa leggi attentamente questa pagina! Grazie!
Il programma che ho presentato all'esame si chiama MacBMP ed è un programma, scritto al 100% in Assembler, che carica in memoria un'immagine BMP e permette di effettuare due semplici operazioni su di essa, ovvero la media dei colori di una porzione dell'immagine e la ricerca degli otto colori pił usati.
Il programma funziona in modalità VGA 320x200 a 256 colori, ed è interamente comandato tramite mouse e un'interfaccia grafica a pulsanti. E' in grado di riconoscere tutte i diversi formati di immagini BMP, e di caricare quelle a 2, 16 o 256 colori, sia compresse RLE che non compresse, le cui dimensioni non eccedano quelle dello schermo.
Il listato dimostra quindi come si può utilizzare la modalità VGA, il mouse, come si carica un file da disco, come si decodifica una BMP, in particolare quelle compresse in RLE. Mostra anche un trucchetto per caricare velocemente in memoria della grafica, che viene inglobata nel file eseguibile del programma.
Il compilatore da usare per compilare il sorgente non è l'arcinoto MASM ma NASM, un assemblatore completamente gratuito, che garantisce un controllo assoluto sul programma, e rispecchia da vicino il funzionamento dell'hardware, senza introdurre artifici come invece fa MASM.
Il listato è ampiamente commentato in italiano. Nell'archivio viene distribuita anche la relazione che ho presentato all'esame insieme col programma; può essere utile sia per imparare ad usare il programma (non che sia così difficile), sia per capire il funzionamento del codice sorgente.
Nota bene: leggete la licenza di utilizzo e il file Leggimi.txt.
Marcello Mac Mancini Home Page
by
Marcello Mancini
Versione 3.0