Funciones en ensamblador

Solo disponible en BuenasTareas
  • Páginas : 14 (3319 palabras )
  • Descarga(s) : 0
  • Publicado : 28 de noviembre de 2010
Leer documento completo
Vista previa del texto
Definición de procedimiento
Un procedimiento es un conjunto de instrucciones a los que podemos dirigir el flujo de nuestro programa, y una vez terminada la ejecución de dichas instrucciones se devuelve el control a la siguiente linea a procesar del código que mando llamar al procedimiento.
Los procedimientos nos ayudan a crear programas legibles y fáciles de modificar.
Al momento de invocar aun procedimiento se guarda en la pila la dirección de la siguiente instrucción del programa para que, una vez transferido el flujo del programa y terminado el procedimiento, se pueda regresar a la linea siguiente del programa original (el que llam— al procedimiento).
Sintaxis de un procedimiento
Existen dos tipos de procedimientos, los intrasegmentos, que se encuentran en el mismo segmento deinstrucciones y los intersegmentos que pueden ser almacenados en diferentes segmentos de memoria.
Cuando se utilizan los procedimientos intrasegmentos se almacena en la pila el valor de IP y cuando se utilizan los intersegmentos se almacena el valor CS:IP
Para desviar el flujo a un procedimiento (llamarlo) se utiliza la directiva:
CALL NombreDelProcedimiento
Las partes que componen a unprocedimiento son:
 
• Declaración del procedimiento
• código del procedimiento
• Directiva de regreso
• Terminación del procedimiento
Por ejemplo, si queremos una rutina que nos sume dos bytes, almacenados en AH y AL cada uno y guardar la suma en el registro BX:
Suma Proc Near ;Declaración del procedimiento
Mov Bx, 0 ;Contenido del procedimiento
Mov Bl, Ah
Mov Ah, 00
Add Bx, AxRet ;Directiva de regreso
Suma Endp ;Declaración de final del procedimiento
En la declaración la primera palabra, Suma, corresponde al nombre de nuestro procedimiento, Proc lo declara como tal y la palabra Near le indica al MASM que el procedimiento es intrasegmento. La directiva Ret carga la dirección IP almacenada en la pila para regresar al programa original, por último, la directiva SumaEndp indica el final del procedimiento.
Para declarar un procedimiento intersegmento sustituimos la palabra Near por la palabra FAR.
El llamado de este procedimiento se realiza de la siguiente forma:
Call Suma
Las macros ofrecen una mayor flexibilidad en la Programación comparadas con los procedimientos, pero no por ello se dejarán de utilizar estos últimos.
Definición de una macro
Una macroes un grupo de instrucciones repetitivas en un programa que se codifican solo una vez y pueden utilizarse cuantas veces sea necesario.
La principal diferencia entre una macro y un procedimiento es que en la macro se hace posible el paso de parámetros y en el procedimiento no (esto es aplicable solo para el MASM, hay otros lenguajes de Programación que si lo permiten). Al momento de ejecutarse lamacro cada parámetro es sustituido por el nombre o valor especificado al momento de llamarla.
Podemos decir entonces que un procedimiento es una extensión de un determinado programa, mientras que la macro es un módulo con funciones específicas que puede ser utilizado por diferentes programas.
Otra diferencia entre una macro y un procedimiento es la forma de llamar a cada uno, para llamar a unprocedimiento se requiere el uso de una directiva, en cambio la llamada a las macros se realiza como si se tratara de una instrucción del ensamblador.
Sintaxis de una macro
Las partes que componen a una macro son:
o Declaración de la macro
o código de la macro
o Directiva de terminación de la macro
La declaración de la macro se lleva a cabo de la siguiente forma:NombreMacro MACRO [parametro1, parametro2...]
Aunque se tiene la funcionalidad de los parametros es posible crear una macro que no los necesite.
La directiva de terminación de la macro es: ENDM
Un ejemplo de macro, para colocar el cursor en alguna posición determinada de la pantalla es:
Posicion MACRO Fila, Columna
PUSH AX
PUSH BX
PUSH DX
MOV AH, 02H
MOV DH, Fila
MOV DL, Columna
MOV BH,...
tracking img