; *** Listing 3-6 *** ; ; Programme pour mesurer les performances d'un code qui s'exécute ; en plus de 54 ms. (LZTEST.ASM) ; ; A lier à LZTIMER.ASM (Listing 3-5). LZTEST.BAT (Listing 3-7) ; peut être utilisé pour assembler et lier les deux fichiers. ; Le code à mesurer est dans le fichier TESTCODE; Le listing 3-8 présente ; un fichier test (LST3-8.ASM) qui devrait être nommé TESTCODE. ; ; Par Michael Abrash ; mystack segment para stack 'STACK' db 512 dup(?) mystack ends ; Code segment para public 'CODE' assume cs:Code, ds:Code extrn ZTimerOn:near, ZTimerOff:near, ZTimerReport:near Start proc near push cs pop ds ;DS pointe sur le segment du code, ;aussi les données et le code peuvent facilement ;être inclus dans TESTCODE ; ; Délai de 6 à 7 secondes, pour que la touche Enter soit de nouveau ; prise en compte. ; mov ah,2ch int 21h ;obtient l'heure courante mov bh,dh ;sauvegarde l'heure courante DelayLoop: mov ah,2ch push bx ;préserve l'heure du début int 21h ;lit l'heure pop bx ;récupère l'heure du début cmp dh,bh ;le nouveau compteur de secondes est-il inférieur ;au compteur initial? jnb CheckDelayTime ;non add dh,60 ;oui, une minute doit être passée, ;ajoutons une minute CheckDelayTime: sub dh,bh ;lit le temps écoulé cmp dh,7 ;plus de 6 secondes écoulées ? jb DelayLoop ;pas encore ; include TESTCODE ;code à mesurer, incluant les appels ;à ZTimerOn et à ZTimerOff ; ; Affiche les résultats. ; call ZTimerReport ; ; Termine le programme. ; mov ah,4ch int 21h Start endp Code ends end Start