Autor
|
Tema: [SOLUCIONADO] ¿ Por qué DB ? (Leído 2,472 veces)
|
lucaslopez0000
|
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
Mensajes: 1.026
|
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í: .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: a: .long 0x616c6f48 ; DD b: .word 0x6d20,0x6e75 ; DW 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
|
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í: .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: a: .long 0x616c6f48 ; DD b: .word 0x6d20,0x6e75 ; DW 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
Mensajes: 1.026
|
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
|
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
[SOLUCIONADO] y [NO SOLUCIONADO]
Sugerencias y dudas sobre el Foro
|
Hans el Topo
|
7
|
2,977
|
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,656
|
13 Septiembre 2009, 01:33 am
por agus0
|
|
|
SOlucionado
PHP
|
alexkof158
|
2
|
2,245
|
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,096
|
25 Febrero 2011, 21:55 pm
por jcrack
|
|
|
{SOLUCIONADO} JTable me repite datos de un ResultSet {SOLUCIONADO}
Java
|
|Miguel|
|
4
|
6,257
|
3 Marzo 2012, 19:26 pm
por Proteus1989
|
|