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

 

 


Tema destacado:


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  ASM (Moderador: Eternal Idol)
| | | |-+  Acesso a un bit concreto del registro
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Acesso a un bit concreto del registro  (Leído 3,810 veces)
silver2050

Desconectado Desconectado

Mensajes: 28


Ver Perfil
Acesso a un bit concreto del registro
« en: 24 Noviembre 2012, 19:52 pm »

Buenas a todos,

A ver si alguien puede echarme una mano, necesito saber como podría acceder a un bit concreto de un registro, es decir, acceder al bit 20 del registro EDX para saber su valor por ejemplo.

Saludos y gracias. 


En línea

x64core


Desconectado Desconectado

Mensajes: 1.908


Ver Perfil
Re: Acesso a un bit concreto del registro
« Respuesta #1 en: 24 Noviembre 2012, 19:58 pm »

Buenas a todos,

A ver si alguien puede echarme una mano, necesito saber como podría acceder a un bit concreto de un registro, es decir, acceder al bit 20 del registro EDX para saber su valor por ejemplo.

Saludos y gracias. 
usando una mascara:

MOV EAX,293829382
AND EAX,100000h
TEST EAX,EAX
JE NOHAY
; bit activo
...


En línea

silver2050

Desconectado Desconectado

Mensajes: 28


Ver Perfil
Re: Acesso a un bit concreto del registro
« Respuesta #2 en: 24 Noviembre 2012, 20:59 pm »

Muchas gracias compañero, aunque me he perdido un poco. A ver si puedo explicarme mejor:

Necesito hacer una función con código C y ASM, la cual hace varias funcionalidades y recibe un entero de entrada, entonces necesitaría acceder al bit del registro correspondiente al entero (0-31) de forma dinámica, tendría que realizar la máscara de forma dinámica, en lugar de intentar hacer 32 máscaras diferente. Soy novato en ensamblador y no sé si sería posible utilizando SHR (desplazamientos a la derecha) y luego aplicando una máscara.  ¿Cómo lo véis?

Saludos y muchas gracias por vuestro tiempo y ayuda
En línea

Ferno


Desconectado Desconectado

Mensajes: 375


Ver Perfil
Re: Acesso a un bit concreto del registro
« Respuesta #3 en: 24 Noviembre 2012, 21:17 pm »

Por supuesto, si puedes determinar en tiempo de ejecución la posición del bit a procesar, haces un shift right con el número de desplazamiento correspondiente al calculado en tiempo de ejecución y siempre utilizas el AND con el número 1. Así podrás saber si está activado el bit en cualquier posición.
En línea

x64core


Desconectado Desconectado

Mensajes: 1.908


Ver Perfil
Re: Acesso a un bit concreto del registro
« Respuesta #4 en: 24 Noviembre 2012, 21:22 pm »

Seria SHL, no SHR, y recordar establecer el registro a 1. tambíen se podria hacer con SHR pero seria de forma inversa aunque lo más
correcto seria SHL
En línea

Ferno


Desconectado Desconectado

Mensajes: 375


Ver Perfil
Re: Acesso a un bit concreto del registro
« Respuesta #5 en: 24 Noviembre 2012, 21:27 pm »

Seria SHL, no SHR, y recordar establecer el registro a 1. tambíen se podria hacer con SHR pero seria de forma inversa aunque lo más
correcto seria SHL

En realidad, depende. Al menos lo que yo dije que le entendí a el, sería hacer un shift right del registro donde posee el valor correspondiente (el bit que quiere identificar). Claro que se puede hacer un shift left al registro que contenga el "1" y "construir dinámicamente" la máscara. Pero bueno, son opciones :P
En línea

silver2050

Desconectado Desconectado

Mensajes: 28


Ver Perfil
Re: Acesso a un bit concreto del registro
« Respuesta #6 en: 24 Noviembre 2012, 21:44 pm »

Gracias  a ambos.

Entonces si quiero obtener el bit 17 de edx, podría utilizar:

SHL edx, 17  //¿podría utilizar [ebp+8], en lugar del 17?, sería donde se guarda el parámetro de entrada. La función que contiene mi código ASM sería "mi_función(int posicion)"
AND edx, 0x80000000
TEST edx,edx
« Última modificación: 24 Noviembre 2012, 21:50 pm por silver2050 » En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Día de la semaan de una fecha en concreto
PHP
bels_mike 3 1,958 Último mensaje 31 Agosto 2008, 14:07 pm
por bels_mike
como obtener contraseña de windows 2000 NT si tengo acesso remoto
Dudas Generales
Hunter_ESP 2 4,013 Último mensaje 3 Febrero 2011, 23:41 pm
por Hunter_ESP
Ayuda recuperar acesso directo
Dudas Generales
Senior++ 0 1,541 Último mensaje 23 Febrero 2014, 18:27 pm
por Senior++
Terminal concreto asociado a IP
Seguridad
mandragora1982 1 2,095 Último mensaje 24 Mayo 2014, 00:50 am
por r32
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines