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.