Programación General > ASM (Ensamblador)

 Como Bootear Una Maquina

<< < (8/8)

Eternal Idol:

--- Cita de: "juanito20" --- Hola, es mi primer post y soy algo novato en asm, estoy trabajando en este proyecto y lo que no logro comprender bien es como escribir en el diskette, entiendo lo del sector 0, y cargar en memoria 7C00, pero me he encontrado con que aparentemente hay que escribir ceros y unos, o un .bin, en realidad no comprendo como, vi el ejemplo aki mostrado (el de BOB) pero lo que necesito saber es como funciona el COPYBOOT.EXE, y tengo la misma duda de otro colega que preguntaba por los parametros, gracias a quien lea esto!
--- Fin de la cita ---
La cuestion es escribir en el primer sector porque la BIOS carga ese sector en la direccion 7C00:000 y le transfiere el control mediante un jmp, entonces ahi tiene que estar el codigo inicial.

Sino me equivoco El COPYBOOT.EXE tiene un parametro para especificar el sector de comienzo de escritura, para escribir el loader usa el 0 (por lo explicado anteriormente) y para escribir el Kernel usa el 1, sector que es cargado en memoria mediante el loader.

No se como hace exactamente el COPYBOOT.exe y la verdad estoy bastante cansado como para mirarlo (podes usar el debug.com para verlo por ej.) pero podes usar la BIOS, mas concretamente la interrupcion 13h provee varios servicios, entre otros el 02h para leer y el 03h para escribir.

Tambien MS-DOS provee servicios para leer y escribir en las interrupciones 25h y 26h respectivamente.

Aca podes encontrar informacion sobre las interrupciones mencionadas anteriormente:
http://www.ctyme.com/rbrown.htm

 :smartass:  :devil:  :ph34r:

IceCube:
juanito20 si logras consegir el emu8086 encontraras ejemplos de como lograr escribir en el sector 0 de todas formas la interrupcion 13h funciona de la siguiente manera

ah=servicio(03)    al=numero de sectores a escribir(1)     ch=numero de cilindro(0)
dh=numero de sector(1)     dl=unidad(disquette=0)  es:bx=el puntero al buffer

lo que podrias hacer es hacer tu codigo (no puede ser mayor a 512 bytes) y generar un .bin para luego en un programa aparte leerlo meterlo en un buffer (buffer db 512 dup (?)) y escribirlo en el sector 0.

PD: espero que te ayude de algo ya que no soy muy bueno para explicar.

Navegación

[0] Índice de Mensajes

[*] Página Anterior

Ir a la versión completa