Sezione

Indirizzi Base Registri Interni
Area Comunicazione BIOS Funzioni BIOS Funzioni DOS
Prefazione Capitolo 1 Capitolo 2 Schede
Libreria ASM Libreria MAC Palestra Progetti ASM
Info Download INDICE

Capitolo 1

Home » Programma il Computer » Tutorial Assembly

Capitolo 1 - Il processore - Il Debugger

  Il Processore e il Debugger

I BUS DEI PROCESSORI 5/6 [10 di 60] 

    

    Il Bus degli INDIRIZZI con i Dispositivi di I/O
     
bulletIn chiusura della pagina precedente abbiamo sottolineato che il processore è in grado di distinguere tra memoria e dispositivo di I/O, semplicemente fissando uno dei 2 livelli logici possibili sulla sua linea di controllo MEM/IO.
bulletSulla base di questa premessa vediamo di analizzare ora il problema dell'indirizzamento delle periferiche; di certo la CPU deve poterle coinvolgere quando lo ritiene necessario e non può permettersi canali privilegiati, cosicché il medesimo bus degli indirizzi utilizzato per la memoria sarà usato anche per chiamare in lettura (con le linee di controllo MEM/IO e RD entrambe a 0) e/o in scrittura (con MEM/IO e WR entrambe a 0) i dispositivi di I/O.

      

bulletI progettisti dei processori 80x86 hanno stabilito fin dall'inizio di destinare per questo scopo solo una parte delle linee di indirizzo disponibili: attualmente solo le prime 16 (poco meno della metà...) vengono coinvolte nelle operazioni di IN/OUT, per cui è facile prevedere la possibilità di gestire fino a 65536 (216) dispositivi d'ingresso ed altrettanti d'uscita.

      

bulletNei primi modelli (tra cui l'8086) le linee d'indirizzo coinvolte erano per altro solo 10, per cui il numero di dispositivi gestibili era ridotto a 1024 (210) d'ingresso ed altrettanti d'uscita.
bulletE' dunque chiaro che, per programmare un dispositivo a basso livello, è necessario conoscere il suo nome binario, il suo indirizzo base.
bulletAd ogni oggetto, presente sulla scheda madre del tuo Computer o raggiungibile attraverso le sue porte di I/O, viene affidato un numero esadecimale a 16 bit, in grado di farlo riconoscere; al processore basterà, per poterlo controllare, mettere questo numero sul bus address.

      

Suggerimento Non tutte le linee del bus address sono coinvolte nelle operazioni verso i dispositivi di Input e di Output.

      

bulletSebbene non sia un'affermazione assoluta, nella gran parte dei casi l'indirizzo del dispositivo concorrente sarà predisposto nel registro DX che, con i sui 16 bit è più che sufficiente per esprimerlo; in senso figurato si può parlare di nome del dispositivo, sottolineando che ogni periferica sarà identificabile con un numero esadecimale unico e dedicato.
bulletCome per la lettura o la scrittura della memoria anche quella dei dispositivi si realizza facendo eseguire al processore un'istruzione specifica.
bulletOra però il flusso dei dati è legato all'istruzione stessa: la periferica fornisce il dato al processore con l'istruzione IN, e lo riceve con l'istruzione OUT:
bulletl'istruzione IN AL,DX si legge così: metti in AL il dato proveniente dalla periferica il cui indirizzo è indicato dal contenuto di DX.
bulletsi tratta dunque di un'operazione di lettura di periferica.
bulletobbliga il processore a scrivere sui primi 16 bit del bus address l'indirizzo fisico ottenuto dal contenuto del suo registro DX.
bulletnon appena l'indirizzo è stabile il processore mette MEM/IO  a 0 e RD a 0, obbligando il dispositivo a copiare la sua informazione sul bus dati.
bulletil processore si mette in attesa sul bus dati per catturare l'informazione in arrivo e, non appena è disponibile, la trascrive nel suo registro AL.
bulletse la periferica è lenta potrebbe anche fornire in ritardo questo dato: la CPU infatti non rimane in attesa all'infinito; per questa ragione, nelle operazioni di IN dai dispositivi,  possono essere necessarie interfacce più efficienti.
bulletse il processore fosse un 8086 e il contenuto del suo registro DX  fosse 0379H , sul bus address verrebbe posto il numero  fisico 00379H (a 20 bit) e sul bus dati (e poco dopo, in AL) verrebbe a trovarsi il byte (8 bit) proveniente dal Registro d'ingresso della porta parallela.
bulletl'istruzione OUT DX, AL si legge così: spedisci alla periferica il cui indirizzo è indicato dal contenuto di DX il dato contenuto nel registro AL.
bulletsi tratta dunque di un'operazione di scrittura di periferica.
bulletobbliga il processore a scrivere sui primi 16 bit del bus address l'indirizzo fisico ottenuto dal contenuto del suo registro DX.
bulletpoichè il dato gli appartiene (provenendo da un suo registro, AL) il processore lo copia immediatamente sul bus dati, a disposizione del dispositivo d'uscita
bulletdopo qualche istante (non appena indirizzo e dato sono stabili) il processore mette MEM/IO  a 0 e WR a 0, avvisando la periferica che il dato è pronto sul bus dati, a sua disposizione
bulletse la periferica è lenta potrebbe anche perdere questo dato: esso non è infatti disponibile all'infinito; per questa ragione, nelle operazioni di OUT verso i dispositivi,  possono essere necessarie interfacce più efficienti.
bulletse il processore fosse un 8086 e il contenuto del suo registro DX  fosse 0378H , sul bus address verrebbe posto il numero  fisico 00378H (a 20 bit) e sul bus dati (assunto da AL) verrebbe a trovarsi il byte (8 bit) destinato al Registro d'uscita della porta parallela.

      

bulletLa potenza indiscussa dell'Assembly rispetto ad ogni altro linguaggio di programmazione sta nella sua capacità di intervenire nei punti più sensibili del personal computer, mediante l'indirizzamento diretto dei dispositivi.
bulletL'uso diretto di questo strumento va comunque esercitato con molta attenzione e con la consapevolezza di quello che si andrà a fare...
bulletL'elenco degli indirizzi dei principali dispositivi di un PC è disponibile cliccando qui.

    

Pagina Precedente Capitolo 1 Pagina Successiva I BUS DEI PROCESSORI 5/6   Torna alla Home  del Capitolo1 del "Tutorial" Lezioni - Vai al DownLoad dei files DOC Torna al Menu del "Tutorial"
10 di 60
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60

    

CAP. 1 » 1. Processore 80x86 2. Istruzioni 80x86  3. Debug  4. La Grande Libreria
TUTORIAL » Indirizzi Base | Registri Interni | Area Comunicaz. BIOS | Funzioni BIOS | Funzioni DOS
Prefazione | CAP 1 | CAP 2 | Schede | Palestra
Libreria ASM | Libreria MAC | Progetti ASM | Download | Info | Indice
Home 
Pascal|Manuali|Tabelle|Schede
Tutorial Assembly|Palestra Assembler
Aggiungi Giobe®2000 ai preferiti  
Motore
Ricerca
  Rendi Giobe®2000 pagina di Default
© 2001-2010  -  Studio Tecnico ing. Giorgio OBER
Tutti i diritti sono riservati