You are on page 1of 9

Presentar una tabla con 15 instrucciones del lenguaje assembler explicando

para que sirve cada instruccin. Indicar Nombre de la instruccin, Sintaxis y un


breve ejemplo

1Instruccin MOV
Propsito: Transferencia de datos entre celdas de memoria, registros y
acumulador.
Sintaxis:
MOV Destino,Fuente
Donde Destino es el lugar a donde se movern los datos y fuente es el lugar
donde se encuentran dichos datos.
Los diferentes movimientos de datos permitidos para esta instruccin son:
Destino: memoria. Fuente: acumulador
Destino: acumulador. Fuente: memoria
Destino: registro de segmento. Fuente: memoria/registro
Destino: memoria/registro. Fuente: registro de segmento
Destino: registro. Fuente: registro
Destino: registro. Fuente: memoria
Destino: memoria. Fuente: registro
Destino: registro. Fuente: dato inmediato
Destino: memoria. Fuente: dato inmediato
Ejemplo:
MOV AX,0006h

MOV BX,AX
MOV AX,4C00h
INT 21H
Este pequeo programa mueve el valor 0006H al registro AX, luego mueve el
contenido de AX (0006h) al registro BX, por ltimo mueve el valor 4C00h al
registro AX para terminar la ejecucin con la opcin 4C de la interrupcin 21h.
Instruccin MOVS (MOVSB) (MOVSW)
Propsito: Mover cadenas de bytes o palabras desde la fuente, direccionada por
SI, hasta el destino direccionado por DI.
Sintaxis:
MOVS
Este comando no necesita parametros ya que toma como direccin fuente el
contenido del registro SI y como destino el contenido de DI. La secuencia de
instrucciones siguiente ilustran esto:
MOV SI, OFFSET VAR1
MOV DI, OFFSET VAR2
MOVS
Primero inicializamos los valores de SI y DI con las direcciones de las variables
VAR1 y VAR2 respectivamente, despues al ejecutar MOVS se copia el contenido
de VAR1 a VAR2.
Los comandos MOVSB y MOVSW se utilizan de la misma forma que MOVS, el
primero mueve un byte y el segundo una palabra.
Instruccin LODS (LODSB) (LODSW)
Propsito: Cargar cadenas de un byte o palabra al acumulador.
Sintaxis:
LODS
Esta instruccin toma la cadena que se encuentre en la direccin especificada por
SI, la carga al registro AL (o AX) y suma o resta 1 (segun el estado de DF) a SI si
la transferencia es de bytes o 2 si la transferencia es de palabras.

MOV SI, OFFSET VAR1


LODS
La primer linea carga la direccin de VAR1 en SI y la segunda linea lleva el
contenido de esa localidad al registro AL.
Los comandos LODSB y LODSW se utilizan de la misma forma, el primero
carga un byte y el segundo una palabra (utiliza el registro completo AX).
Instruccin LAHF
Propsito: Transfiere al registro AH el contenido de las banderas
Sintaxis:
LAHF
Esta instruccin es til para verificar el estado de las banderas durante la
ejecucin de nuestro programa.
Las banderas quedan en el siguiente orden dentro del registro:
SF ZF ? AF ? PF ? CF
El simbolo "?" significa que en esos bits habr. un valor indefinido.
Instruccin LDS
Propsito: Cargar el registro del segmento de datos
Sintaxis:
LDS destino, fuente
El operando fuente debe ser una palabra doble en memoria. La palabra asociada
con la direccin mas grande es transferida a DS, o sea que se toma como la
direccin del segmento. La palabra asociada con la direccin menor es la
direccin del desplazamiento y se deposita en el registro sealado como destino.
Instruccin LEA
Propsito: Carga la direccin del operando fuente.

Sintaxis:
LEA destino, fuente
El operando fuente debe estar ubicado en memoria, y se coloca su
desplazamiento en el registro ndice o apuntador especificado en destino.
Para ilustrar una de las facilidades que tenemos con este comando pongamos una
equivalencia:
MOV SI, OFFSET VAR1
Equivale a:
LEA SI, VAR1
Es muy probable que para el programador sea mas sencillo crear programas
extensos utilizando este ltimo formato.
Instruccin LES
Propsito: Carga el registro del segmento extra
Sintaxis:
LES destino, fuente
El operando fuente debe ser un operando en memoria de palabra doble. El
contenido de la palabra con la direccin mayor se interpreta como la direccin
del segmento y se coloca en ES. La palabra con la direccin menor es la
direccin del desplazamiento y se coloca en el registro especificado en el
parmetro destino.
Instruccin POP
Propsito: Recupera un dato de la pila
Sintaxis:
POP destino
Esta instruccin transfiere el ltimo valor almacenado en la pila al operando
destino, despues incrementa en dos el registro SP.

Este incremento se debe a que la pila va creciendo desde la direccin mas alta de
memoria del segmento hacia la mas baja, y la pila solo trabaja con palabras (2
bytes), entonces al incrementar en dos el registro SP realmente se le esta restando
dos al tamao real de la pila.
Instruccin POPF
Propsito: Extrae las banderas almacenadas en la pila.
Sintaxis:
POPF
Este comando transfiere bits de la palabra almacenada en la parte superior de la
pila hacia el registro de banderas.
La forma de transferencia es la siguiente:
BIT BANDERA
0 CF
2 PF
4 AF
6 ZF
7 SF
8 TF
9 IF
10 DF
11 OF
Estas localizaciones son las mismas para el comando PUSHF
Una vez hecha la transferencia se incrementa en 2 el registro SP disminuyendo
as el tamao de la pila.
Instruccin PUSH
Propsito: Coloca una palabra en la pila.
Sintaxis:
PUSH fuente

La instruccin PUSH decrementa en dos el valor de SP y luego transfiere el


contenido del operando fuente a la nueva direccin resultante en el registro recin
modificado.
El decremento en la direccin se debe a que al agregar valores a la pila sta crece
de la direccin mayor a la direccin menor del segmento, por lo tanto al restarle 2
al valor del registro SP lo que hacemos es aumentar el tamao de la pila en dos
bytes, que es la nica cantidad de informacin que puede manejar la pila en cada
entrada y salida de datos.
Instruccin PUSHF
Propsito: Coloca el valor de las banderas en la pila
Sintaxis:
PUSHF
Este comando decrementa en 2 el valor del registro SP y luego se transfiere el
contenido del registro de banderas a la pila, en la direccin indicada por SP.
Las banderas quedan almacenadas en memoria en los mismos bits indicados en el
comando POPF

Instruccin AND
Propsito: Realiza la conjuncin de los operandos bit por bit.
Sintaxis:
AND destino, fuente
Con esta instruccin se lleva a cabo la operacin "y" lgica de los dos operandos:
Fuente Destino | Destino
-------------------------11|1
10|0
01|0
00|0

El resultado de la operacin se almacena en el operando destino.


Instruccin NEG
Propsito: Genera el complemento a 2
Sintaxis:
NEG destino
Esta instruccin genera el complemento a 2 del operando destino y lo almacena
en este mismo operando. Por ejemplo, si AX guarda el valor de 1234H, entonces:
NEG AX
Nos dejara almacenado en el registro AX el valor EDCCH.
Instruccin NOT
Propsito: Lleva a cabo la negacin bit por bit del operando destino.
Sintaxis:
NOT destino
El resultado se guarda en el mismo operando destino.
Instruccin OR
Propsito: OR inclusivo lgico
Sintaxis:
OR destino, fuente
La instruccin OR lleva a cabo, bit por bit, la disyuncin inclusiva lgica de los
dos operandos:
Fuente Destino | Destino
-------------------------11|1
10|1

01|1
00|0
Instruccin TEST
Propsito: Comparar logicamente los operandos
Sintaxis:
TEST destino, fuente
Realiza una conjuncin, bit por bit, de los operandos, pero a diferencia de AND
esta instruccin no coloca el resultado en el operando destino, solo tiene efecto
sobre el estado de las banderas.
Instruccin XOR
Propsito: OR exclusivo
Sintaxis:
XOR destino, fuente
Su funcin es efectuar bit por bit la disyuncin exclusiva lgica de los dos
operandos.
Fuente Destino | Destino
-------------------------11|0
00|1
01|1
00|0
Instruccin ADC
Propsito: Adicin con acarreo.
Sintaxis:
ADC destino, fuente

Lleva a cabo la suma de dos operandos y suma uno al resultado en caso de que la
bandera CF est activada, esto es, en caso de que exista acarreo.
El resultado se guarda en el operando destino.