Tengo una duda, que es lo que hace AND, porque en este code de yurix lo utiliza, yo os lo pongo como me lo he escrito yo en mi PC:
include 'win32ax.inc'
.data
jx db 'Es impar',0
.code
start:
mov eax,5
and eax,1
jnz impar
ret
impar:
push 0
push jx
push jx
push 0
call [MessageBoxA]
ret
.end start  
			
			
			
				CitarAND Destino, Dato
Imaginemos que tenemos guardado en eax el valor 101011 y en ebx el valor 011101. Tras hacer "and eax, ebx" nos quedaría guardado en eax el valor  001001.
Sacado del Tutorial de ASM de E0N ;)
Es decir que "and eax, 1" aplica el operador AND a 
eax y 
1 y guarda el resultado en eax.
			
 
			
			
				Es una operacion logica aplicada a cada bit del destino y la fuente, si ambos son 1 entonces el resultado sera 1 sino sera 0. 1 es T (true) y 0 es F (false), la tabla de verdaderos de AND es simple:
T T T
T F F
F T F
F F F
http://pdos.csail.mit.edu/6.828/2006/readings/i386/AND.htm
http://en.wikipedia.org/wiki/Logical_AND
http://en.wikipedia.org/wiki/Binary_and
http://en.wikipedia.org/wiki/Bitwise_operation#AND
En este caso es como Lewert dice, la operacion se realiza entre eax (5) y 1, el objetivo es determinar si el numero es par:
5 = 00000101
AND
1 = 00000001
----------------
1 = 00000001
Al usar este tipo de and en eax nos aseguramos que el numero sera 1 si no es par o 0 si lo es (un numero par no tiene el primer bit nunca).
			
			
			
				Osea que se utiliza para sumar valores, no?
			
			
			
				Cita de: Erik# en  6 Julio 2009, 14:42 PM
Osea que se utiliza para sumar valores, no?
Multiplicar...
La suma seria un OR.
Un Saludo
			
 
			
			
				A vale gracias, no me acordaba que lo de sumar era add.
			
			
			
				No ... se usa para hacer un AND logico ... y un OR no es una suma 5 OR 1 es 5 ... lean un poco por favor.
			
			
			
				Cita de: Eternal Idol en  6 Julio 2009, 15:05 PM
No ... se usa para hacer un AND logico ... y un OR no es una suma 5 OR 1 es 5 ... lean un poco por favor.
Claro.. pero la correspondencia en operaciones de un solo bit el OR se parece a una suma y el AND a una multiplicacion. Pense que el lo preguntaba por eso.
Ademas creo que a el le quedaria claro que el AND no multiplica despues de ver tu ejemplo (5 AND 1 = 1) xDD.
Un Saludo
			
 
			
			
				Cita de: alki en  6 Julio 2009, 15:59 PMClaro.. pero la correspondencia en operaciones de un solo bit el OR se parece a una suma y el AND a una multiplicacion. Pense que el lo preguntaba por eso.
0 OR 0 = 0, 1 OR 1 = 1. El AND en bit si; 34 AND 1 = 0.
Cita de: alki en  6 Julio 2009, 15:59 PMAdemas creo que a el le quedaria claro que el AND no multiplica despues de ver tu ejemplo (5 AND 1 = 1) xDD.
Si se penso que sumaba  ;D :-X
			
 
			
			
				Hola erik
Como trabaja AND : 
Es muy facil.And lo que hace es multiplicar los bits por ejemplo si es 
destino * fuente
0 * 0 = 0
0 * 1 = 0
1 * 0 = 0
1 * 1 = 1
Es muy fácil.
			
			
			
				Exacto; eso es lo que dice la documentacion enlazada ....................