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


Corpo della sezione testo


Il corpo della sezione testo è costituito, oltre che da eventuali direttive, dalle istruzioni del programma principale e dei vari sottoprogrammi.
Le istruzioni in linguaggio assembler sono simili a quelle del linguaggio simbolico usato in organizzazione software: per esempio, il campo CODICE del linguaggio Assembler coincide con il campo OC del linguaggio simbolico. Come caratteristica ulteriore, poichè alle istruzioni e alle pseudo-istruzioni può essere assegnato un nome simbolico, i campi source e destination possono contenere nomi di variabili o di istruzioni.
Si utilizzano inoltre le seguenti convenzioni:
  • i nomi dei registri vengono fatti precedere dal carattere '%'
  • un operando immediato viene fatto precedere dal carattere '$'
  • un indirizzo di memoria assume la seguente forma generale:
                 spiazzamento (registro)
    dove una delle due componenti può anche mancare.



Riferimento alle variabili


L'accesso alle variabili (per operare sulle loro componenti) comporta l'utilizzo di opportune forme di indirizzamento. Nel caso in cui si riferiscono variabili scalari, è spesso sufficiente l'uso dell'indirizzamento diretto, mentre nel caso in cui si riferiscono variabili vettoriali si utilizza spesso l'indirizzamento indiretto o quello modificato con registro indice.
Per evidenziare alcuni casi comuni, consideriamo la seguente sezione dati, in cui è dichiarata una variabile scalare alfab e due variabili vettoriali vettaw e vettbw:
.DATA alfab: .BYTE 0 vettaw: .FILL 50,2 vettbw: .FILL 50,2
La variabile scalare alfab può essere così riferita (un'istruzione deve sempre specificare la lunghezza degli operandi):
#indirizzamento diretto di alfab MOVB alfab,%AL
La componente i-ma (i=0,1) della variabile vettoriale vettaw può essere così riferita:
#indirizzamento indiretto (registro puntatore EBX) MOVL $vettw,%EBX ... porzione di programma in cui il contenuto di EBX viene globalmente incrementato di 2*i ... ADDW %AX,(%EBX)
Le componenti i-me (i=0,1,...) delle variabili vettoriali vettaw e vettbw possono essere così riferite:
#indirizzamento con registro indice (registro indice EBX) MOVL $0,%EBX ... porzione di programma in cui il contenuto di EBX viene globalmente incrementato di 2*i ... MOVW vettaw(%EBX),%AX ADDW %AX,vettbw(%ESI)
Riferimento ad altre istruzioni


Nel linguaggio Assembler, il nome simbolico assegnato a un'istruzione può essere utilizzato per riferire questa nelle istruzioni di controllo. L'assemblatore traduce l'istruzione di salto o di chiamata di sottoprogramma nel formato che prevede l'indirizzamento relativo, calcolando il valore numerico dello spiazzamento (il nome sostituisce la scomoda indicazione EIP+spiazzamento del linguaggio simbolico).
Il seguente spezzone di programma mostra la simbologia utilizzata.
» visualizza esempio «


Riferimento alla porte di I/O

Come detto in organizzazione software, le istruzioni di ingresso/uscita possono indirizzare la porta di I/O mediante indirizzamento diretto (indirizzo dell'istruzione, se questo è minore di 256) o indiretto (indirizzo nel registro). Viene però utilizzata la simbologia propria dell'indirizzamento immediato e dell'indirizzamento di registro, rispettivamente.
Per l'ingresso dati si possono avere i seguenti casi:
.SET PORTA,indirizzo_io ... MOVW $PORTA,%DX INB %DX,%AL ... #se porta è minore di 256 INB $PORTA,%AL
Una cosa analoga vale per quanto riguarda l'uscita.


Inizializzazioni

Notare che l'inizializzazione del registro ESP (che determina la dimansione della pila) viene effettuata dal caricatore prima di mandare in esecuzione il programma. Notare che il caricatore effettua anche l'inizializzazione del registro EIP, con l'indirizzo corrispondente al nome start, e questa azione corrisponde alla messa in esecuzione del programma stesso.

Vai Prossimo
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