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: $ es la ubicación actual y db 510-($-start) , vamos a ver el bootloader debe tener 512 bytes exactosque significa o hacia donde apunta el simbolo $ en la instrucciones jmp $ , y ($-start) ?? 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. |