Frage zur Zeitmessung
-
Hallo, ich soll für die Schule ein kleines Programm schreiben, welches in einem Abstand von 5 Sekunden einen Piepston erzeugt, bis man das Programm abbricht.
In unserem Labor haben wir wirklich sehr alte Rechner, wähend bei mir ein recht flotter Computer steht. Jetzt frage ich mich, wie soll ich ein Programm erstellen, welches auf beiden Rechnern genauso schnell läuft ? Die 5 Sekunden sollen ja schliesslich eingehalten werden.
Gibt es hier vielleicht eine Funktion, die die CPU-Zeit einlesen kann oder sowas ?
Würde mich über ein paar Hinweise freuen.
Gruss
theflasher
-
rdtsc
zyklendifferenz bestimmen und mit taktfrequenz die verstrichene zeit berechnen. oder auch ggf. real time clock via interrupt abfragen. welches betriebssystem? muss es unbedingt assembler sein?
-
Hi, danke schon mal für dioe Antwort.
Es muss zwingend Assembler sein, denn im Kurs sollen wir ausschliesslich mit Assembler arbeiten.
Wir verwenden dabei den 8086 Befehlssatz und arbeiten damit hauptsächlich unter Dos. Also eben unter Windows XP Eingabefenster öffnen und Programm ausführen.
Könntest du vielleicht ein bisschen mehr zum realtime clock und dem dazugehörigen Interupt sagen, weil mit realtime habe ich mich schon etwas unter c ausseinandersetzen müssen.
Gruss theflasher
-
Wenn der Lehrer nicht mit einer Stoppuhr neben den Rechnern steht, waere mein Vorschlag:
Besetze den int 08h mit einem chain link (also auch brav immer zum alten handler weiter springen). Der wird dann ~18.2 mal pro Sekunde aufgerufen. ...
Ich hoffe das reicht, um deine Phantasie etwas zu befluegeln.
-
stimmt timerinterrupts gibts ja auch noch, man vergisst so viel im laufe der jahre :(. wenn 55ms auflösung reichen ist das sogar die bessere variante