如何关机?我正在构建一个自己的小操作系统

man*_*uhg 11 x86 assembly operating-system shutdown system-shutdown

程序集中的hlt指令可以在停止处理器时关闭计算机吗?如果可以用我所说的来完成,这是正确的方法吗?

可以关机吗?

start:
    xor ax, ax; ;clear ax
    mov bx, ax; ;clear bx
    cli ;stop all interrupts
    hlt ;halt the cpu
Run Code Online (Sandbox Code Playgroud)

如果这不是可行的方法,如果这不会关闭系统,请告诉我正确的方法.

wal*_*lyk 10

hlt指令停止x86直到发生中断.除非禁用所有中断,否则将使处理器停止大约一毫秒左右.

要关闭现代计算机,请使用ACPI(高级配置和电源接口).

  • 对于实现ACPI接口的"微操作系统"并非易事.如果您的计算机有点旧,哪个BIOS仍然实现APM,您可以通过APM(http://en.wikipedia.org/wiki/Advanced_Power_Management)关闭,这就是Windows 95执行此操作的方式.请注意,之前的操作系统,如DOS,无法关闭计算机. (6认同)