2016-09-21 82 views
1

我正在virtualbox中运行一个自定义操作系统,并解析了ACPI,FACP,DSDT等表以获取PM1a_CNT和SLP_TYPa值。这些似乎是正确的。但是,当我尝试执行ACPI关机时:如何在自定义操作系统中的汇编中关闭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

除了您正在向32位I/O端口写入32位值之外,一切看起来都正确。尝试用out dx, ax替换最后的out dx, eax

+0

是的,我最初使用ax,没有工作,所以我尝试了eax。忘了在粘贴代码时将其改回。将解决它。 – poby

+0

因此改变它并不能解决你的问题? – icecreamsword

+0

不,就像我说的,我最初使用斧头,它没有工作 – poby

相关问题