计算机关机是一个涉及到硬件和软件的复杂过程。在早期的计算机系统中,关机通常需要用户手动进行,例如通过拔掉电源线或者按下电源按钮。随着技术的发展,现代计算机已经实现了更为自动化的关机方式,其中操作系统扮演了重要的角色。
在现代计算机中,操作系统通过ACPI(高级配置和电源接口)命令来控制关机过程。ACPI是一个行业标准,允许操作系统直接与硬件进行通信,以管理电源。当用户选择关机时,操作系统会发送一个ACPI命令给主板,主板随后将ATX电源供应器的PS-ON线(绿色线)设置为高电平,从而切断对计算机的电源供应,但保留一些待机电压。
在DOS环境下,由于DOS不支持ACPI,因此没有内置的方式来实现关机。如果DOS运行在现代笔记本电脑上,用户可能需要长按电源按钮来强制关机,这并不是一个理想的解决方案。
通过一些研究,发现了一种通过调用BIOS服务53h来实现软关机的方法,这是一些主板实现的功能。以下是实现这一功能的汇编语言代码:
mov ax, 5301h
xor bx, bx
int 15h
mov ax, 530eh
xor bx, bx
mov cx, 0102h
int 15h
mov ax, 5307h
xor bx, bx
inc bx
mov cx, 0003h
int 15h
ret
这段代码在大多数运行DOS的计算机上都能很好地工作,但在HP Compaq NC6120上执行时没有任何反应。这表明不同的BIOS和ACPI特性可能会影响代码的执行效果。
可以从下载上述代码的副本。该可执行文件是用A86汇编器编译的。