Título: [SOLUCIONADO] ¿ Que pinta aqui el registro si ? Publicado por: lucaslopez0000 en 24 Junio 2013, 13:30 pm Hola , estoy estudiando el codigo fuente de un bootloader y me he dado cuenta de una cosa , que luego os cuento despues de poner el codigo
Código
Lo que no comprendo es que en la linea 17 como va a mover un string al registro si ?? Este codigo funciona , pero yo lo intente por mi lado sin usar la instruccion lodsb y me sale un caracer raro. Estoy desconcertado , no comprendo como mueve un string a un registro , ¿¿¿??? Alguien me explica como narices hace el autor de este codigo para mostrar el mensaje ????? Muchas gracias :) Título: Re: ¿ Que pinta aqui el registro si ? Publicado por: xv0 en 24 Junio 2013, 15:06 pm SI es el primer argumento de la función DisplayMessage. No mueve una cadena si no la dirección que apunta a esa cadena.
Lo que hace ese lodsb es copiar el primer byte del contenido de la dirección de si a al. Y luego depende de como este la bandera DF se incrementa o decrementa la dirección de si, que en tú caso es incrementar. Se imprime dicho carácter si no es NULL con la interrupción 0x10, si es NULL se salta a .DONE y si no pues sigue el ciclo de lodsb. Si no entiendes algo más del código ya sabes, pero no sé porque empiezas con algo tan avanzado se nota que no entiendas nada. Un saludo. Título: Re: ¿ Que pinta aqui el registro si ? Publicado por: lucaslopez0000 en 24 Junio 2013, 15:43 pm SI es el primer argumento de la función DisplayMessage. No mueve una cadena si no la dirección que apunta a esa cadena. Lo que hace ese lodsb es copiar el primer byte del contenido de la dirección de si a al. Y luego depende de como este la bandera DF se incrementa o decrementa la dirección de si, que en tú caso es incrementar. Se imprime dicho carácter si no es NULL con la interrupción 0x10, si es NULL se salta a .DONE y si no pues sigue el ciclo de lodsb. Si no entiendes algo más del código ya sabes, pero no sé porque empiezas con algo tan avanzado se nota que no entiendas nada. Un saludo. No se trata de nada muy avanzado , de hecho llevo 3 semanas aprendiendo ensamblador y ya habia visto bootloaders antes. Lo que pasa es que el que escribio el codigo lo hizo de una manera poco habitual , muchos otros bootloaders 'hola mundo' usaban otro metodo que no implica lodsb. Por ejemplo cuando comprueba si el caracter es cero con Código
otro modo de hacerlo igual de valido es Código
Lo que quiero decir con esto es que hay muchas maneras de hacer las cosas , y cada programador tiene su estilo propio , que puede que a otros no les parezca claro y vean otro modo mas simple de hacerlo. Aclarado esto ultimo , te doy las gracias :) Título: Re: ¿ Que pinta aqui el registro si ? Publicado por: xv0 en 24 Junio 2013, 17:34 pm No se trata de nada muy avanzado , de hecho llevo 3 semanas aprendiendo ensamblador y ya habia visto bootloaders antes. Por la pregunta y la formulación me dio esa sensación. Lo que pasa es que el que escribio el codigo lo hizo de una manera poco habitual , muchos otros bootloaders 'hola mundo' usaban otro metodo que no implica lodsb. La instrucción lods es muy eficiente, para conseguir códigos más potentes tienes que hacer cosas poco habituales. Lo que quiero decir con esto es que hay muchas maneras de hacer las cosas , y cada programador tiene su estilo propio , que puede que a otros no les parezca claro y vean otro modo mas simple de hacerlo. Si, en este caso las dos son iguales de buenas, un ejemplo si yo estoy programando una shellcode prefiero el or, así no dejo bytes núlos, todo depende de lo que estes haciendo y tú estilo claro. Un saludo. Título: Re: ¿ Que pinta aqui el registro si ? Publicado por: lucaslopez0000 en 24 Junio 2013, 17:55 pm Por la pregunta y la formulación me dio esa sensación. La instrucción lods es muy eficiente, para conseguir códigos más potentes tienes que hacer cosas poco habituales. Si, en este caso las dos son iguales de buenas, un ejemplo si yo estoy programando una shellcode prefiero el or, así no dejo bytes núlos, todo depende de lo que estes haciendo y tú estilo claro. Un saludo. Tienes razon. La proxima vez intentare formular la pregunta de otro modo ;) |