我如何在不使用HLT的情况下停止执行程序写在代码的末尾,我已经阅读到HLT可以在该中断处发生,但是我不明白如何
答案 0 :(得分:1)
HLT
指令实际上并未终止程序。据我所知,它的主要用途是将CPU置于“空闲”模式以减少功耗。但这只会持续到下一个中断触发为止,然后程序将继续执行。
您可能应该进行系统调用(对您的操作系统的调用),以告诉操作系统终止您的进程,或者“让”处理器(让操作系统{{1} }以适合您的方式为您提供)。
系统调用的工作原理以及您需要哪个调用取决于程序所运行的OS。在DOS上,例如HLT
(INT 21h
将终止您的程序IIRC,对于Linux,请查找“ syscalls”)。
如果要真正停止程序执行,即有意将计算机挂起,则可以:
MOV AH, 4Ch; INT 21h
),或here: JMP here
,然后使用CLI
禁用(可屏蔽)中断。第二个选项可能会更省电,但是两者都对用户不友好并且可能毫无意义。 :)
(免责声明:我已经有一段时间没有在进行系统级编程了,上面的信息可能有点粗糙。)