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

DelMicro 2/2 Creare tempi piccoli [32 di 54] 

Procedure di ritardo - Il problema dei tempi di piccola durata
Come progettare procedure di ritardo con tempi in µs e ms...

  

bulletIl Timer di Sistema sincronizza i tempi di lavoro di un processore interrompendolo circa 18 volte al secondo, cioè ogni 55 ms; la lettura dei Ticks di sistema, aggiornati con la stessa cadenza, ci permette di progettare Procedure di ritardo (come la Delay) precise, affidabili e portabili.
bulletSfortunatamente la Delay, pur garantendo ritardi portabili fino a 1 ora, non consente di scendere sotto il ritardo minimo, indivisibile, di 55ms, assolutamente troppo grande per molte applicazioni, per esempio per attendere che una data linea HW assuma con certezza (cioè si assesti) al livello logico desiderato.

               

Suggerimento Il problema della disponibilità di procedure in grado di garantire ritardi di piccola durata è molto sentito nella programmazione (non solo Assembly) dei dispositivi HW.

               

bulletDunque bisogna cercare una via alternativa! E qui ci vediamo costretti a versare ulteriori lacrime amare..

               

bulletAncora oggi i Grandi Vecchi narrano di una splendida struttura di sistema, la Funzione 86H dell'INT 15H, in grado di realizzare ritardi di straordinaria precisione, dal minimo di 976 ns, cioè circa 1 microsecondo.

               

bulletFacendo riferimento ai sincronismi interni, legati al Timer di Sistema, e a partire da un dato a 32 bit (praticamente affidato ai 2 registri CX e DX) era in grado di procurare ritardi precisi, affidabili e portabili da un minimo di 1 µs ad un massimo di 232*967ns = 4294967296*967ns = 4153233375232ns, pari a 4153233375µs, pari a 4153233ms, pari a 4153s, cioè circa 69 minuti, cioè circa 1 ora e 9 minuti!

               

bullet

Purtroppo l'avvento dei nuovi Sistemi Operativi (Windows 2000/NT/XP) ha vanificato la soddisfazione di aver risolto alla grande il problema.

               

Attenzione ! Di fatto Windows 2000/NT/XP non riconoscono più la favolosa funzione 86H di INT 15H, in grado di realizzare ritardi di straordinaria precisione.

               

bulletDopo la fase di sconforto è, naturalmente seguita la luce: la conoscenza dei segreti del computer mi ha spinto a cercare una soluzione definitiva, sicura e portabile, anche per tempi minori del Tick di sistema.

               

bulletFatto sta che il Timer di Sistema contiene 3 temporizzatori, dedicati a diverse attività; uno di essi può essere controllato pienamente dal programmatore assembly, per generare effetti sonori sullo speaker.

               

bulletLo speaker è il piccolo altoparlante inserito nei computer usato per dare segnalazione acustica in numerose occasioni; come altri eventi anche i beep di sistema sono ora soverchiati dai nuovi Sistemi Operativi (Windows 2000/NT/XP, ...non se ne può più!!), ma pur non potendo godere del loro servizio è comunque possibile gestire il contatore interno che li genera.

               

Suggerimento L'ennesima idea geniale è quella di obbligare il Canale2 del Timer a consumare tempo per noi.

               

bulletPer assicurare ritardi di assoluta precisione la Libreria Giobe.ASM/LIB dispone di:
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)
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)

    

Pagina Precedente Libreria GiobeASM Pagina Successiva DelMicro 2/2 Creare tempi piccoli   Torna alla Home  del Capitolo3 del "Tutorial" Lezioni - Vai al DownLoad dei files DOC Torna al Menu del "Tutorial"
32 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