Post by FrancoPost by GioacchinoPost by FrancoOK, vado a provare. Pensavo fosse più semlice, mi rendo conto di
averti fatto perdere molto tempo. grazie infinite
Franco
di niente, se vuoi ti spiego il codice che è un pò contorto... :-)
Magari. Così mi rinfresco un pò la memoria.
La prima parte del codice "spezza" le variabili d'ambiente %date% e
%time% in giorno, mese, anno, ore, minuti e secondi.
Questo puoi farlo anche nel modo che tu sai ma solo in WinXp.
Poi viene creato un file con due righe, la prima è:
aaaammggooiiss, ovvero la data che vuoi utilizzare tu
e la seconda con:
una stringa anno,mese,giorno,ora,minuti,secondi
#####
echo aaaammggooiiss >temp.bat
echo %a%%m%%g%%o%%i%%s%>>temp.bat
#####
Poi si prepara il file da inviare al debug:
nel codice assembler utilizziamo due puntatori "si" e "di", il primo
punta all'inizio della stringa con la data che ti interessa, il secondo
punta all'inizio della stringa della data attuale. I dati letti a
quell'offset sono comparati, se sono uguali si prosegue alla cifra meno
significativa, altrimenti uno dei due è più grande dell'altro. In
questo caso si sottrae il codice ascii contenente la data specificata
con quella attuale. Il risultato è negativo se la data attuale è
maggiore di quella specificata, positivo altrimenti. A questo punto di
utilizza il flag 7 del microprocessore che specifica se il segno è
attivato, il valore viene poi convertito in numero e scritto come
settimo carattere nel file stesso. Poi viene aggiunta la stringa "set
A=" davanti al numero.
Il debug viene eseguito.
#####
echo.a80 >deb
echo.mov si, 100 >>deb
echo.mov di, 111 >>deb
echo.mov al, [si] >>deb
echo.mov ah, [di] >>deb
echo.inc si >>deb
echo.inc di >>deb
echo.cmp al, ah >>deb
echo.je 86 >>deb
echo.mov cl, 7 >>deb
echo.sub al, ah >>deb
echo.lahf >>deb
echo.shr ah, cl >>deb
echo.mov di, 106 >>deb
echo.mov al, ah >>deb
echo.add al, 30 >>deb
echo.stosb >>deb
echo.int 20 >>deb
echo.>>deb
echo.p =80 100 >>deb
echo.e 100 73 65 74 20 41 3D >>deb
echo.r cx >>deb
echo.7 >>deb
echo.w >>deb
echo.q >>deb
type deb|debug temp.bat >nul
#####
Qui è molto semplice. Viene settata la variabile d'ambiente e con l'if
si discrimina il tutto.
#####
call temp.bat
if %a%==1 goto dopodata
goto fine
:dopodata
echo M E S S A G G I O !
:fine
del deb
del temp.bat
set g=
set m=
set a=
set o=
set i=
set s=
#####
--