El sector de arranque (ASM)

Iniciado por Riki_89D, 5 Marzo 2010, 21:25 PM

0 Miembros y 2 Visitantes están viendo este tema.

Riki_89D

Hola que tal estan??


bueno vi una practica en PDF que explicaba como programar el sector de arraque de un ordenador y a la vez definia lo que es el sector de arrranque,pues bien el code que poninan solo colgaba el PC,pero es para ver como se programa i tal en ASM de 16 BIts (a modo real), para realizar esa practica me piden estos programas:

El ensamblador: gas    (No lo e encontrado :()
El Enlazador: id           (No lo e encontrado)
El emulador: Qemu   (Este si lo encontre)

i digo yo,no se puede hacer eso por ejemplo con FASM?????

como seria el code con FASM??

salu2

Riki_89D

He encontrado este code en FASM,es sobre el setor de arranque,sesupone que debe salir un "HOL MUNDO":
Código (asm) [Seleccionar]

org 0x7C00
use16

;-----------------------------; INICIO

inicio:

   xor      ax,ax      ; AX = 0
   mov      ds,ax      ; DS = 0
   mov      si,msg      ; SI apunta a msg
   call      print      ; Llamamos al procedimiento print

   jmp  $

;-----------------------------; PRINT
print:

   lodsb            ; Cargamos el caracter de DS:SI en AL
   or   al,al         ; Hacemos un OR al registro AL
   jz    .fin_print      ; Terminamos si es cero
   mov   ah,0x0E         ; Poner caracter (parametro int 0x10)
   int   0x10            ; BIOS VIDEO
   jmp   print         ; Siguiente caracter

.fin_print:

   ret            ; termina el procedimiento y regresamos

;-----------------------------; CONSTANTES

   msg   db   " HOLA MUNDO!",0     

;-----------------------------; FIRMA

times 510- ($-inicio)  db 0
dw 0xaa55



alfinal de todo me queda un archivo .BIN,que ago entonces para probar eso?? que hago con el archivo BIN????



salu2

bizco

CitarEl ensamblador: gas    (No lo e encontrado :()

yo creo que se habla de gnu assembler (gas).

Riki_89D

I que me dices del .BIN??? pueod meterlo en un Pnendrive i arrancar desde alli???



salu2

08l00D

Si, podes hacer booteable un pendrive hay herramientas para ello. Pero tampoco es necesario para lo que queres hacer, algo mas aconsejable es que testees esas cosas en una virtual machine o maquina virtual como bochs o qemu.
Busca en google vas a encontrar informacion a montones, en la pagina http://osdev.org tambien hay mucha informacion acerca del sector de arranque que supongo te sera de interes...

Y por lo de gas y ld, son herramientas parte de gnu utilities y desconozco si hay un port para windows, lo que si podes usar cygwin para emular un entorno unix instalar los paquetes binutils y usarlos desde ese entorno emulado..

Riki_89D

OK,pues ya tengo el QEMU,Pero,como le digo al QEMU que inicio mi Archvo BIN (BOOT.BIN) para ver si funciona correcatmente????

e buscadoe n google tutoriales i me salen paa emular Windows i son para Linux :(



salu2

08l00D

Con QEMU podes emular el booteo desde un CD, disco Floppy, etc. Para eso tenes que crear una imagen con tu archivo binario, y despues se lo pasas como parametro a QEMU...

Para crear el archivo imagen -> http://www.nu2.nu/mkbt/
mkbt tu_archivo.bin tu_archivo.img
Para ejecutar QEMU..
qemu -L .\ -fda tu_archivo.img

http://wiki.osdev.org/Bare_Bones
http://wiki.osdev.org/QEMU
http://wiki.osdev.org/Disk_Images
http://www.nu2.nu/mkbt/

tan bien no habias buscado  :P

Riki_89D

ok,yo ago:  mkbt Boot.bin IMagen.img

i me dice k IMagen.img no existe,entonces ese archivo ya tiene k estar creado???

Riki_89D

É Echo esto:

qemu -L .\ -fda Boot.BIN


i me a salido EL HOLA MUNDO ^^ me a funcionado!!

i la ultima pregunta es,ara para k me vaya en el pc isn el qemu osea para probarlo de verdad devria grabarlo en un CD rom asin tal kual i ejecutar el CD desde el inico del PC no??

08l00D

Cita de: Riki_89D en  6 Marzo 2010, 21:15 PM
É Echo esto:

qemu -L .\ -fda Boot.BIN


i me a salido EL HOLA MUNDO ^^ me a funcionado!!

i la ultima pregunta es,ara para k me vaya en el pc isn el qemu osea para probarlo de verdad devria grabarlo en un CD rom asin tal kual i ejecutar el CD desde el inico del PC no??
Hacer un CD Booteable es otra historia, hay un estandar especifico llamado El Torito para hacer booteable un CD.
Te recomiendo que te pongas a leer antes que nada.. mira aca te dejo un par de links ...
http://wiki.osdev.org/El-Torito
http://wiki.osdev.org/Bootable_CD