Calcolatori elettronici/Informazioni generali: differenze tra le versioni
Contenuto cancellato Contenuto aggiunto
Nuova pagina: {{Calcolatori elettronici}} ==Modi di indirizzamento== Esistono 7 '''modi di indirizzamento''' che definiscono come gli operandi possono essere passati. L'assembler 8086 non è un '... |
m Bot: sostituzione tag obsoleti |
||
Riga 1:
{{Calcolatori elettronici}}
==Modi di indirizzamento==
Esistono 7 '''modi di indirizzamento''' che definiscono come gli operandi possono essere passati. L'assembler 8086 non è un '''linguaggio ortogonale''', ma impone dei vincoli sui modi di indirizzamento nei confronti delle istruzioni: ad esempio, l'istruzione <
;Register addressing (<
Gli operandi sono '''registri''' che contengono dati.
;Immediate addressing (<
Gli operandi sono delle '''costanti''', cioè sono memorizzati direttamente all'interno del codice macchina dell'istruzione → il valore massimo è limitato dalla dimensione dell'istruzione. Parole chiave come <
;Direct addressing (<
Gli operandi sono '''offset di memoria''', passati indirettamente tramite i nomi simbolici delle variabili: è compito dell'assemblatore in fase di compilazione, dopo aver assegnato a ogni variabile il proprio offset rispetto al principio del segmento dati<ref>Il sistema operativo deciderà in fase di esecuzione dove collocare il segmento dati all'interno della memoria.</ref>, convertire il nome simbolico nel suo offset.
;Register indirect addressing (<
Gli operandi sono '''offset di memoria''', passati indirettamente tramite nomi di registri racchiusi tra parentesi quadre. Incrementando di volta in volta il contenuto di un registro, è possibile scandire tutta la memoria.
;Base relative addressing (<
Gli operandi sono dati dalla somma tra una costante e un valore recuperato al tempo di esecuzione.
;Directed indexed addressing (<
Gli operandi sono variabili il cui offset viene sommato, al tempo di esecuzione, all'indice. È molto usato per la scansione di vettori.
;Base indexed addressing (<
Gli operandi sono variabili il cui offset viene opportunamente sommato a due indici e facoltativamente a una costante.
Gli indici non funzionano come in C, ma si deve specificare l'offset di un elemento tenendo conto dell'effettivo numero di bit di cui sono composti gli operandi precedenti: <
==Pseudo-istruzioni==
Le '''pseudo-istruzioni''' non si trasformano in codice macchina che verrà eseguito dal processore, ma sono solo delle direttive per l'assemblatore.
;Definizione di variabili (<
Per definire un vettore si può utilizzare l'istruzione <
:<
<
;Gestione dei segmenti (<
A seconda delle esigenze di memoria, è possibile specificare all'assemblatore quale modello di memoria (es. <
==Operatori==
;Modifica del tipo di una variabile (<
Anteponendo <
==Note==
|