Automatische Stoppuhr für DOS

Für Testzwecke ist häufig eine Stoppuhr erforderlich, um die Ausführungsgeschwindigkeit beliebiger Programme testen zu können. Eine korrekte Zeitmessung ist jedoch vom genauen Timing der Hände und Augen abhängig, wenn z. B. der PC und gleichzeitig die Stoppuhr zu kontrollieren ist. TIMEMARK.DEB stoppt bei einer Auflösung von 0,1 Sekunden die vergangene Zeit bis zu einer Stunde lang und zeigt die Einheiten, die seit dem letzten Aufruf von TIMEMARK vergangen sind, in ganzen und zehntel Sekunden an. Wenn Sie die Ausführungsgeschwindigkeit von EXE- oder COM-Programmen messen wollen, richten Sie sich am besten den folgenden Stapeljob »STOP.BAT« ein:

@ECHO OFF
TIMEMARK >NUL
%1 %2 %3 %4 %5 %6 %7 %8 %9
TIMEMARK
ECHO  Sekunden

Rufen Sie die Batch-Datei z. B. mit »STOP DIR« auf, um festzustellen, wieviel Zeit der DIR-Befehl benötigt. Das Ergebnis zeigt recht genau die Laufzeit des im Parameter übergebenen Programms inklusive der Ladezeit bei externen Befehlen an. TIMEMARK ermittelt über den BIOS-Interrupt 1Ah den Wert des System-Zeitzählers und verwendet als Zwischenspeicher für den letzten registrierten Zeitpunkt den Interruptvektor 68h. Die Differenz zwischen dem Inhalt des Vektors und der tatsächlichen Zeit rechnet das Programm in Einheiten zu je 1/18,2 Sekunden in ganze und zehntel Sekunden um und gibt das Ergebnis auf dem Bildschirm aus. Anschließend sichert TIMEMARK den neuen Zeitpunkt im erwähnten Interruptvektor. Das Ergebnis bleibt nur innerhalb von 60 Minuten genau. Längere Zeiten kann TIMEMARK nicht korrekt registrieren. Der erste Aufruf bringt ein willlkürliches Ergebnis, weil sich die Zeitmessung stets auf den letzten Start von TIMEMARK bezieht. Eine Umleitung auf die Null-Einheit ( >nul) verhindert die Ausgabe unerwünschter Werte. Um die Genauigkeit von STOP.BAT zu erhöhen, sollten Sie vom erhaltenen Ergebnis die Zeitspanne subtrahieren, die ein Aufruf von STOP ohne Parameter ergibt.

Name: TIMEMARK.DEB
Funktion: Stoppt Zeiten von bis zu einer Stunde mit einer Auflösung von 0,1 Sekunden.
Übersetzung: DEBUG <TIMEMARK.DEB
Prüfsumme: 0270
Anwendung: 1. TIMEMARK >NUL2. Anwendung aufrufen

3. TIMEMARK

Einschränkungen: Funktioniert nur bis zu 60 Minuten; darüberhinaus stimmt das Ergebnis nicht mehr.
A
MOV AH,0            ;100
INT 1A              ;102
MOV AX,3568         ;104
INT 21              ;107
MOV AX,2568         ;109
INT 21              ;10C
SUB DX,BX           ;10E
MOV AX,32           ;110
MUL DX              ;113
DIV Wo[144]         ;115
XOR DX,DX           ;119
DIV Wo[142]         ;11B
PUSH DX             ;11F
CALL 12B            ;120
MOV DL,2C           ;123
CALL 13D            ;125
POP DX              ;128
JMP 13A             ;129
XOR DX,DX           ;12B
DIV Wo[142]         ;12D
AND AX,AX           ;131
JZ 13A              ;133
PUSH DX             ;135
CALL 12B            ;136
POP DX              ;139
ADD DL,30           ;13A
MOV AH,2            ;13D
INT 21              ;13F
RET                 ;141
DW A,5B

RCX
46
NTIMEMARK.COM
W
Q

Quelle: 200 Utilities für PC-/MS-DOS von Gerhard Schild und Thomas Jannot

Matomo