..Come migliaglia di altri termini viene italianizzato in modo errato..Portando così ad una sbagliata terminologia o comunque alquanto strana forma se si conosce la reale provenienza!..Il termine porta inteso come punto di connessione per periferiche esterne al pc per lo scambio di dati è stato coniato negli anni '80 ed è derivato da port..Per chi conosce l'inglese o comunque sa il significato di port non sarà stato difficile comprendere il grande errore fatto nella italianizzazione del termine!..
..PORT = PORTO..
..Perchè porto?..Perchè porto inteso come metafora rappresenta il punto di partenza e di arrivo di impulsi elettrici dall'esterno e quindi facile arrivare al collegamento realizzato dalla terminologia inglese e non da quella italiana..Così se qualcuno correttamente dice porto USB si vedrà attorniato da gente incuriosita o alquanto divertita..E' strano ma è così!..Lo so sembra un pò particolare adesso dire PORTO PARALLELO ma sarebbe il modo corretto!..Comunque tutto questo per iniziare una lezioncina introduttiva allo scambio di dati fra porti in ASM..
..Per utilizzare al meglio il porto parallelo si dovrebbe utilizzare una scheda PCI aggiuntiva poiché il porto parallelo integrato sulla scheda madre è specializzato e dedicato all'utilizzo delle stampanti e per questo saremo costretti ad utilizzare dei piccoli accorgimenti se per l'appunto decideremo di utilizzare quello integrato!..
..ATTENZIONE: LE POCHE ISTRUZIONI CHE SEGUONO SONO A SCOPO ILLUSTRATIVO E DIDATTICO CON DATI E INDIRIZZI CASUALI E NON POSSONO ESSERE APPLICATE DIRETTAMENTE. L'ERRATO UTILIZZO POTREBBE DANNEGGIARE A LIVELLO HARDWARE IL VOSTRO PC!..
..Vi ricordo che per comunicare attraverso un porto si devono gestire degli impulsi elettrici che potrebbero, se utilizzati in maniera errata, danneggiare il pc seriamente!..
..Cominciamo con l'inviare un solo byte..Per iniziare abbiamo bisogno di due dati o valori..Uno è il dato da inviare, l'altro è l'indirizzo della porta!..
..PICCOLO RIPASSO:
- Code: Select all
mov al,3ch
mov [2000],al
..Questa istruzione non fa altro che portare alla locazione di memoria 2000 il byte 3ch..Un'operazione semplicissima e velocissima che per esempio viene ripetuta migliaglia, milioni di volte dal nostro pc anche quando con molta semplicità aggiorniamo lo schermo e l'immagine che ne risulterà sarà costruita pixel a pixel con le istruzioni sopra indicate..
..Tornando ai porti le istruzioni rimangono più o meno simili tranne che per alcuni dettagli:
- Code: Select all
mov al,3ch
mov dx,0300h
out dx,al
..Queste istruzioni come facilmente intuibili definiscono il valore di al ad 3ch e in dx l'indirizzo questa volta del porto e non della memoria!..Con la funzione out è facilmente intuibile il risultato e cioè che il byte 3ch viene sparato fuori dal nostro porto parallelo ad un ipotetico indirizzo 0300h..
ATTENZIONE: L'INDIRIZZO DELLA PORTA SERVE SOLO DA ESEMPIO. I VARI PC POTREBBERO AVERE INDIRIZZI DIVERSI. IN QUESTO CASO E' STATO PRESO UN VALORE A CASO!.. NON UTILIZZARE QUESTO INDIRIZZO!..
..A questo punto il nostro byte dovrebbe essere saltato fuori dal porto parallelo attraverso gli 8 piedini utilizzati per l'output..
7 - 0
6 - 0
5 - 1
4 - 1
3 - 1
2 - 1
1 - 0
0 - 0
..Da 0 a 7 sono gli otto piedini o pin mentre 0011 è il 3 in binario e 1100 è la c sempre in binario..Spesso i porti paralleli o seriali vengono dati per obsoleti e inutili (probabilmente presto scompariranno) ma ragionando su queste semplici e modeste informazioni che vi sto dando è facilmente intuibile che così non è!..Utilizzando una routine dell'ASM è possibile effettuare un ritardo temporale fra l'invio di vari dati..Immaginate in una scuola il suono della campana avviato dall'impulso ricevuto da un porto parallelo..Basterebbe un solo bit!..A mio avviso incredibile!..
..Appena avrò il tempo realizzerò un semplice schema elettrico con diodi led che collegato al porto parallelo ci permetterà di visualizzare l'effettiva situazione dei bit in uscita!..E verificare la posizione a 0 o a 1 dei vari pin..Ecco la routine per un ritardo temporale..
- Code: Select all
wrk: mov al,3ch
mov dx,0300h
out dx,al
call rit1
mov al,3fh
out dx,al
call rit1
jmp wrk
..rit1 è la routine che realizza un'attesa di un secondo..Questo piccolo pezzo di codice va in loop..E' ovvio!..Ma serve solo da esempio per immaginare una situazione analoga a quella precedentemente descritta con diodi led, uno per ogni bit e quindi 8..Così avremmo per un secondo:
7 - 0
6 - 0
5 - 1
4 - 1
3 - 1
2 - 1
1 - 0
0 - 0
..E quindi i diodi led 2,3,4 e 5 accesi e gli altri spenti..Il secondo successivo:
7 - 0
6 - 0
5 - 1
4 - 1
3 - 1
2 - 1
1 - 1
0 - 1
..3fh..La situazione cambia..I diodi led ora accesi sono 0,1,2,3,4 e 5..E le due situazioni si ripetono con la frequenza di un secondo finchè il programma non viene fermato!..Per fare capire l'importanza e l'utilità di questi porti basta avere un pò di creatività ed inventiva!..E' possibile ad esempio realizzare uno scansore di impronte digitali ovviamente con un algoritmo, un ragionamento ed uno programma un pò più elaborato di un semplice invio di bit!..



