Вы находитесь на странице: 1из 6

INSTITUTO TECNOLGICO SUPERIOR DE JESS CARRANZA

INTERFACES

3.4 APLICACIONES CON EL LENGUAJE DE PROGRAMACION HIBRIDA

JOSUE HEBERTO OCHOA VELSQUEZ

ISC. LORENA N. RAMIREZ BELTRAN

3.4 APLICACIONES CON EL LENGUAJE DE PROGRAMACION HIBRIDA

La programacin hibrida proporciona un mecanismo por el medio del cual podemos aprovechar las ventajas del lenguaje ensamblador y los lenguajes de alto nivel, todo esto con el fin de escribir programas mas rpidos y eficientes. En la programacin de software, sistemas hbridos inteligentes denotan a los sistemas software que emplean en paralelo una combinacin de modelos de inteligencia artificial, mtodos y tcnicas de subcampos. Al trabajar con el lenguaje de alto nivel en ocasiones encontramos con el problema de que necesitamos que haga determinada funcin o trabajo pero desafortunadamente estas solo existe en otro lenguaje que no es el que necesitamos utilizar o simplemente no encontramos la funcin en ningn lenguaje de alto nivel. VENTAJAS DE LA PROGRAMACION HIBRIDA Para mejorar la escalabilidad Cuando muchas tareas producen desbalanceo Aplicaciones que permitan paralelismo de grano grueso y de fino Reduccin del tiempo de desarrolla de cdigo Cuando el numero de procesos AMPI es fijo En caso de mescla de paralelismo funcional y de datos

Ejemplo de un programa con un bloque de instrucciones en ensamblador:

Este programa muestra como se construye un programa hbrido utilizando un bloque Asm End; en Turbo Pascal. El programa solicita que se introduzcan dos nmeros, despus calcula la suma por medio de la instruccin Add de ensamblador y finalmente imprime el resultado en la pantalla. Program hibrido;

Uses Crt; Var N1,N2,Res : integer; Writeln(Introduce un nmero: ); Readln(N1); Writeln(Introduce un nmero: ); Readln(N2); Mov AX,N1; Add AX,N2; End; Writeln(El resultado de la suma es: ,Res); Readln; End. El programa del listado 24 realiza la suma de dos cantidades enteras (N1 y N2) introducidas previamente por el usuario, despus almacena el resultado en la variable Res y finalmente presenta el resultado en la pantalla. El lenguaje ensamblador no cuenta con funciones de entrada y salida formateada, por lo cual es muy complicado escribir programas que sean interactivos, es decir, programas que soliciten informacin o datos al usuario. Es aqu donde podemos explotar la facilidad de la programacin hbrida, en el programa anterior se utilizan las funciones Readln y Writeln para obtener y presentar informacin al usuario y dejamos los clculos para las rutinas en ensamblador. En el siguiente listado nos muestra la forma de escribir programas completos utilizando procedimientos hbridos. Este programa solicita al usuario que presione alguna tecla, cuando la tecla es presionada, sta se utiliza para rellenar la pantalla. El programa termina cuando se presiona la tecla enter.

El programa utiliza tres procedimientos: Limpia_Pantalla: Este se encarga de borrar la pantalla Cursor_XY: Este procedimiento reemplaza al Goto XY de Pascal Imprime_Car: Este procedimiento imprime en pantalla el carcter que se le pasa como parmetro. } Definicin De Bloques. NAME nombre_modulo_objeto: indica el nombre del mdulo objeto. Si no se incluye NAME, se tomar de la directiva TITLE o, en su defecto, del nombre del propio fichero fuente. GROUP segmento1, segmento2,... permite agrupar dos o ms segmentos lgicos en uno slo de no ms de 64 Kb totales (ojo: el ensamblador no comprueba este extremo, aunque s el enlazador). Ejemplo: Cuando se accede a un dato definido en algn segmento de un grupo y se emplea el operador OFFSET es preciso indicar el nombre del grupo como prefijo, de lo contrario el ensamblador no generar el desplazamiento correcto ni emitir errores!: MOV AX,dato ; incorrecto! MOV AX,supersegmento:dato ; correcto LABEL: Permite referenciar un smbolo con otro nombre, siendo factible redefinir el tipo. La sintaxis es: nombre LABEL tipo (tipo = BYTE, WORD, DWORD, NEAR o FAR). Ejemplo: En el ejemplo, con MOV AX,palabra se acceder a ambos bytes a la vez (el empleo de MOV AX,byte_bajo dara error: no se puede cargar un slo byte en un registro de 16 bits y el ensamblador no supone que realmente pretendamos tomar dos bytes consecutivos de la memoria). STRUC - ENDS: permite definir registros al estilo de los lenguajes de alto nivel, para acceder de una manera ms elegante a los campos de una informacin con cierta estructura. Estos campos pueden componerse de cualquiera de los tipos de datos simples (DB, DW, DD, DQ, DT) y pueden ser modificables o no en funcin de si son simples o mltiples, respectivamente: La anterior definicin de estructura no lleva implcita la

reserva de memoria necesaria, la cual ha de hacerse expresamente utilizando los ngulos '': En el ejemplo se definen los campos modificables (los nicos definibles) dejando sin definir (comas consecutivas) los no modificables, crendose la estructura 'felipe' que ocupa 27 bytes. Las cadenas de caracteres son rellenadas con espacios en blanco al final si no alcanzan el tamao mximo de la declaracin. El TASM es ms flexible y permite definir tambin el primer elemento de los campos mltiples sin dar error. Tras crear la estructura, es posible acceder a sus elementos utilizando un (.) para separar el nombre del campo: LEA BX,felipe MOV CL,[BX].peso ; equivale a [BX+12] RECORD: similar a STRUC pero operando con campos de bits. Permite definir una estructura determinada de byte o palabra para operar con comodidad. Sintaxis: Donde nombre permitir referenciar la estructura en el futuro, nombre_de_campo identifica los distintos campos, a los que se asigna un tamao (en bits) y opcionalmente un valor por defecto. La estructura registro totaliza 7 bits, por lo que ocupa un byte. Est dividida en tres campos que ocupan los 7 bits menos significativos del byte: el campo A ocupa los bits 6 y 5, el B los bits del byte: el campo A ocupa los bi1 al 4 y el C el bit 0: La reserva de memoria se realiza, por ejemplo, de la siguiente manera: reg1 registro Quedando reg1 con el valor binario 1001011 (el campo B permanece inalterado y el A y C toman los valores indicados). Ejemplos de operaciones soportadas: MOV AL, A ; AL = 5 (desplazamiento del bit ; menos significativo de A) MOV AL, MASK A ; AL = 01100000b (mscara de A) MOV AL, WIDTH A ; AL = 2 (anchura de A)

Вам также может понравиться