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

Libreria GIOBE.ASM

Home » Programma il Computer » Tutorial Assembly

Raccolta di Procedure

  Raccolta di Procedure ASM

Delay 2/3 - Portabilità dei Ritardi [29 di 54] 

Procedure di ritardo - Il problema della portabilità
Perchè la procedura di ritardo progettata sul mio computer non funziona su un altro computer...

  

bulletLa portabilità di un codice assembly è la sua capacità di essere eseguito con le medesime caratteristiche su ogni computer; una della tecniche più a rischio è la generazione di tempi di ritardo.

               

bulletPer generare un ritardo è sufficiente perdere tempo... e il modo più semplice per questo è eseguire a vuoto un determinato numero di istruzioni; ma questa tecnica non e una soluzione attendibile!

  

bulletVediamo le ragioni per le quali risulta difficile calcolare con sicurezza il tempo di ritardo introdotto:
bulletogni processore misura la durata di ciascuna sua operazione interna in Cicli T, cioè in intervalli di tempo esattamente uguali all'inverso della sua frequenza di clock; per esempio con f=500Mhz >> T=2ns; con f=1Ghz >> T=1ns; e così via..
bulletla durata di esecuzione di ciascuna istruzione è codificata con assoluta certezza e misurata in Cicli T (o Ciclo di Clock)
bulletil numero di Cicli T nel funzionamento in modo protetto è, di solito, molto differente da quello in modo reale: non sempre è facile reperire le tabelle in grado di mostrare le differenze
bulletalcune istruzioni di salto condizionato (come JZ o come LOOP) hanno sempre 2 tempi d'esecuzione; se la condizione non è vera il salto non viene eseguito e il tempo consumato (in Cicli T) è solitamente molto inferiore rispetto alla condizione opposta.

               

Suggerimento Data una procedura di ritardo, è possibile solo in modo approssimato risalire al numero di Cicli T da essa consumati; come non bastasse, il tempo effettivo del ritardo sarà fortemente influenzato dal computer sul quale verrà eseguito il codice che lo ha prodotto.

               

bulletInfatti il numero di Cicli T dovrà essere moltiplicato per l'inverso della frequenza di clock del processore montato sul computer e, inevitabilmente, a parità di codice assembly la procedura collaudata nei giusti tempi sul mio "megaPCultimogrido" sarà mortalmente lenta sul "PCdiGaribaldi"..; mentre quella scritta dall'Eroe a Teano per V.E.II sarà, sul mio, un impercettibile schizzo...

               

Attenzione ! Le procedure di ritardo basate sull'esecuzione iterativa di istruzioni sono impreciseinaffidabili e non portabili (da un PC all'altro).

               

bulletIl problema si può risolvere affidandoci al Timer di Sistema, il dispositivo chiamato a sincronizzare la vita del computer sulla base di un segnale periodico di frequenza 18,2064819 Hz, ossia di periodo 54,925493 ms.

  

bulletCon questa cadenza il processore è obbligato (tra le altre cose..) ad aggiornate i Ticks di sistema, cioè la misura del tempo trascorso nell'arco del giorno; una preziosa risorsa, consultabile in ogni momento dal programmatore preparato.

  

bulletQuesto tempo minimo di circa 55 ms può costituire la base per ritardi di assoluta precisione, affidabili e soprattutto portabili (cioè consumabili in modo uguale su tutti i computer), anche con i più moderni sistemi operativi  (Windows 2000/NT/XP).

  

bulletPer assicurare ritardi di assoluta precisione la Libreria Giobe.ASM/LIB dispone di:
bullet Procedure agganciate ai Ticks di sistema, come Delay (per ritardi multipli di 55 ms), Del_100 (100ms), Del_1000 (1s), Del_1500 (1,5s) e Del_2000 (2s)
bullet Procedure agganciate al Canale2 del Timer, come DelMicro (per ritardi multipli di 1 µs), Del010Mi (1s), Del100Mi (100µs), Del200Mi  (20s), Del500Mi (500µs) e Del_1 (1ms)

    

Pagina Precedente Libreria GiobeASM Pagina Successiva Delay 2/3 - Portabilità dei Ritardi   Torna alla Home  del Capitolo3 del "Tutorial" Lezioni - Vai al DownLoad dei files DOC Torna al Menu del "Tutorial"
29 di 54
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

    

Giobe.ASM » SET_cur | VIA_cur | RIP_cur | BIOScls| BIOSchr |BIObeep |Acapo| BIOchr1| STAsp| BIOSmsg
Byt2Asc | Wor2Asc | Asc2Byt | Asc2Wor | Byt2Dec | Wor2Dec | Dec2Byt | Dec2Wor
Delay | DelMicro | Del_2000 | Del1500 | Del_1000 | Del_100 | Del_1 | Del500Mi | Del200Mi
Del100Mi | Del010Mi | RIEMPI | KEYwait | Random | INstrin | CambiaCol | MODEtest
RAMchr | RAMcur | RAMmes | RAMcls | RAMcorn | RAMpiu | RAMrecup | RAMbyte | RAMword
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