Assembler Shutdown
-
Also ich bin gerade dabei mein eigenes OS zu programmieren!
Ich programmiere in assembler mit FASM. Ich möchte nun aber eine funktion programmieren welche den PC herunterfährt.
Habe folgendes im Internet gefunden:mov ax, 0x1000 mov ax, ss mov sp, 0xf000 mov ax, 0x5307 mov bx, 0x0001 mov cx, 0x0003 int 0x15
-
Der folgende Code startet das System aber nur neu( habe ich vergessen zum dazu schreiben.
-
Zum Herunterfahren musst du entweder APM oder ACPI nutzen. Ohne Powermanagement geht nur ein Reboot (indem man einen Triple-Fault auslöst). Früher, auf Computern ohne APM/ACPI, zeigte Windows beim herunterfahren auch einen Bildschirm "Sie können den PC jetzt ausschalten", anstelle dass er automatisch aus ging.
Der Code, den du gepostet hast, basiert auf APM (erkennbar daran, dass der int 15h genutzt wird). APM muss man aber zuerst initialisieren.
In PrettyOS ist sowohl Herunterfahren über APM, als auch ein Fallback für Systeme ohne APM implementiert. Du kannst in der Datei kernel/power_management.c und user/vm86/apm.asm nachsehen, wie es geht.