Título: imprimir los bits que hay en una direccion de memoria Publicado por: lapras en 7 Noviembre 2009, 19:06 pm La verdad que no tengo ni idea de como hacerlo lo que mas me hacerco es esto:
Código: .text Título: Re: imprimir los bits que hay en una direccion de memoria Publicado por: Eternal Idol en 7 Noviembre 2009, 19:48 pm La direccion 1 seguro que no es valida, mejor intenta con la de tu main, asi sabras el codigo binario de las instrucciones ::)
PD. No mire el codigo pero depuralo con el gdb en todo caso. Título: Re: imprimir los bits que hay en una direccion de memoria Publicado por: lapras en 7 Noviembre 2009, 22:29 pm para poner los bits seria una strig? mira el ccodigo porfa que seguro que lo tengo todo mal :(
Título: Re: imprimir los bits que hay en una direccion de memoria Publicado por: Eternal Idol en 7 Noviembre 2009, 22:38 pm Si, de unos y ceros ...
¿Y si usas la g/libc? Tenes disponible la funcion printf (http://www.cplusplus.com/reference/clibrary/cstdio/printf/) por ejemplo, seria mucho mas simple y podrias imprimirlo en hexadecimal ... cuando ya la domines podes incluso depurarla y ver que hace exactamente. Título: Re: imprimir los bits que hay en una direccion de memoria Publicado por: Yurix en 13 Noviembre 2009, 16:06 pm Hola , puedes hacer eso con este codigo:
http://foro.elhacker.net/asm/codigos_de_yuri_grille-t257809.0.html;msg1269217#msg1269217 saludos Cualquier duda me dices! Título: Re: imprimir los bits que hay en una direccion de memoria Publicado por: lapras en 29 Noviembre 2009, 16:52 pm siiiiiiii, gracias Yurix es justo lo que buscaba.
Perdon que he estado estos dias ocupado con examenes y no he mirado el foro casi. Bueno ahora luego te digo que tal ;) Para que ensamblador es el codigo? EI: juntando mensajes. buf no entiendo na :-[ Que es bt? lpBinario es todo una variable? numero seria la celdilla de memoria? Título: Re: imprimir los bits que hay en una direccion de memoria Publicado por: Eternal Idol en 29 Noviembre 2009, 19:36 pm http://pdos.csail.mit.edu/6.828/2007/readings/i386/BT.htm
lpBinario es un puntero a cadena, numero es el entero (de un byte) a convertir. Mira el ejemplo de llamada: invoke IntToBin,0A0h,addr binario Título: Re: imprimir los bits que hay en una direccion de memoria Publicado por: Yurix en 2 Diciembre 2009, 17:53 pm Veo que este código no lo pillan mucho los novatos (eso no quiere decir que sea un master) , voy a poner otro código que es mas fácil de entender. Espéralo hoy mismo , lo estoy escribiendo .... : Te lo explico con lujo de detalles :: ----------------------------------------------------- mov eax, number ;<< El numero que se "convierte" mov ecx,020h ; Longitud total de los bits + 1 , es decir 20h es 32 en decimal mov ebx,offset buff - 1 ; Binario es la string donde se alojara el numero convertido aun3: shr eax,1 ; Esto es "botar" 1bit hacia la derecha. adc BYTE PTR[ebx+ecx], 30h loop aun3 ------------------------------------------------------- SHR , es lo mismo que hacer (>>) en otro lenguaje X , como C. Lo que hacemos es botar un bit hacia la derecha , cada bit expulsado activa el flag C *(carry flag) si es un 1 , si es un 0 no lo activa. Esto lo usamos para ir construyendo la cadena ASCII "01110101011". ADC , es una suma común + el bit del flag C , es decir , sumas 30h *(que es el CERO) y si el flag C esta activo se suma 1bit , lo que da como resultado el 31h (el UNO) El loop es mas fácil , tu mueves a ecx la cantidad de veces que quieres que se repita el show .Ej> mov ecx,10 hola: xor eax,eax < Se repite 10 veces.. loop hola Loop comprobara que ecx no sea CERO , si no lo es saltara a hola: , con cada salto se decrementa en 1 ecx , hasta llegar un momento en que sea CERO . ----- BYTE PTR[ebx+ecx] < Con esto lo que hago es apoyarme en ECX (que va de mayor a menor gracias al loop) para hacer el adc en ese lugar , la "base" es ebx que indica el lugar que reservamos para hacer esta operación. Te recuero que TIENE QUE SER UN LUGAR QUE ESTE "BACIO" con 0000s Gózalo Título: Re: imprimir los bits que hay en una direccion de memoria Publicado por: lapras en 3 Diciembre 2009, 19:47 pm madre mia que lujo, tampoco hacia falta que te molestases tanto, hombre
ya casi lo pillo ;D Lo del SRH me recuerda cuando en los bancos de micolegio ,hay unos que para hacerse hueco empujan la fila y se cae el del otro lado :xD :xD :xD :xD :xD :xD el que se queda fuera seria el que se queda en el registro de acarreo y el que empuja seria un CERO ¿lo he entendido? Código: IntToBin proc Numero:BYTE,lpBinario:DWORD gracias Título: Re: imprimir los bits que hay en una direccion de memoria Publicado por: Eternal Idol en 3 Diciembre 2009, 21:27 pm tuket: PROC (http://msdn.microsoft.com/en-us/library/01d2az3t(VS.80).aspx).
Título: Re: imprimir los bits que hay en una direccion de memoria Publicado por: lapras en 4 Diciembre 2009, 14:12 pm ah! es un macro de MASM? claro por es me daba error en esa linea(lo intentaba ensamblar con NASM)
Título: Re: imprimir los bits que hay en una direccion de memoria Publicado por: Yurix en 4 Diciembre 2009, 16:26 pm Eso , es como en un banco o como en la vida ! unos salen y otros entran ;) No es molestia para mi compartir con los demas la caca que se de asm! es mi deber como macho alfa :xD |