|
 |
Raccolta di Procedure ASM |
Delay 1/3
[28 di 54] |
1° dicembre
2003 |
 | Genera un
ritardo programmabile, multiplo
di 54,925493
ms, in
funzione del numero passato in ingresso. |
 | Il ritardo minimo di
circa 55 ms può costituire una
limitazione: in certe applicazioni può
effettivamente risultare troppo grande; in compenso
i ritardi
generati sono precisi,
affidabili e soprattutto
portabili (cioè completamente
svincolati dalla velocità del processore e
consumabili in modo uguale
su tutti i computer), anche con i più moderni sistemi operativi (Windows 2000/NT/XP). |
 | Sulla base di questa
Procedura
ho reso disponibili anche le
Del_100,
Del_1000,
Del_1500 e
Del_2000,
pronte a consumare rispettivamente
0,1s, 1s,
1,5s e 2s;
la Procedura
DelMicro assicura,
inoltre, ritardi
dell'ordine del µs e del
ms. |
 | La Procedura
si chiama in questo modo: |
 | In
ingresso bisogna predisporre:
 | CX
con il numero di ritardi standard da 55ms
da eseguire; con CX=18
viene generato un ritardo di 55ms*18=
1
secondo |
|
 | La seguente Area di Testo
mostra il Modulo varie07 utilizzato per
inserire la Procedura
nella Libreria
Giobe.ASM/LIB: |
|
Delay / varie07 |
NB: se il testo contenuto nell'Area
ti
sembra strano (cioè se contiene
caratteri inconsueti) non hai ancora
installato il font
Giobe.TTF
:
clicca qui!! |
 | L'analisi del codice (puoi scorrerlo con la
barra laterale)
mette in evidenza la tecnica utilizzata per garantire il ritardo con
esattezza:
 | con l'aiuto della
Funzione 00H dell'INT 1AH
Bios, legge
il contenuto delle 4 locazioni di sistema da
0000:046CH a
0000:046FH, contenenti il numero corrente (a 32 bit) dei
Ticks prodotti nell'arco della
giornata |
 | ne
controlla poi, più volte, il valore fino al momento in cui viene raggiunto
il quello nuovo, che tiene conto del ritardo desiderato. |
 | data la particolare struttura dell'algoritmo ho
approntato una
nuova (dicembre 2003)
pagina
con l'analisi più dettagliata. |
|
 |
I problemi legati alle
procedure di ritardo
sono concreti e pressanti: in ogni caso sembrano ora
tutti risolti, con il ricorso al
Timer di Sistema,
un componente di vitale importanza per il funzionamento del Computer.
Ad essi ho dedicato la pagina seguente. |
 | La nostra Procedura,
a partire da un dato a 16
bit (praticamente affidato al registro
CX),
è in grado di generare tempi
di ritardo da un minimo di 54,925493
ms ad un
massimo
di 216*54,925493ms
= 65536*54,925493ms
= 3599597ms,
pari a 3600s, cioè
circa 60
minuti,
cioè 1 ora! |
 |
Su questa base è possibile compilare la Tabella
dei valori con i quali è possibile caricare il registro
CX: |
| ritardo |
Delay |
|
ritardo |
Delay |
|
ritardo |
Delay |
| 1 |
55
ms |
16 |
879
ms |
920 |
50
s |
| 2 |
110
ms |
17 |
934
ms |
1092 |
1
m |
| 3 |
164
ms |
18 |
1
s |
2294 |
2
m |
| 4 |
219
ms |
27 |
1,5
s |
3277 |
3
m |
| 5 |
274
ms |
36 |
2
s |
4370 |
4
m |
| 6 |
329
ms |
45 |
2,5
s |
5462 |
5
m |
| 7 |
384
ms |
54 |
3
s |
6554 |
6
m |
| 8 |
439
ms |
63 |
3,5
s |
7647 |
7
m |
| 9 |
494
ms |
73 |
4
s |
9831 |
9
m |
| 10 |
549
ms |
82 |
4,5
s |
10964 |
10
m |
| 11 |
604
ms |
91 |
5
s |
21848 |
20
m |
| 12 |
659
ms |
182 |
10
s |
32771 |
30
m |
| 13 |
714
ms |
364 |
20
s |
43695 |
40
m |
| 14 |
769
ms |
546 |
30
s |
54619 |
50
m |
| 15 |
824
ms |
728 |
40
s |
65536 |
1 h |
©
2001-2010 - Studio Tecnico
ing. Giorgio OBER
Tutti i diritti sono riservati
|