DOMANDA Generazione indirizzo fisico Intel8086

Pubblicità

Matteo34

Nuovo Utente
Messaggi
104
Reazioni
3
Punteggio
45
Scusate, non ho ben capito a cosa serve la generazione degli indirizzi fisici e come avviene, qualcuno me la potrebbe spiegare?
Per esempio per quale motivo per inizzializare il registro SP(stack pointer) il processore esegue l'offset tra il reegistro di segmento SS e il registro puntatore SP (SS:SP), non basterebbe copiare il valore del registro SS nel registro SP così da contenere l'indirizzo di end of stack, se non sbaglio lo stack viene inizializzato da indirizzi bassi verso alti no?
Sono in totale confusione
 
Non è questione di direzione, ma di dimensione. I registri dell'8086 erano a 16 bit, cioè max 64K indirizzabili. E' chiaro che non sarebbero andati lontano.

La furbata fu di usare i segmenti per allargare lo spazio d'indirizzamento fisico a 20 bit. In pratica si prende il valore del registro segmento, lo si shifta di 4 bit a sinistra e il risultato si somma al registro indice/puntatore.

Così si può costruire un indirizzo fisico di 20 bit ( 1Mega ) a partire da due registri a 16 bit.
 
Integro con alcuni altri elementi il post di pabloski.

Il problema è dovuto di fatto al bus indirizzi che è a 20bit, mentre il bus dati è a 16bit (e i registri sono a 16bit).

Il registro SP (così come gli altri) è a 16bit. Quindi non puoi indirizzare memoria superiore a quella che puoi contenere in 16bit.

L'operazione che avviene è quella spiegata da pabloski, in pratica se hai un segmento 1234h e un offset 0005h, l'indirizzo fisico sarà (1234h * 10h) + 0005h = 12345h (al posto della moltiplicazione, puoi appunto usare lo shift). In questo modo l'indirizzo fisico supera la limitazione dovuta ai registri: visto che l'address bus è a 20bit, facendo così, si è in grado di sfruttare tutto l'address bus.
Da notare che i segmenti sono anche parzialmente sovrapposti.

Ad ogni modo, lo stack "cresce verso il basso" (l'indirizzo iniziale è quindi alto, e viene decrementato con l'inserimento dei valori).
 
E poi arrivo' la memoria estesa col gate a20, che estendeva al 21esimo bit.

La modalita real-mode non e' esclusiva di <=286, il processore parte ancora in real mode, il bios puo passare in protected->long per eventuali test di memoria ma poi deve tornare in real-mode

Quello che si sovrappone (somma) sono i 12 bit centerali dei 20.
 
Pubblicità
Pubblicità
Indietro
Top