Instrucciones Lógicas - ITESCAM
Document Sample


Instrucciones Lógicas: NEG, NOT, AND, OR, XOR
* NEG: Esta instrucción lo que hace es calcular el complemento a
dos del operando, y almacenando en el mismo lugar. Esto
es, efectivamente, equivalente a cambiar de signo el ope-
rando de la instrucción.
Ejemplo:
MOV ax, 5 ; a AX se le pasa el valor 5.
NEG ax ; Se haya el complemento a 2 de AX y se guarda en AX (AX= -5).
NEG byte ptr es:[bx+si+2]; Se haya el complemento a 2 de la posición de memoria
; (dentro del Segmento Extra) indicada por el de "BX+S-
I+2"
* NOT: Se realiza el NOT lógico del operando bit a bit. El NOT
lógico bit a bit consiste en invertir cada bit del
operando (pasar los 0 a 1 y los 1 a 0; 10100 -> 01011)
Ejemplo:
NOT si ; El valor que tenga SI pasa los 0 a 1 y los 1 a 0.
NOT word ptr es:[0] ; Lo mismo pero en una posición de memoria.
* AND: Operación "y lógico" a nivel de bit entre los dos operan-
dos. El resultado se almacena en el destino.
Formato AND destino, fuente.
0 0 - 0
0 1 - 0
1 0 - 0
1 1 - 1
Ejemplo:
AND ax, bx ; AND lógico entre AX y BX. El resultado queda en AX.
AND es:[0], dx ; Lo mismo pero con posiciones de memoria.
AND di, es:[si]
AND byte ptr[9], 3 ; Lo mismo pero con valores inmediatos.
* OR: Operación "o lógico exclusivo" a nivel entre los dos
operandos. El resultado se almacena en el destino.
Formato OR destino, fuente.
0 0 - 0
0 1 - 1
1 0 - 1
1 1 - 1
Ejemplo:
OR al, ah ; Las mismas operaciones que con AND pero utilizando el OR.
OR [di], ch
OR cl, [bp+4]
OR byte ptr es:[si], 1
* XOR: Operación "o lógico exclusivo" a nivel de bit entre los
dos operandos. El resultado se almacena en destino.
Formato XOR destino, fuente.
0 0 - 0
0 1 - 1
1 0 - 1
1 1 - 0
Ejemplo:
XOR ax, ax ; El XOR entre dos bits con el mismo valor es siempre 0,
; independientemente del valor previo de AX (AX=0).
; Las ventajas de hacerlo así son dos: la ejecución de XOR reg, reg es más
; rápida que la de MOV reg, o que la de MOV ax,0 , y la codificación de la
; primera ocupa menos bytes que la segunda; Esta técnica no puede utilizar
; se para poner a cero los registros de segmento.
XOR byte ptr[55aah], 4
XOR al, 00aah
* XCHG: Intercambia el contenido entre dos operandos. No pueden
utilizarse registros de segmento como operandos.
Ejemplo:
XCHG si, di ; Si SI tiene valor 45 y DI tiene valor 68, ahora, DI se queda con
; valor 45 y SI con 68.
XCHG al, [bx+4]
XCHG ss:[si], bx
* CMP: Formato CMP destino, origen. (destino - origen) Esta ins-
trucción realiza una resta de un operando origen sobre un
operando destino, pero con la particularidad de no
almacenar el resultado y no modificar ninguno de los 2
operandos, pero si se modifican los bits de indicadores
(Flags). Los operandos deben ser del mismo tipo.
Esta modificación de los bits de indicadores, nos permi-
tirá posteriormente, mediante la inspección de los
mismos, poder realizar determinadas acciones. Normalmente
después de una instrucción de comparación (CMP), hay una
instrucción de salto.
Ejemplo:
CMP ax, bx ; Comparamos AX con BX
JL menor ; Si AX es menor que BX saltamos a la etiqueta MENOR
.
.
MENOR:
CMP bl, cl
CMP bx, cx
CMP bl, byte ptr es:[si]
CMP word ptr es[si], bx
CMP bx, 30
CMP byte ptr es:[si], 01h ; Normalmente, después de cada instrucción de
;comparación, viene una instrucción de salto.
Get documents about "