elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado:


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  ASM (Moderador: Eternal Idol)
| | | |-+  [SOLUCIONADO] No funciona mi bootloader !!!!
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] 2 3 Ir Abajo Respuesta Imprimir
Autor Tema: [SOLUCIONADO] No funciona mi bootloader !!!!  (Leído 13,889 veces)
lucaslopez0000

Desconectado Desconectado

Mensajes: 95


Ver Perfil WWW
[SOLUCIONADO] No funciona mi bootloader !!!!
« en: 24 Junio 2013, 20:02 pm »

Hola a todos  , estoy tipeando un bootloader en asm , pero esto me tiene ya medio calvo. No se donde puede estar el fallo , no tengo la mas remota idea !!!
Os paso el codigo
Código
  1. [BITS 16]
  2. [ORG 0x07C] ; Uno de los fallos estaba aqui , puse mal esta direccion
  3.  
  4. ; Entry point
  5. jmp main
  6.  
  7. ; Rutinas
  8. putchar:
  9. ; He comprobado que la rutina putchar funciona perfectamente , no la revises
  10. ; Imprime el caracter guardado en el registro al
  11. mov ah , 0x0E
  12. mov bh , 0x00
  13. mov bl , 0x07
  14. int 10h
  15. retn
  16.  
  17. putstr:
  18. ; Y el otro fallo estaba aqui , que no me asegure de que lodsb incrementara SI
  19.                ; Abajo del post esta el codigo corregido
  20. lodsb ; Lee 1 caracter del string
  21. cmp al , 0x00
  22. jz retornar
  23. call putchar
  24. jmp putstr
  25. retornar:
  26. retn
  27. main:
  28. ; El problema PUEDE estar aqui
  29. mov si , msgTexto
  30. call putstr
  31.  
  32. ; Declaraciones
  33. msgTexto db 0x0D, 0x0A, "Hola mundo!!", 0x00 ; El mensaje
  34.  
  35. ; Firma bootloader
  36. times 510-($-$$) db 0
  37. dw 0xAA55
  38.  

No comprendo donde esta el problema , como dato os digo que ni se mueve el cursor :( Muchas gracias de antemano


La solucion fue esta :
1 ) Corregi el valor de ORG , que lo puse mal por un error de tipeo
2 ) Como solucion temporal hasta que maneje bien lods y familia , hice un mov al , [DS:SI]. Luego antes de repetir el bucle incremento SI para pasar al siguiente caracter y por fin resuelto !!!!!!!!!!!!!!!!!!!!!!!(10^9000 exclamaciones)!!!!!!!!!!!!!!!!!!!!

Os dejo el codigo corregido :)

Código
  1. [BITS 16]
  2. [ORG 0x7C00] ; Este es el org correcto
  3.  
  4. ; Entry point
  5. jmp main
  6.  
  7. ; Rutinas
  8. putchar:
  9. ; Imprime el caracter guardado en el registro al
  10. mov ah , 0x0E
  11. mov bh , 0x00
  12. mov bl , 0x07
  13. int 10h
  14. retn
  15.  
  16. putstr:
  17. cld ; Asi me aseguro de que lodsb incremente SI
  18.                lodsb
  19. or al , al
  20. jz retornar
  21. call putchar
  22. jmp putstr
  23. retornar:
  24. retn
  25. main:
  26. mov si , msgTexto
  27. call putstr
  28.  
  29. ; Declaraciones
  30. msgTexto db 0x0D, 0x0A, "Hola mundo!!", 0x00 ; El mensaje
  31.  
  32. ; Firma bootloader
  33. times 510-($-$$) db 0
  34. dw 0xAA55
  35.  

Nota : Lo se usar cld para asegurarme de que lodsb incremente SI ha posteado por cpu2


« Última modificación: 26 Junio 2013, 18:18 pm por The C Coder » En línea

La manera mas simple de solucionar los problemas de windows , los virus , el spyware , la basura de microsoft en general

USA LINUX
x64core


Desconectado Desconectado

Mensajes: 1.908


Ver Perfil
Re: S.O.S No funciona mi bootloader !!!!
« Respuesta #1 en: 24 Junio 2013, 20:12 pm »

Has depurado el codigo?  :rolleyes:


En línea

lucaslopez0000

Desconectado Desconectado

Mensajes: 95


Ver Perfil WWW
Re: S.O.S No funciona mi bootloader !!!!
« Respuesta #2 en: 24 Junio 2013, 20:35 pm »

Has depurado el codigo?  :rolleyes:

Hay 2 problemas

1. Yo lo que hago cuando programo bootloaders es usar unas directivas nasm
que dejan el fichero en 512 bytes y le agregan la firma bootloader , y luego lo pruebo en una maquina virtual. Pero yo no se de ningun "depurador para maquina virtual"
2. Llevo 3 semanas aprendiendo ASM , y como en C la vida era de color rosa no necesitaba debuggers. Asi que nunca me dio por aprender a usarlos y no tengo ni idea de depurar  :(
En línea

La manera mas simple de solucionar los problemas de windows , los virus , el spyware , la basura de microsoft en general

USA LINUX
Eternal Idol
Kernel coder
Moderador
***
Desconectado Desconectado

Mensajes: 5.937


Israel nunca torturó niños, ni lo volverá a hacer.


Ver Perfil WWW
Re: S.O.S No funciona mi bootloader !!!!
« Respuesta #3 en: 24 Junio 2013, 21:31 pm »

¿Y despues del main ejecutas msgTexto?
En línea

La economía nunca ha sido libre: o la controla el Estado en beneficio del Pueblo o lo hacen los grandes consorcios en perjuicio de éste.
Juan Domingo Perón
x64core


Desconectado Desconectado

Mensajes: 1.908


Ver Perfil
Re: S.O.S No funciona mi bootloader !!!!
« Respuesta #4 en: 24 Junio 2013, 21:38 pm »

Yo uso bochs para tales requerimientos  ;D
Create una imagen, insertas el codigo, cargas la imagen a la VM y a depurar  :D
En línea

lucaslopez0000

Desconectado Desconectado

Mensajes: 95


Ver Perfil WWW
Re: S.O.S No funciona mi bootloader !!!!
« Respuesta #5 en: 24 Junio 2013, 21:47 pm »

¿Y despues del main ejecutas msgTexto?

Punto 1.
He visto bootloaders "hola mundo" que lo ponen despues de main
Punto 2
¿ ejecutar msgTexto ???
usando msgTexto db "unacadena" , lo que haces es incrustar unacadena en el fichero resultante , es algo propio de nasm y creo que tu usas masm. Como la BIOS carga los 512 primeros bytes , tambien cargará en algun sitio del segmento de datos la cadena hola mundo , y luego la idea es que una vez en memoria recorrer todos los caracteres. de todos modos probaré lo que tu dices
En línea

La manera mas simple de solucionar los problemas de windows , los virus , el spyware , la basura de microsoft en general

USA LINUX
x64core


Desconectado Desconectado

Mensajes: 1.908


Ver Perfil
Re: S.O.S No funciona mi bootloader !!!!
« Respuesta #6 en: 24 Junio 2013, 21:50 pm »

Punto 1.
He visto bootloaders "hola mundo" que lo ponen despues de main
Punto 2
¿ ejecutar msgTexto ???
usando msgTexto db "unacadena" , lo que haces es incrustar unacadena en el fichero resultante , es algo propio de nasm y creo que tu usas masm. Como la BIOS carga los 512 primeros bytes , tambien cargará en algun sitio del segmento de datos la cadena hola mundo , y luego la idea es que una vez en memoria recorrer todos los caracteres. de todos modos probaré lo que tu dices

jajaja Es notable que te falta mucho por aprender creo que lo que deberias es empezar
a leer un libro de programacion en ensamblador   ;D
En línea

Eternal Idol
Kernel coder
Moderador
***
Desconectado Desconectado

Mensajes: 5.937


Israel nunca torturó niños, ni lo volverá a hacer.


Ver Perfil WWW
Re: S.O.S No funciona mi bootloader !!!!
« Respuesta #7 en: 24 Junio 2013, 21:51 pm »

x64Core tiene razon, demasiadas preguntas sin sentido y respuestas idem. No tenes bases, por eso no comprendes lo que hace tu main, leelo de nuevo y si seguis sin comprender olvidate de hacer un bootloader y primero aprende a hacer un programa en assembly.
En línea

La economía nunca ha sido libre: o la controla el Estado en beneficio del Pueblo o lo hacen los grandes consorcios en perjuicio de éste.
Juan Domingo Perón
MCKSys Argentina
Moderador Global
***
Desconectado Desconectado

Mensajes: 5.469


Diviértete crackeando, que para eso estamos!


Ver Perfil
Re: S.O.S No funciona mi bootloader !!!!
« Respuesta #8 en: 24 Junio 2013, 21:52 pm »

Siguiendo lo que dijo x64Core (1er comment):

http://wiki.osdev.org/VMware
http://weichong78.blogspot.com.ar/2010/04/vmware-qemu-and-gdb-for-boot-time-real.html

Otra info interesante:

http://cyberview.wordpress.com/2010/09/16/debugging-bios-under-vmware-using-idas-gdb-debugger/

Saludos!
En línea

MCKSys Argentina

"Si piensas que algo está bien sólo porque todo el mundo lo cree, no estás pensando."

lucaslopez0000

Desconectado Desconectado

Mensajes: 95


Ver Perfil WWW
Re: S.O.S No funciona mi bootloader !!!!
« Respuesta #9 en: 24 Junio 2013, 21:55 pm »

x64Core tiene razon, demasiadas preguntas sin sentido y respuestas idem. No tenes bases, por eso no comprendes lo que hace tu main, leelo de nuevo y si seguis sin comprender olvidate de hacer un bootloader y primero aprende a hacer un programa en assembly.

Estuve estudiandome varios manuales tanto de asm con S.O como asm sin S.O
Por lo visto parece que tengo que leer mucho mas ...
En línea

La manera mas simple de solucionar los problemas de windows , los virus , el spyware , la basura de microsoft en general

USA LINUX
Páginas: [1] 2 3 Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
[Solucionado]No me funciona Internet en mi netbook!
Redes
Hyman68 5 6,061 Último mensaje 10 Octubre 2010, 03:24 am
por Hyman68
(SOLUCIONADO) me dicen si les funciona!! « 1 2 »
Programación C/C++
;c1v!c 12 6,304 Último mensaje 22 Febrero 2011, 18:49 pm
por Garfield07
SSH X11 Forwarding. Como Funciona? (Solucionado)
Redes
frogstalon 2 3,914 Último mensaje 8 Septiembre 2011, 22:04 pm
por frogstalon
[Solucionado].Net Global.asax no funciona
.NET (C#, VB.NET, ASP)
NetJava 2 4,972 Último mensaje 21 Marzo 2013, 01:10 am
por NetJava
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines