19 Sep 2019 - 22:58--=[Computer]=----=[Computer]=----=[Musica]=----=[Musica]=----=[Geometra]=----=[Geometra]=----=[Download]=----=[Download]=----=[Link]=----=[Link]=----=[Articoli]=----=[Articoli]=--
Indice Computer Computer/ Programmazione/ Assembly/ Ps/ Capitolo 6/


Esempi di programmi Assembler


Per illustrare l'uso del linguaggio Assembler, riportiamo alcuni semplici programmi, cominciamo dal predisporre un file di nome servizio contenente i due sottoprogrammi di utilità (tastiera e video) e le istruzioni per il ritorno al DOS.
» visualizza «

Il contenuto di questo file si basa si servizi standard offerti dal DOS stesso. Senza entrare nel merito di come sono strutturati tali servizi, limitandoci a dare una descrizione funzionale dei due sottoprogrammi tastiera e video e precisare le convenzioni da rispettare affinchè essi siano utilizzati correttamente (passaggio dei parametri). Per quanto concerne invece le sistruzioni di ritorno al DOS, esse possono essere invocate mediante l'istruzione di salto JMP dos.

Ingresso da tastiera della codifica ASCII di un carattere
Nome del sottoprogramma: tastiera
AZIONE: Attende che sulla tastiera sia premuto un tasto e, quando ciò accade, immette in AL la codifica ASCII del carattere stampigliato sul tasto.

Emissione su video della codifica ASCII di un carattere
Nome del programma: video
AZIONE: Invia sul video il contenuto di AL. Se il registro AL contiene la codifica ASCII di un carattere scrivibile, il carattere stesso appare sul video nella posizione attuale del cursore e il cursore avanza di una posizione.


Programma che invia un messaggio


Il seguente programma invia su video un messaggio opportuno. Nella sezione dati è definita la variabile di tipo stringa mess: questa viene considerata come una variabile vettoriale, con componenti tipo byte. La lunghezza del messaggio è data differenza tra gli indirizzi fine_mess (indirizzo della locazione successiva a quella contente l'ultimo carattere del messaggio). Nella sezione testo è anzitutto prevista l'incluzione del file servizio. In questa sezione è contenuto il programma principale. Il registro EBX funge da registro puntatore: esso viene iniazializzato con l'indirizzo della variabile mess, e viene incrementato a ogni ciclo. Il carattere selezionato viene quindi inviato su video. Il registro CX è usato come contatore dei passi da effettuare. Infine, il programma attende che venga premuto un tasto e, quando ciò accade, esso termina con il ritorno al DOS.
» visualizza esempio «
Per produrre l'esecuzione del programma occorre dare i seguenti comandi:
as mess.s -o mess.o ld mess.o -o mess.e go32 mess.e
L'organizzazione del programma precedente può essere modificata, utilizzando il sottoprogramma invia per inviare il messaggio su video. I parametri del sottoprogramma sono due:
  • indirizzo del messaggio;
  • numero di caratteri di cui è formato il messaggio stesso.
I parametri vengono trasmessi nei registri EBX contiene del messaggio e CX il numero di caratteri.
» visualizza esempio «


Programma che esamina la codifica di un carattere


Il seguente programma è costituito da un programma principale e da un sottoprogramma. Nel programma principale viene letto un carattere e, se uguale al carattere CR, si ritorna al DOS, altrimenti viene richiamato il sottoprogramma asamina. Il sottoprogramma trasforma gli 8 bit di codifica sel carattere nei corrispondenti 8 caratteri '0' oppure '1': a tal fine esamina i vari bit del carattere, eseguendo in sequenza il test del bit più significativo e una traslazione logica a sinistra.
I parametri del sottoprogramma sono due:
  • codice del carattere da esaminare;
  • indirizzo della variabile risultato.
I parametri sono trasmessi nei registri: AL contiene il codice del carattere, EBX contiene l'indirizzo della variabile risultato (vettore di 8 byte). Alla fine, nel programma principale viene inviato su video sia il carattere originario (contenuto in AL), sia gli 8 carattreri corrispondenti ai singoli bit di codifica (variabile kappa). Il tutto viene poi ripetuto ciclicamente.
» visualizza esempio «

Vai Precedente
Vai Indice
--=[Home page]=----=[Home page]=----=[Forum]=----=[Forum]=----=[lingua]=----=[lingua]=----=[Statistiche]=----=[Statistiche]=----=[Cerca in questo sito]=----=[Cerca in questo sito]=----=[Info sul copyright]=----=[Info sul copyright]=----=[Scegli le impostazioni che preferisci]=----=[Scegli le impostazioni che preferisci]=----=[Scrivi al webmaster]=--
vPHPvHTMLvCSS