Formato de instrucciones para lenguaje ensamblador:
Nombre_procedimiento PROC Instrucción operando destino , operando fuente
Nombre_procedimiento ENDP END Directivas de segmento ; comentarios MOV
Transfiere datos entre celdas de memoria y registros. Sintaxis: MOV
Destino,Fuente Ejemplo: MOV AX,0006h MOV DX,AX MOVS (MOVSB) (MOVSW) Mueve
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 dirección fuente el contenido del registro SI y como destino
el contenido de DI. Ejemplo: MOV SI, OFFSET VARIABLE1 MOV DI, OFFSET VARIABLE2
MOVS Primero se inicializan los valores de SI y DI con las direcciones de las
variables VARIABLE1 y VARIABLE2 respectivamente, despues al ejecutar MOVS se
copia el contenido de VARIABLE1 a VARIABLE2. Los comandos MOVSB y MOVSW se
utilizan de la misma forma que MOVS, el primero mueve un byte y el segundo una
palabra. LODS (LODSB) (LODSW) Carga cadenas de un byte o palabra al acumulador.
Sintaxis: LODS Toma la cadena que se encuentre en la dirección 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.
Ejemplo: MOV SI, OFFSET VARABLE1 LODS La primer linea carga la dirección de
VARIABLE1 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). LAHF
Transfiere al registro AH el contenido de las banderas Sintaxis: LAHF Se
utiliza para verificar el estado de las banderas durante la ejecución de un
programa. Las banderas quedan en el siguiente orden dentro del registro: SF ZF
__ AF __ PF __ CF LEA Carga la dirección 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.
Ejemplo: MOV SI, OFFSET VAR1 Que es equivalente a: LEA SI, VAR1 POP Recupera un
dato de la pila Sintaxis: POP destino Transfiere el último valor almacenado en
la pila al operando destino y despues incrementa en dos el registro SP. Este
incremento se debe a que la pila va creciendo desde la dirección 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 tamaño real de la pila. POPF Extrae las banderas almacenadas en
la pila. Sintaxis: POPF 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 tamaño
de la pila. PUSH Coloca una palabra en la pila. Sintaxis: PUSH fuente La
instrucción PUSH decrementa en dos el valor de SP y luego transfiere el
contenido del operando fuente a la nueva dirección resultante en el registro
recién modificado. El decremento en la dirección se debe a que al agregar
valores a la pila ésta crece de la dirección mayor a la dirección menor del
segmento, por lo tanto al restarle 2 al valor del registro SP lo que hacemos es
aumentar el tamaño de la pila en dos bytes, que es la única cantidad de
información que puede manejar la pila en cada entrada y salida de datos. PUSHF
Coloca el valor de las banderas en la pila Sintaxis: PUSHF Decrementa en 2 el
valor del registro SP y luego se transfiere el contenido del registro de
banderas a la pila, en la dirección indicada por SP. Las banderas quedan
almacenadas en memoria en los mismos bits indicados en el comando POPF
0 comentarios:
Publicar un comentario