Foro de elhacker.net

Programación => ASM => Mensaje iniciado por: SokarTefnut en 15 Septiembre 2012, 21:49 pm



Título: Ya conseguí "arrancar" con mi primer bootloader, ¿ Y ahora que?
Publicado por: SokarTefnut en 15 Septiembre 2012, 21:49 pm
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


Título: Re: Ya conseguí "arrancar" con mi primer bootloader, ¿ Y ahora que?
Publicado por: _Enko en 15 Septiembre 2012, 22:10 pm
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.


Título: Re: Ya conseguí "arrancar" con mi primer bootloader, ¿ Y ahora que?
Publicado por: 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)  ??


Título: Re: Ya conseguí "arrancar" con mi primer bootloader, ¿ Y ahora que?
Publicado por: avesudra en 16 Septiembre 2012, 01:51 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.