2016-09-21 85 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

相關問題