1

我正在用汇编语言编写一个简单的操作系统,但我不知道如何关闭计算机。

我试过这样hlt使用

 .shutdown:
   mov si, msg_shutdown
   call print_string
   hlt

但它不起作用。我知道这int 19h会重新启动计算机,但是否有关机中断?

我会很感激一些帮助。谢谢。

4

2 回答 2

0

hlt只暂停 CPU 直到发生中断。

cli
hlt

可以做你想做的。您可能还希望禁用 NMI,但我认为如果我们获得 NMI,无论如何我们都会遇到大麻烦。您可能还希望启用中断,如果用户点击“esc”或类似的,则重新启动,否则返回hlt. 如果你真的想关闭电源......嗯,那就更复杂了......

编辑:重新阅读您的问题,我猜您确实想关闭电源(?)。看看这里:http ://wiki.osdev.org/Shutdown

于 2013-04-29T20:44:44.260 回答
-1

重启 :

reboot:
    jmp 0xffff:0000h

关闭 :

shutdown:
    mov ax, 5307h
    mov cx, 3
    mov bx, 1
    int 15h

停 :

halt:
    cli
    hlt
于 2016-12-08T20:07:35.970 回答