insinstrucciones para el uso de cadenas

13
INSTRUCCIONES PARA EL USO DE CADENA

Upload: daniel-siles

Post on 17-Jan-2016

220 views

Category:

Documents


3 download

DESCRIPTION

uso de cadenas en codigo ASMguia rapida para el aprendizaje de cadenas (string) en codigos assembly

TRANSCRIPT

Page 1: Insinstrucciones Para El Uso de Cadenas

INSTRUCCIONES PARA EL USO DE

CADENA

Page 2: Insinstrucciones Para El Uso de Cadenas

INTRODUCCION

• El uso de las cadenas de caracteres es imprescindible para el programador debido a que es el lenguaje natural de comunicación entre las personas. Aún cuando se pueden desarrollar programas que manejen cadenas de caracteres utilizando las instrucciones básicas presentadas, existen una serie de instrucciones dedicadas al manejo de este tipo de datos que tienen como objetivo el desarrollo de programas más eficientes. Esta sección introduce estas instrucciones. .

Page 3: Insinstrucciones Para El Uso de Cadenas

Para recordar

• Un carácter ASCII estándar está codificado en un octeto. Por lo tanto, una cadena de caracteres es una serie de caracteres de 1 octeto y no de 4 como los enteros.

• Una cadena termina con el carácter 0 (el valor 0 y no el carácter '0').

• Únicamente se pueden apilar elementos de 2 ó 4 octetos en la pila (a menos que se trate de una constante de un octeto).

Page 4: Insinstrucciones Para El Uso de Cadenas

Etiquetas

Tanto en los lenguajes de alto nivel como en los de bajo nivel, se puede hacer referencia a las posiciones (direcciones) de memoria mediante un símbolo. Tales símbolos se llaman etiquetas. Así pues tendremos dos tipos de etiquetas esencialmente:Etiquetas1) Etiquetas para hacer referencia a posiciones dentro del programa (líneas)2) Etiquetas para hacer referencia a variables del programa

Page 5: Insinstrucciones Para El Uso de Cadenas

EJEMPLO DE DECLARACIONES

Page 6: Insinstrucciones Para El Uso de Cadenas

RESERVA DE ESPACIO

• Cuando se trata de declarar espacio para cadenas muy grandes no tiene caso que enumeremos todos los bytes, en su lugar usamos RESB o RESW• RESB reserva un bloque de memoria de tamaño de N bytes,

• También se pueden reservar bytes de tamaño word con la directiva RESW

Page 7: Insinstrucciones Para El Uso de Cadenas

DECLARACIÓN DE CONSTANTES

No olvidar que comunmente en la declaración también se usan constantes. Para ello se emplea la instrucción EQU La sintaxis de EQU es similar a la de DB, solo que en lugar del db dw se pone EQU, ejemplo:Etiqueta EQU valorEn conjunto a la declaración de constantes, el nasm define dos pseudo operaciones que permiten el cálculo de direcciones estas dos constantes especiales son $ y $$, a continuación se explican

Page 8: Insinstrucciones Para El Uso de Cadenas

CONSTANTES ESPECIALES

El $ define la posición de la dirección de memoria al inicio de donde lo coloquemos

Ya que $ regresa la posición en donde éste se encuentra; si realizamos una resta del valor que tiene $ menos la posición de la etiqueta msj, lo que obtendremos como resultado es la longitud de la declaración msj. En este caso el resultado lo asignamos a la variable tamaño. Tamaño es igual a 6.

Page 9: Insinstrucciones Para El Uso de Cadenas

CONSTANTES ESPECIALES

De forma similar, el uso de la constante $$ regresa la dirección segmento en donde incluyamos esta constante

En este caso lo que se obtiene como resultado es la longitud de espacio ocupada por todo el segmento hasta antes la Declaración de la variable espacio. Para este ejemplo el valor es 23d o 17h. Un byte por cada carácter

Page 10: Insinstrucciones Para El Uso de Cadenas

INSTRUCCIONES PUSH Y POP. USO DEL STACK

Conocido el Stack o pila, veremos cómo escribir datos y recuperalos. Hay dos instrucciones para estas operaciones, que son: PUSH: Pone el dato de un registro en la pila.POP: Recupera el dato de la pila y lo escribe en un registro.

Page 11: Insinstrucciones Para El Uso de Cadenas

Nótese que los valores de CX y AX se intercambian en el código anterior. Existe una instrucción especial para intercambiar valores de dos registros: XCHG, la cual produce el mismo resultado con una única instrucción:

Page 12: Insinstrucciones Para El Uso de Cadenas

LLAMADA A INTERRUPCIÓN

INT INTERRUMPE EL PROGRAMA ACTUAL , CORRE LA SUBRRUTINA DE INT. INT: llama a una función del DOS o BIOS a través de una subrutina para realizar un servicio especial, por ejemplo manipular el vídeo, la pantalla, abrir un fichero, escribir en un puerto, etc. En este texto usaremos una de ellas, la salida a pantalla, que se corresponde con la 21h.

Page 13: Insinstrucciones Para El Uso de Cadenas

Casi todas las interrupciones tienen asociados más de un servicio, por ello es necesario pasar el número de servicio deseado. Se utiliza para ello el registro AH. El ejemplo más usado es escribir a lgo en la pantalla del monitor