real protegido programar operacion modos modo microprocesadores microprocesador los ensamblador direccionamiento dentro contra x86 acpi real-mode

x86 - operacion - programar ensamblador dentro de un modo protegido en contra de un modo real



¿Cómo reiniciar en el ensamblaje x86 desde el modo real de 16 bits? (2)

El apagado de APM ha sido cubierto en las instrucciones de X86 para apagar la computadora en modo real?

¿Cómo reiniciar en lugar de apagar la computadora? Por favor, cite y explique la documentación / estándar relevante en su respuesta.

Entendí que APM y ACPI son los dos métodos principales, y estoy interesado en ambos. Avísame si hay otros.

He encontrado que la especificación de ACPI está en http://uefi.org/specifications pero se necesita demasiado cerebro para analizar que me pareció digno de una pregunta.

No pude encontrar la URL para la especificación de APM, solo una caché de Google de un RTF de Microsoft aquí .

Si necesita una forma de probar su respuesta, este ejemplo mínimo de sector de arranque de APM puede ser un buen punto de partida. El objetivo es convertirlo en un ejemplo de reinicio en su lugar.

He leído el código Linux kernel 4.2 en arch / x86 / realmode / rm / reboot.S, pero no entiendo cómo funciona, ya que no puedo encontrar la diferencia entre esos comandos y mi ejemplo de cierre de funcionamiento.

Relacionado más genérico en superusuario: https://superuser.com/questions/294681/how-does-a-computer-restart-itself

Pregunta relacionada para el modo protegido: reiniciar en modo protegido


Utilizo el siguiente código en una imagen de arranque de disquete para reiniciar la computadora si los archivos del kernel no están presentes en el medio de arranque.

Reboot: db 0x0ea dw 0x0000 dw 0xffff

Que esencialmente se une a la siguiente instrucción:

jmp far ptr 0FFFFh:0

Creo que es un reinicio en caliente, es decir, equivalente a presionar Ctrl-Alt-Delete, en lugar de presionar el botón de reinicio en la parte frontal de la máquina.


Funciona en mi vieja pc 8086:

mov ds, ax mov ax,0000 mov [0472], ax jmp FFFF:000