如何在自定义操作系统的程序集中关闭acpi?

时间:2016-09-21 00:09:39

标签: assembly virtualbox shutdown acpi dsdt

我在virtualbox中运行自定义操作系统并解析了ACPI,FACP,DSDT等表以获取PM1a_CNT和SLP_TYPa值。这些似乎是正确的。但是当我尝试使用以下命令关闭ACPI时

xor eax, eax
mov edx, [PM1a_CNT]
mov ax, [SLP_TYPa]
or ax, (1 shl 13)
out dx, ax 

什么都没发生。 PM1a_CNT为0x4004,SLP_TYPa为0,与其他地方的其他值相比,这似乎是合理的。我也检查PM1b_CNT是零,所以我不打扰它。

是否存在使用virtualbox的问题或技巧?

1 个答案:

答案 0 :(得分:1)

除非您将32位值写入16位I / O端口,否则一切看起来都是正确的。尝试将最终out dx, eax替换为out dx, ax