在程序集中关闭OS

时间:2013-04-29 20:10:02

标签: assembly operating-system shutdown

我在汇编中编写了一个简单的操作系统,但我无法弄清楚如何关闭计算机。

我试过像这样使用hlt

 .shutdown:
   mov si, msg_shutdown
   call print_string
   hlt

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

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

2 个答案:

答案 0 :(得分:0)

hlt仅在发生中断之前停止CPU。

cli
hlt

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

编辑:重新阅读你的问题,我想你确实想要关闭电源(?)。环顾四周:http://wiki.osdev.org/Shutdown

答案 1 :(得分:0)

重启:

reboot:
    jmp 0xffff:0000h

关机:

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

停止:

halt:
    cli
    hlt