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

 

 


Tema destacado: Los 10 CVE más críticos (peligrosos) de 2020


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  ASM (Moderador: Eternal Idol)
| | | |-+  [SOLUCIONADO] ¿ Por qué DB ?
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: [SOLUCIONADO] ¿ Por qué DB ?  (Leído 2,443 veces)
lucaslopez0000

Desconectado Desconectado

Mensajes: 95


Ver Perfil WWW
[SOLUCIONADO] ¿ Por qué DB ?
« 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


« Última modificación: 25 Junio 2013, 18:12 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
xv0


Desconectado Desconectado

Mensajes: 1.026



Ver Perfil
Re: ¿ Por qué DB ?
« Respuesta #1 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
  1. .byte 0x48,0x6f,0x6c,0x61,0x20,0x6d,0x75,0x6e,0x64,0x6f,0x00  ; .long equivale a DB

Esto se podría también hacer de esta forma:

Código
  1. a: .long 0x616c6f48  ; DD
  2. b: .word 0x6d20,0x6e75  ; DW
  3. c: .byte 0x64,0x6f,0x00  ; DB

Puedes hacerlo de muchas formas, igualmente los bytes serán cargados en memoria.

Un saludo.


En línea

lucaslopez0000

Desconectado Desconectado

Mensajes: 95


Ver Perfil WWW
Re: ¿ Por qué DB ?
« Respuesta #2 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
  1. .byte 0x48,0x6f,0x6c,0x61,0x20,0x6d,0x75,0x6e,0x64,0x6f,0x00  ; .long equivale a DB

Esto se podría también hacer de esta forma:

Código
  1. a: .long 0x616c6f48  ; DD
  2. b: .word 0x6d20,0x6e75  ; DW
  3. c: .byte 0x64,0x6f,0x00  ; DB

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 :)
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
xv0


Desconectado Desconectado

Mensajes: 1.026



Ver Perfil
Re: ¿ Por qué DB ?
« Respuesta #3 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.
« Última modificación: 22 Junio 2013, 22:37 pm por cpu2 » En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
[SOLUCIONADO] y [NO SOLUCIONADO]
Sugerencias y dudas sobre el Foro
Hans el Topo 7 2,932 Último mensaje 20 Enero 2007, 14:04 pm
por Cobac
[Solucionado]Buscar en Textbox |@@|[Solucionado]Ordenar de Mayor a menor
Programación Visual Basic
agus0 6 7,602 Último mensaje 13 Septiembre 2009, 01:33 am
por agus0
SOlucionado
PHP
alexkof158 2 2,212 Último mensaje 12 Noviembre 2009, 22:46 pm
por :ohk<any>
[SOLUCIONADO] como poner [SOLUCIONADO] a un tema
Sugerencias y dudas sobre el Foro
jcrack 5 4,059 Último mensaje 25 Febrero 2011, 21:55 pm
por jcrack
{SOLUCIONADO} JTable me repite datos de un ResultSet {SOLUCIONADO}
Java
|Miguel| 4 6,234 Último mensaje 3 Marzo 2012, 19:26 pm
por Proteus1989
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines