Ya conseguí "arrancar" con mi primer bootloader, ¿ Y ahora que?

Iniciado por SokarTefnut, 15 Septiembre 2012, 21:49 PM

0 Miembros y 1 Visitante están viendo este tema.

SokarTefnut

Despues de varios dias y bastantes intentos, he logrado crear una imagen iso capaz de arrancar desde la BIOS, mi pregunta es ¿ cual sería el suiguiente paso lógico para hacer algo mas, como un mini kernel o algo así ?

lo cree con MASM 6.15 y la imagen ISO con MISO.


Por si le interesa a alguien dejo el código;

; compilar:  ml /AT /c /Zm primero.asm
; linkar :  LINK /TINY primero
; crear iso :  miso primero.iso -ab primero.com

.model tiny
 
COMSEG SEGMENT
org 7C00h      ; requerido por la BIOS
start:

        mov ax, 00h       
        mov ds, ax
         
        lea si,[ds: MyStr] ; si apunta a la cadena MyStr
        mov ah, 0Eh       ; para int 10 escribir pantalla   
        mov bh, 00h      ; numero pagina video
      mov cx,27      ; numero caracteres cadena MyStr
loopit: lodsb         ; carga AL con caracter incrementa SI
        int 10h         ; llamada bios
        LOOP loopit      ; decremente CX , repetir si CX no es cero

        jmp $                 

    MyStr db "Arranque creado por TomDiPe"
    db 510-($-start) dup (0)   ;Loads of zeroes
        dw 0AA55h             

COMSEG ENDS
end start
"Saber romper medidas de seguridad no hace que seas hacker, al igual que saber hacer un puente en un coche no te convierte en un ingeniero de automoción"
-- Eric Raymond -- http://en.wikipedia.org/wiki/Eric_S._Raymond

_Enko

pasar a proteced mode de 32bit, o long mode de 64bit.

Memory manager
File system
executable format
ui
etc...

No necesariamente con ese orden.

http://wiki.osdev.org/Expanded_Main_Page


Saludos.

SokarTefnut

Por cierto, una duda tengo y aunque lo he buscado no me ha quedado claro:

que significa o hacia donde apunta el simbolo $ en la instrucciones jmp $ , y ($-start)  ??
"Saber romper medidas de seguridad no hace que seas hacker, al igual que saber hacer un puente en un coche no te convierte en un ingeniero de automoción"
-- Eric Raymond -- http://en.wikipedia.org/wiki/Eric_S._Raymond

avesudra

#3
Cita de: SokarTefnut en 16 Septiembre 2012, 01:08 AM
Por cierto, una duda tengo y aunque lo he buscado no me ha quedado claro:

que significa o hacia donde apunta el simbolo $ en la instrucciones jmp $ , y ($-start)  ??
$ es la ubicación actual y db 510-($-start) , vamos a ver el bootloader debe tener 512 bytes exactos

510 menos (la ubicación actual - la ubicación de start) , lo que te va a dar es el tamaño que tiene el code hasta la ubicación actual , entonces coges y se lo restas a 510.

Con el valor que queda hace un dup 0 con los bytes que queden libres para rellenar , los últimos dos bytes son para el boot signature,  dw 0AA55h  , lo que hace es crear un bootloader de 512 bytes exactos.

En cuanto a lo de jmp $ es para que salte siempre al mismo lugar , digamos es como un bucle infinito , siempre salta a ese jmp y así indefinidamente.
Regístrate en