Newsgroup: it.comp.lang.c++
Titolo: xchè non funziona???

osservate questa funzione delay in asm sotto borland c++....
qualcuno mi sa dire xchč cosě scritta viene compilata ma non eseguita?
#include <iostream.h>
void delay(unsigned short int milliseconds);
void main()
{
unsigned short int mils=1000;
int i;
for (i=0;i<30;i++)
 {
   cout<<i<<" ";
   delay(mils);
   }
}
void delay(unsigned short int milliseconds)
{
asm mov ax,word ptr milliseconds
asm Label0:   //Loop interno#     #   #
asm dec ax        //            #     #   #
asm jnz Label0    //************#     #   #
}
Grazie, /\ngyel

 }
Forse, per avere dei tempi reali, dovresti passare i nanosecondi :-)
E anche usare EAX come registro, inoltre poi dovresti prima "tarare" il
programma in modo da avere dei tempi giusti
In dettaglio, io avevo una variabile globale:
long RETRY=100000l;  // Limite dei tentativi di sincronizzazione
E una funzione per testare la velocità:
/* ****************************************************
 Tramite un bench sulla velocita' del microprocessore
 e' possibile cambiare il numero di tentativi per la
 sincronizzazione delle operazione di Input/Output.
 (RETRY deve valere almeno 1/100 di secondo.)
 ****************************************************
*/
void sincronizza (void){
long sincro;
struct time ora1, ora2;
gettime (&ora1);
for (sincro=0; sincro<1000000l; sincro++); // 1 milione di iterazioni
gettime (&ora2);
// sincro = centesimi di secondo impiegati.
sincro = (ora2.ti_hour-ora1.ti_hour)*3600000; // Ore
sincro += (ora2.ti_min-ora1.ti_min)*6000; // Minuti
sincro += (ora2.ti_sec-ora1.ti_sec)*100; // Secondi
sincro += ora2.ti_hund-ora1.ti_hund;  // Secondi
RETRY = 1000000l/sincro;
};
E poi usavo un ciclo di sincronizzazione del tipo:
 for (sincro=0; sincro<(RETRY/10000+1); sincro++); // 2 microsecondi
Che è possibile parametrizzare in una funzione
--
Alessandro Monti

 }
Qui fai un ciclo con milliseconds iterazioni, non aspetti milliseconds
millisecondi. E dato che un colpo di clock su un processore attuale dura una
manciata di nanosecondi (1 nanosecondo = 1 secondo elevato alla -9) il ciclo
dura praticamente un nulla.
Ciao, Giuseppe
---------------------------------------------------------------------------
_Guybrush su IRCNet canale #programmazione
ICQ: 42227764
---------------------------------------------------------------------------

Ringrazio coloro che mi hanno risposto ma sottolineo che la domanda era BEN
POSTA!!!!
SO BENISSIMO CHE LA ESEGUE VELOCISSIMAMENTE!!!!!
MA NON LA ESEGUE!!!!!!!!!

 wrote in message 7vid0s$3k8$1...@nslave2.tin.it...

La domanda sorge spontanea: ma tu come fai a sapere che non viene
eseguita?????????


uhm.... forse xchè ho provato e verificato in tanti modi?
dunque...
in principio era la forza... uhm... no...  c'erano 2 cicli loop...
e a seconda del valore che impostavo nel ciclo + interno (lo impostavo da
programma) cambia la velocità di esecuzione, che, per essere testata meglio
consiteva di un ciclo for 30 volte per visualizzarne la variabile crescente,
intervallato dal delay da me costruito....
inserisco un terzo ciclo (xchè 2 erano pochi) e Uacha!!! (alla Kenshiro)
come se il fantasma di LeChuck avesse infestato il mio compilatore inline
asm...
infatti non va xchè se faccio un programma vuoto e dentro ci metto una linea
asm non apre minimamente la finestra dos... mentre normalmente lo faceva...
ho notato che l'errore consta in una linea di comando errata... mi par che
passi l'esecuzione a TASM32 con linea di comando @C:\INUTILE\TEMP\RSP0.$$$
(due note:
1 INUTILE è la mia directory windows (non ti porre problemi, il nome
funziona benissimo ;-) )
2 mi sembra che si RSP0 o qualcosa del genere...
ecco tutto.... se mi posti al 
ang...@libero.it
ti rispondo per certo...
c ya & happy programming
_ . - ° ] /\ngyel [ ° - . _

 ti rispondo per certo...
Ahi, ahi!! Non si chiede mai di avere risposta in privato.


IO TUTTE LE COSE LE FACCIO IN PRIVATO!!! :-)
anche quelle pubbliche...
ma ringrazio sentitamente, visto che il problema è risolto...
qual'era?
mah... ho rimosso la cartella BC5...
reinstallato il borland C++ 5.0 e adesso va che è una meraviglia...
/\ngyel

 reinstallato il borland C++ 5.0 e adesso va che č una meraviglia...
Si potessero risolvere tutti cosě i problemi..... (io ne ho uno grande con i
compialtori, sigh! :-( )
