X86 instructions to power off computer in real mode? 已介绍了 APM 关闭
如何重新启动而不是关闭计算机?请在您的回答中引用并解释相关文档/标准。
我了解 APM 和 ACPI 是两种主要方法,并且我对这两种方法都感兴趣。如果还有其他人请告诉我。
我发现 ACPI 规范位于 http://uefi.org/specifications,但解析它需要太多脑力,我发现它值得一个问题。
我找不到 APM 规范的 URL,只有 Microsoft RTF here 的 Google 缓存。
如果您需要一种方法来测试您的答案,this minimal APM shutdown boot sector example 可能是一个很好的起点。我们的目标是将其转换为重新启动示例。
我已经阅读了 arch/x86/realmode/rm/reboot.S 上的 Linux 内核 4.2 代码,但我不明白它是如何工作的,因为我找不到这些命令和我的工作关闭示例之间的区别。
super 用户的相关更通用:https://superuser.com/questions/294681/how-does-a-computer-restart-itself
保护模式的相关问题:Rebooting in Protected Mode
最佳答案
如果启动介质上不存在内核文件,我会在软盘启动镜像中使用以下代码来重置电脑。
Reboot:
db 0x0ea
dw 0x0000
dw 0xffff
它基本上汇编为以下指令:
jmp far ptr 0FFFFh:0
我认为这是热重启,即相当于按 Ctrl-Alt-Delete,而不是按机器前面的重置按钮。
关于x86 - 如何从 16 位实模式重新启动 x86 程序集?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32682152/