[Assembly]Bus address con la memoria part. II

Andare in basso

[Assembly]Bus address con la memoria part. II

Messaggio  Admin il Lun Ago 22, 2011 12:28 pm

***Attenzione***
Se non capisci qualcosa leggi fino in fondo e rileggi altre volte, se proprio non hai capito, invia la tua domanda replicando a questo post.

Infatti molte delle domande e dubbi che ti puoi essere fatto in precedenza sono scritte in questo post.
***Attenzione***

Ecco finalmente arrivati al pieno di tutto, dopo aver letto lo scorso post sorgono alcune domando (anche a me sono sorte e per capire la risposta ci ho messo un po'):

Il bus address serve per indirizzare, cioè, serve al processore quando deve chiamare in causa una specifica locuzione di memoria oppure un dispositivo; quando la CPU impartisce al bus address di cercagli quella determinata locuzione, il bus degli indirizzi, ne trovo due, ma solo una risponderà al processore, come è possibile?

Per ovviare a questo è stato inventato un filo di controllo che può assumere due livelli binari (i soliti 0 e 1), se il suo livello è 1 sarà la memoria ad intervenire, se è 0 il dispositivo di I/O (Input Output), questa tecnica è praticata fin dai primi processori.

Su un processore 8086 la prima linea di controllo di chiama MEM/IO (MEMoria o Input/Output) e le altre due RD (lettura) e WR (scrittura).

con opportuni piccoli circuiti, detti di decodifica viene evitato ogni conflitto e il processore potrà disporre della locuzione (...o periferica) che voleva, in scrittura o in lettura.

Se ci pensate bene sorge ovvia una domanda:
Chi si incaricherà di suggerire al processore i valori logici con cui impostare le linee di controllo e dove prenderà il numero binario da mettere sul bus address?

La "magia" del processore è quella di eseguire i programmi, quindi basterà soltanto obbligarlo a eseguire quel determinato compito.

Ecco, dopo alcuni post la prima istruzione di Assembly che impareremo: mov.

Di solito la lettura o la scrittura di una locuzione di memoria si realizza facendo l'istruzione mov: spetta alla posizione degli operandi stabilire il flusso dei dati.

L'istruzione mov è varia e multi-forme, ecco alcuni esempi per fissare le idee:

ATTENZIONE: in questo paragrafo ci saranno dei termini a NOI non chiari, ma il senso (...o meglio dire il funzionamento) si capisce, spero che il seguito chiariremo i nostri vari dubbi, ora stai per leggere l'istruzione mov di cui ho intenzione di fare un post a parte, se mi dimenticassi ti prego di dirmelo Very Happy ...un'ultima cosa: per questo paragrafo ho fatto il copia/incolla della guida che uso come riferimento, in quanto non sapevo spiegarlo in altro modo

l'istruzione MOV AL,ES:[DI] si legge così: metti in AL il contenuto della locazione puntata da ES:DI:
-è una lettura di memoria
-obbliga il processore a scrivere sul bus address l'indirizzo fisico ottenuto combinando il contenuto dei suoi 2 registri ES e DI
-non appena l'indirizzo è stabile il processore mette MEM/IO a 1 e RD a 0, obbligando la memoria a copiare sul bus dati il contenuto della
locazione puntata dall'indirizzo predisposto sul bus address (i due bus hanno compiti diversi).
-il processore si mette in attesa sul bus dati per catturare l'informazione in arrivo e, non appena è disponibile, la scrive nel suo registro
AL.
l'istruzione MOV DS:[SI], AL si legge così: metti nella locazione puntata da DS:SI il contenuto del registro AL:
-è una scrittura di memoria
-Obbliga il processore a scrivere nel bus address l'indirizzo ottenuto combinando il contenuto dei suoi due registri DS:SI
-poichè il dato gli appartiene (provenendo da un suo registro, AL) il processore lo copia immediatamente sul bus dati, a disposizione della
memoria
dopo qualche istante (non appena indirizzo e dato sono stabili) il processore mette MEM/IO a 1 e WR a 0, obbligando la memoria a prelevare il dato dal bus dati e a copialo nella locazione puntata dall'indirizzo predisposto sul bus address.se il processore fosse un 8086 e il contenuto dei suoi registri fosse DS=1234H e SI=0000H, sul bus address verrebbe posto l'indirizzo fisico 12340H (sempre a 20 bit) e sul bus dati (e poco dopo, anche dentro la locazione) verrebbe a trovarsi il byte (8 bit) contenuto nel registro AL.

Un saluto!
avatar
Admin
Admin
Admin

Messaggi : 148
Punti : 15442
Reputazione : 0
Data d'iscrizione : 24.04.11
Età : 39
Località : Emiglia Romagna

Visualizza il profilo http://c88software.blogspot.com

Torna in alto Andare in basso

Bus address con la memoria part. II

Messaggio  giobe2000 il Lun Set 19, 2011 2:45 pm

Guarda il testo originale: Indirizzare la memoria [2].

giobe2000

Messaggi : 14
Punti : 13200
Reputazione : 10
Data d'iscrizione : 02.09.11

Visualizza il profilo

Torna in alto Andare in basso

Torna in alto

- Argomenti simili

 
Permessi di questa sezione del forum:
Non puoi rispondere agli argomenti in questo forum