0

是否可以从 nasm 关闭或切断计算机的电源(有区别吗?)。我知道您可以使用它来重新启动:

mov al, 0xFE
out 0x64, al

是否有相当于关闭的方法?我正在制作自己的 16 位操作系统。

4

3 回答 3

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

于 2010-08-12T00:37:57.380 回答
0
    mov ax, 0x1000
    mov ax, ss
    mov sp, 0xf000
    mov ax, 0x5307
    mov bx, 0x0001
    mov cx, 0x0003
    int 0x15
于 2015-01-13T14:26:16.470 回答
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             ; Check APM Version
  xor bx, bx
  mov cx, 0102h             ; v1.2 Required
  int 15h
  ret       
于 2013-08-20T10:43:09.697 回答