No entiendo este pedazo de código:segmento de pila en el cargador de arranque MikeOS
mov ax, 07C0h ; Set up 4K of stack space above buffer
add ax, 544 ; 8k buffer = 512 paragraphs + 32 paragraphs (loader)
cli ; Disable interrupts while changing stack
mov ss, ax
mov sp, 4096
sti ; Restore interrupts
- mov ax, 07C0h - aquí BIOS carga nuestro código . Pero, ¿qué es '4K'? Kilobytes? I no lo entendí :)
- add ax, 544 - ¿Por qué '8K'? ¿Y por qué agregamos 544? ¿Por qué no 512?
- mov sp, 4096 - Aquí establecemos el puntero de la pila.
¿Para qué hacemos todas estas manipulaciones antes de configurar el puntero de la pila?
¿Tiene la fuente para el resto del gestor de arranque? –
Sí. Está disponible aquí http://mikeos.berlios.de/#downloads o lo he compartido aquí http://snipt.org/Tmon –
Ligera tangente: podría estar equivocado en esto, y no tengo el manual de Intel útil para verificar, pero creo que las instrucciones 'CLI' y' STI' son innecesarias aquí. IIRC, se garantiza que si un movimiento a 'SS' es seguido inmediatamente por un movimiento a 'SP', entonces no ocurrirán interrupciones entre las dos instrucciones de movimiento. – bcat