|
 |
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... |
 | La 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. |
 | Per 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! |
 | Vediamo le ragioni per le quali risulta difficile
calcolare con sicurezza il
tempo di ritardo introdotto:
 | ogni 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.. |
 | la durata di esecuzione di ciascuna istruzione è
codificata con assoluta certezza e misurata in
Cicli T (o Ciclo di Clock) |
 | il 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 |
 | alcune 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. |
|
 |
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. |
 | Infatti 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... |
 |
Le procedure di ritardo
basate sull'esecuzione iterativa di istruzioni
sono imprecise,
inaffidabili e
non portabili (da un PC
all'altro). |
 | Il 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. |
 | Con 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. |
 | Questo 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). |
 | Per assicurare ritardi di assoluta precisione
la Libreria
Giobe.ASM/LIB
dispone di:
 | 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) |
 | Procedure agganciate al
Canale2 del Timer,
come
DelMicro
(per ritardi multipli di 1 µs),
Del010Mi
(10µs),
Del100Mi
(100µs),
Del200Mi
(200µs),
Del500Mi
(500µs)
e
Del_1
(1ms) |
|
©
2001-2010 - Studio Tecnico
ing. Giorgio OBER
Tutti i diritti sono riservati
|