Captura de cadenas con formato

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
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
Comentarios
Publicar un comentario