2010-08-12 58 views
0

是否可以從nasm關閉或關閉計算機的電源(是否存在差異?)?我知道你可以使用它來重新啓動:使用nasm關閉計算機

mov al, 0xFE 
out 0x64, al 

是否有關閉等價物? 我正在製作我自己的16位操作系統。

回答

1

您擁有的代碼不能保證能正常工作。它依賴於兩個事實:

  • 操作系統將物理IO內存映射到進程內存空間。
  • 機器有BIOS。

這兩者都不是真的。

以編程方式重新啓動或關閉機器的唯一可靠方法是調用相應的OS API。

調用OS API(您需要,因爲您的正在編寫OS :-))的替代方法是使用ACPI。並非所有機器都支持這些ACPI,有四種不同的ACPI版本。

http://en.wikipedia.org/wiki/Advanced_Configuration_and_Power_Interface?wasRedirected=true
http://www.acpi.info

+0

:我將我自己的16位操作系統,所以沒有OS API。 – None 2010-08-12 01:04:22

+0

你應該已經開始了這一點的信息。 :-)關閉所有主板上的機器並沒有簡單的標準化方法。您可以查看ACPI的電源管理支持;但是ACPI支持差異很大,所以您需要知道您正在運行的硬件 – 2010-08-12 01:20:26

0

你可以試試這個代碼: -

shutdown_sucess: 
mov ax, 5301h    ; Connect to the APM 
xor bx, bx 
int 15h 
je near continue_connection  ; Pass if connected 
cmp ah, 2 
je near continue_connection  ; Pass if already connected 
ret    ; Bail if fail 

continue_connection: MOV AX,530Eh;檢查APM版本 xor bx,bx mov cx,0102h; V1.2所需 INT 15H RET

0
mov ax, 0x1000 
    mov ax, ss 
    mov sp, 0xf000 
    mov ax, 0x5307 
    mov bx, 0x0001 
    mov cx, 0x0003 
    int 0x15 
相關問題