Título: [SOLUCIONADO] ¿ Por qué DB ? Publicado por: lucaslopez0000 en 22 Junio 2013, 11:09 am Hola , he estado esta semana aprendiendo ensamblador , y he visto que en un bootloader que muestra hola mundo con interrupciones de la bios , una parte del codigo dice mensaje DB "Hola mundo" , 0
Sin embargo DB significa define byte , y la cadena hola mundo tiene mas de un byte ¿ Entonces por qué usan DB al declararla ? Muchas gracias PD : El codigo que vi es correcto seguro Título: Re: ¿ Por qué DB ? Publicado por: xv0 en 22 Junio 2013, 12:00 pm Declara byte a byte lo que esta dentro de las comillas, y sin olvidarte del cero, que esta separado con una coma.
Eso se puede hacer así: Código
Esto se podría también hacer de esta forma: Código
Puedes hacerlo de muchas formas, igualmente los bytes serán cargados en memoria. Un saludo. Título: Re: ¿ Por qué DB ? Publicado por: lucaslopez0000 en 22 Junio 2013, 22:05 pm Declara byte a byte lo que esta dentro de las comillas, y sin olvidarte del cero, que esta separado con una coma. Eso se puede hacer así: Código
Esto se podría también hacer de esta forma: Código
Puedes hacerlo de muchas formas, igualmente los bytes serán cargados en memoria. Un saludo. Muchas gracias por responder , es decir que si me ha quedado claro es el propio programa ensamblador el que sustituye la definicion de un string por la de todos sus caracteres. Tambien me he dado cuenta de que la manera de declararlas varia de un ensamblador a otro ( de nasm a gas por ejemplo ) Tambien me he dado cuenta de que te lo incrusta en el archivo , ya que por ejemplo el bootloader que estoy estudiando usa la directiva times para rellenar con ceros hasta los 510 bytes. luego agrega los 2 ultimos bytes de firma bootloader. Como la bios carga 512 bytes asi tendrias cargado el string en memoria para hacer lo que proceda. Muchas gracias me ha sido de ayuda tu respuesta :) Título: Re: ¿ Por qué DB ? Publicado por: xv0 en 22 Junio 2013, 22:23 pm es decir que si me ha quedado claro es el propio programa ensamblador el que sustituye la definicion de un string por la de todos sus caracteres. Si, las definiciones solo valen para "ayudar" a entenderlo mejor, pero como ya te dije es lo mismo. Tambien me he dado cuenta de que te lo incrusta en el archivo Exacto, todo los bytes estan en la section data, dale un disassembler a esa section para entenderlo todo. Contra más datos mayor sera el peso del ejecutable. Un saludo. |