Programm anhalten (sleep?)
-
Hallo!
Ich nutze nasm und weiß nicht, wie man ein Programmablauf verlangsamen kann.
In C++ gibt es ja den befehl Sleep(xx), doch in Assembler finde ich keinen
Aufruf.Dabei muss ich sagen, dass ich keine LIB's einbinden möchte.
-
Nimmste den Intel 8253/8254 Timer -> Google.
HIH
Greetz Swordfish
-
Delay schrieb:
Ich nutze nasm und weiß nicht, wie man ein Programmablauf verlangsamen kann.
In C++ gibt es ja den befehl Sleep(xx), doch in Assembler finde ich keinen
Aufruf.
Dabei muss ich sagen, dass ich keine LIB's einbinden möchte.Die Funktion "sleep()" gehört auch nicht direkt zur Sprache dazu, sondern versteckt sich in der C/C++ Standardbibliothek, welche auch eine lib ist...
Mal abgesehen davon, für welches Betriehssystem (oder auch keins) willst du denn überhaupt programmieren?
-
bluecode schrieb:
Delay schrieb:
Ich nutze nasm und weiß nicht, wie man ein Programmablauf verlangsamen kann.
In C++ gibt es ja den befehl Sleep(xx), doch in Assembler finde ich keinen
Aufruf.
Dabei muss ich sagen, dass ich keine LIB's einbinden möchte.Die Funktion "sleep()" gehört auch nicht direkt zur Sprache dazu, sondern versteckt sich in der C/C++ Standardbibliothek, welche auch eine lib ist...
Mal abgesehen davon, für welches Betriehssystem (oder auch keins) willst du denn überhaupt programmieren?
-
Wenns für dein eigenes Betriebsystem sein soll, schau mal unter BIOS interrupts fals du im 16bit modus bist.
Ansonsten bleibt noch ne busywait-schleife, das wäre natürlich die schelchteste lösung.Falls du unter einem betriebsystem operierst kannst du dich mal über systemcalls informieren.
Da gibts bestimmt was für sleep
-
Ich habs jetz so gelöst, nicht die beste Lösung, ich weiß^^
Delay: mov ah, 00h int 1Ah add dx, 50 mov ax, dx mov bx, dx mov cl, 3 .DLY mov ax, bx push ax mov ah, 00h int 1Ah pop ax cmp ax, dx jnz .DLY ret
-
Jo, is nicht schlecht. Nur so als Tipp: Das BIOS hat in der BDA (BIOS Data Array, also irgendwo um Adresse 400h im Speicher -> google) seinen Zeitzaehler. Da kannst du ganz einfach einen Zeit-Code auslesen, ohne Interrupts verwenden, oder grossartig basteln zu muessen.