SlideShare una empresa de Scribd logo
PROGRAMACIÓN HIBRIDA

En la programación software, sistemas híbridos inteligentes denotan a los sistemas software
que emplean, en paralelo, una combinación de modelos de inteligencia artificial, métodos y
técnicas de éstos subcampos

Cada sistema inteligente natural es un híbrido porque éstos desarrollan operaciones
mentales tanto en niveles simbólicos como sub-simbólicos. Desde hace pocos años se ha
ido desarrollando una discusión sobre la importancia en la inteligencia artificial de la
integración de todos éstos sistemas. Basados en las nociones de que se habían ya creado
simples y específicos sistemas de inteligencia artificial (como sistemas para la visión de
computadores, síntesis del habla, etc., o software que emplean alguno de los modelos
mencionados arriba) algunos autores proponen aque es ahora el momento de la integración
para crear complejos, grandes sistemas de inteligencia artificial. Investigadores destacados
sobre estas ideas son Marvin Minsky, Aaron Sloman, Deb Roy, Kristinn R. Thórisson y
Michel Arbib.

La metodología de diseño Creacionista (CDM, por sus siglas en inglés) (nótese en su
nombre referencias al deseo humano de ser el Arquitecto) es una filosofía de desarrollo
software diseñado específicamente para la creación de grandes sistemas A.I. CDM está
basado en pasos de diseño iterativos que guíen hacia la creación de una red de llamados
módulos interactivos, que se comunican por flujos tipados explícitos y mensajes discretos.
02

La organización Mindmakers es un portal online para la gente que trabaja en la integración
e incremento de la coloboración en el campo de la Inteligencia Artificial

Al trabajar con un lenguaje de alto nivel, en ocasiones nos encontramos con el problema de
que necesitamos que haga determinada función o trabajo pero desafortunadamente ésta solo
existe en otro lenguaje que no es el que necesitamos utilizar, o simplemente, no
encontramos esa función en ningún lenguaje de alto nivel.

03

Ventajas de la Programación Híbrida

ü Para mejorar la escalabilidad
ü Cuando muchas tareas producen desbalanceo
ü Aplicaciones que combinan paralelismo de grano grueso
        y fino
ü Reducción del tiempo de desarrollo de código
ü Cuando el número de procesos MPI es fijo
ü En caso de mezcla de paralelismo funcional y de datos

En este momento el lenguaje ensamblador constituye una herramienta no solo eficaz, sino
simple para producir un parche para el compilador de nuestro lenguaje preferido.
Tal vez el mayor problema con el que nos enfrentemos sea el de cómo conectar ambos
programas (el de alto y el de bajo niveles) y cómo pasar variables de un programa al otro.
Para conseguir nuestro objetivo se utilizan pseudo-operadores, es decir, instrucciones que
aparecen en el código fuente del ensamblador pero que no generan ninguna instrucción de
máquina, pero proporcionan directivas para que el ensamblador pueda operar con datos,
ramificaciones condicionales, generación de listados y con macros durante el proceso de
ensamble.

DIRECTIVAS PARA COMPILACIÓN HIBRIDA

Turbo Pascal permite escribir procedimientos y funciones en código ensamblador e
incluirlas como parte de los programas en lenguaje Pascal; para esto, Turbo Pascal cuenta
con dos palabras reservadas: Assembler y Asm.

Assembler permite indicarle a Turbo Pascal que la rutina o procedimiento que se está
escribiendo está totalmente escrita en código ensamblador.
Ejemplo de un procedimiento híbrido:
Procedure Limpia_Pantalla;
Assembler;
Asm
Mov AX,0600h ; procedimiento Clr Scr de la unidad CRT de Turbo Pascal
Mov BH,18h
Mov CX,0000h
Mov DX,184Fh
Int 10h
End;

Por otro lado, Asm nos permite incluir bloques de instrucciones en lenguaje ensamblador en
cualquier parte del programa sin necesidad de escribir procedimientos completos en
ensamblador.
Ejemplo de un programa con un bloque de instrucciones en ensamblador:
;El programa solicita que se introduzcan dos número, después calcula la suma por medio de
la instrucción Add de ensamblador y finalmente imprime el resultado en la pantalla.

; realiza la suma de dos cantidades enteras (N1 y N2) introducidas previamente por el
usuario, después almacena el resultado en la variable Res y finalmente presenta el resultado
en la pantalla.

Program hibrido;
Uses Crt;
Var
N1,N2,Res : integer;
Begin
Writeln(“Introduce un número: “);
Readln(N1);
Writeln(“Introduce un número: “);
Readln(N2);
Asm
Mov AX,N1;
Add AX,N2;
Mov Res,AX
End;
Writeln(“El resultado de la suma es: “,Res);
Readln;
End.

;Este programa solicita al usuario que presione alguna tecla, cuando la tecla es presionada,
ésta se utiliza para rellenar la pantalla. Termina cuando se presiona la tecla enter. 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 carácter que se le pasa como
parámetro.

Program Hibrido2;
Uses Crt;
Var
Car: Char;
i,j : integer;
;Este procedimiento limpia la pantalla y pone blanco sobre azul
Procedure Limpia_Pantalla;
Assembler;
Asm
Mov AX,0600h
Mov Bh,17h
Mov CX,0000h
Mov DX,184Fh
Int 10h
End;
;Este procedimiento imprime el carácter en la pantalla
Procedure Imprime_Car(C: Char);
Assembler;
Asm
Mov Ah,02h
Mov Dl,C
Int 21h
End;
;Este procedimiento tiene la misma función que el procedimiento Goto XY de Turbo Pascal
Procedure Cursor_XY(X,Y: Byte);
Assembler;
Asm
Mov Ah,02h
Mov Bh,00h
Mov Dh,Y
Mov Dl,X
Int 10h
End;
Begin
Limpia_Pantalla;
Repeat
Limpia_Pantalla;
Cursor_XY(0,0);
Write(‘Introduce un carácter: ‘);
Car:=Read Key;
Imprime_Car(Car);
Limpia_Pantalla;
If car #13 then
Begin
For i:=0 to 24 do
For j:=0 to 79 do
Cursor_XY(j,i);
Imprime_Car(Car);
End;
Cursor_XY(30,24);
Write(‘Presiona enter para salir u otro para seguir…’);
Readln;
Until car = #13;
End.

Tal vez el mayor problema es cómo conectar dos programas, el de alto y el de bajo niveles,
y cómo pasar variables de un programa al otro.
Para conseguir nuestro objetivo se utilizan pseudo-operadores, es decir, instrucciones que
aparecen en el código fuente del ensamblador pero que no generan ninguna instrucción de
máquina, pero proporcionan directivas para que el ensamblador pueda operar con datos,
ramificaciones condicionales, generación de listados y con macros durante el proceso de
ensamble.

El formato de este pseudo-operador es PUBLIC número, variable o rótulo

Ejemplo de uso de PUBLIC:

PUBLIC nombre
Instrucciones
RET
nombre ENDP

Más contenido relacionado

La actualidad más candente

Modelos Prescriptivos del Desarrollo del Sistema de Información
Modelos Prescriptivos del Desarrollo del Sistema de InformaciónModelos Prescriptivos del Desarrollo del Sistema de Información
Modelos Prescriptivos del Desarrollo del Sistema de InformaciónIsaias Toledo
 
Interrupciones
InterrupcionesInterrupciones
Interrupciones
YESENIA CETINA
 
Conceptos Unidad 1 Lenguajes Automatas Introducción a la Teoría de Lenguaje...
Conceptos Unidad 1 Lenguajes Automatas Introducción  a  la Teoría de Lenguaje...Conceptos Unidad 1 Lenguajes Automatas Introducción  a  la Teoría de Lenguaje...
Conceptos Unidad 1 Lenguajes Automatas Introducción a la Teoría de Lenguaje...
Hugo Alberto Rivera Diaz
 
TIPOS DE LENGUAJES ENSAMBLADOR Y CLASIFICACION DE MEMORIAS
TIPOS DE LENGUAJES ENSAMBLADOR Y CLASIFICACION DE MEMORIAS TIPOS DE LENGUAJES ENSAMBLADOR Y CLASIFICACION DE MEMORIAS
TIPOS DE LENGUAJES ENSAMBLADOR Y CLASIFICACION DE MEMORIAS
Guillermo Iván Prisco Pérez
 
Unidad 1 Ingenieria de software
Unidad 1 Ingenieria de softwareUnidad 1 Ingenieria de software
Unidad 1 Ingenieria de software
Jahiro Bojorquez
 
Registros de control y estados de la CPU
Registros de control y estados de la CPURegistros de control y estados de la CPU
Registros de control y estados de la CPUIvan Porras
 
TAREAS DE LA ING. DE REQUISITOS
TAREAS DE LA ING. DE REQUISITOSTAREAS DE LA ING. DE REQUISITOS
TAREAS DE LA ING. DE REQUISITOSxinithazangels
 
Portafolio unidad 2 [Lenguajes y autómatas]- Expresiones y lenguajes regulares
Portafolio unidad 2 [Lenguajes y autómatas]- Expresiones y lenguajes regularesPortafolio unidad 2 [Lenguajes y autómatas]- Expresiones y lenguajes regulares
Portafolio unidad 2 [Lenguajes y autómatas]- Expresiones y lenguajes regulares
Humano Terricola
 
Modelo cascada
Modelo cascadaModelo cascada
Modelo cascadamasilog
 
Transaccion
TransaccionTransaccion
Transaccion
Alberto Torres
 
268109592 operacion-general-de-la-memoria
268109592 operacion-general-de-la-memoria268109592 operacion-general-de-la-memoria
268109592 operacion-general-de-la-memoria
Rebeca Ortega
 
Unidad1 Lenguajes y automatas
Unidad1 Lenguajes y automatasUnidad1 Lenguajes y automatas
Unidad1 Lenguajes y automatas
Sergio Lara Guevara
 
Tutorial de JFLAP
Tutorial de JFLAPTutorial de JFLAP
Tutorial de JFLAP
Sara Martínez Gómez
 
Etapas del Proceso de la Ingeniería del Software
Etapas del Proceso de la Ingeniería del SoftwareEtapas del Proceso de la Ingeniería del Software
Etapas del Proceso de la Ingeniería del Software
T.I.C
 
Protección y Seguridad de los Sistemas Operativos
Protección y Seguridad de los Sistemas OperativosProtección y Seguridad de los Sistemas Operativos
Protección y Seguridad de los Sistemas Operativos
Richard J. Nuñez
 
Portafolio lenguajes y automatas unidad 3 - Autómatas finitos
Portafolio lenguajes y automatas unidad 3 - Autómatas finitosPortafolio lenguajes y automatas unidad 3 - Autómatas finitos
Portafolio lenguajes y automatas unidad 3 - Autómatas finitos
Humano Terricola
 
Manual de instalacion de Mongo db
Manual de instalacion de Mongo dbManual de instalacion de Mongo db
Manual de instalacion de Mongo db
Ruby B. Blanca
 

La actualidad más candente (20)

Modelos Prescriptivos del Desarrollo del Sistema de Información
Modelos Prescriptivos del Desarrollo del Sistema de InformaciónModelos Prescriptivos del Desarrollo del Sistema de Información
Modelos Prescriptivos del Desarrollo del Sistema de Información
 
Interrupciones
InterrupcionesInterrupciones
Interrupciones
 
Segmentacion de memoria
Segmentacion de memoriaSegmentacion de memoria
Segmentacion de memoria
 
Código intermedio
Código intermedioCódigo intermedio
Código intermedio
 
Conceptos Unidad 1 Lenguajes Automatas Introducción a la Teoría de Lenguaje...
Conceptos Unidad 1 Lenguajes Automatas Introducción  a  la Teoría de Lenguaje...Conceptos Unidad 1 Lenguajes Automatas Introducción  a  la Teoría de Lenguaje...
Conceptos Unidad 1 Lenguajes Automatas Introducción a la Teoría de Lenguaje...
 
TIPOS DE LENGUAJES ENSAMBLADOR Y CLASIFICACION DE MEMORIAS
TIPOS DE LENGUAJES ENSAMBLADOR Y CLASIFICACION DE MEMORIAS TIPOS DE LENGUAJES ENSAMBLADOR Y CLASIFICACION DE MEMORIAS
TIPOS DE LENGUAJES ENSAMBLADOR Y CLASIFICACION DE MEMORIAS
 
Unidad 1 Ingenieria de software
Unidad 1 Ingenieria de softwareUnidad 1 Ingenieria de software
Unidad 1 Ingenieria de software
 
Registros de control y estados de la CPU
Registros de control y estados de la CPURegistros de control y estados de la CPU
Registros de control y estados de la CPU
 
TAREAS DE LA ING. DE REQUISITOS
TAREAS DE LA ING. DE REQUISITOSTAREAS DE LA ING. DE REQUISITOS
TAREAS DE LA ING. DE REQUISITOS
 
Portafolio unidad 2 [Lenguajes y autómatas]- Expresiones y lenguajes regulares
Portafolio unidad 2 [Lenguajes y autómatas]- Expresiones y lenguajes regularesPortafolio unidad 2 [Lenguajes y autómatas]- Expresiones y lenguajes regulares
Portafolio unidad 2 [Lenguajes y autómatas]- Expresiones y lenguajes regulares
 
Modelo cascada
Modelo cascadaModelo cascada
Modelo cascada
 
Transaccion
TransaccionTransaccion
Transaccion
 
268109592 operacion-general-de-la-memoria
268109592 operacion-general-de-la-memoria268109592 operacion-general-de-la-memoria
268109592 operacion-general-de-la-memoria
 
Unidad1 Lenguajes y automatas
Unidad1 Lenguajes y automatasUnidad1 Lenguajes y automatas
Unidad1 Lenguajes y automatas
 
Tutorial de JFLAP
Tutorial de JFLAPTutorial de JFLAP
Tutorial de JFLAP
 
Etapas del Proceso de la Ingeniería del Software
Etapas del Proceso de la Ingeniería del SoftwareEtapas del Proceso de la Ingeniería del Software
Etapas del Proceso de la Ingeniería del Software
 
Protección y Seguridad de los Sistemas Operativos
Protección y Seguridad de los Sistemas OperativosProtección y Seguridad de los Sistemas Operativos
Protección y Seguridad de los Sistemas Operativos
 
Portafolio lenguajes y automatas unidad 3 - Autómatas finitos
Portafolio lenguajes y automatas unidad 3 - Autómatas finitosPortafolio lenguajes y automatas unidad 3 - Autómatas finitos
Portafolio lenguajes y automatas unidad 3 - Autómatas finitos
 
Manual de instalacion de Mongo db
Manual de instalacion de Mongo dbManual de instalacion de Mongo db
Manual de instalacion de Mongo db
 
Metodo de montecarlo
Metodo de montecarloMetodo de montecarlo
Metodo de montecarlo
 

Similar a Equipo 6 programacion hibrida

Visual basic terminado[1]
Visual basic terminado[1]Visual basic terminado[1]
Visual basic terminado[1]Jalil Segura
 
Visual basic terminado[1]
Visual basic terminado[1]Visual basic terminado[1]
Visual basic terminado[1]Jalil Segura
 
Algoritmos
AlgoritmosAlgoritmos
Algoritmosnileyna
 
Algoritmos
AlgoritmosAlgoritmos
Algoritmosnileyna
 
Algoritmos
AlgoritmosAlgoritmos
Algoritmosnileyna
 
Algoritmos
AlgoritmosAlgoritmos
Algoritmosnileyna
 
9º Algoritmos
9º Algoritmos9º Algoritmos
9º Algoritmosnileyna
 
Algoritmos
AlgoritmosAlgoritmos
Algoritmosnileyna
 
Algoritmos
AlgoritmosAlgoritmos
Algoritmosnileyna
 
Programación
ProgramaciónProgramación
Programación
Graceelml
 
Programa informático
Programa informáticoPrograma informático
Programa informáticotomorrowland
 
Introducción a Programación I (Clase1).pptx
Introducción a Programación I (Clase1).pptxIntroducción a Programación I (Clase1).pptx
Introducción a Programación I (Clase1).pptx
DavidGarca147527
 
Introducción a la programación
Introducción a la programaciónIntroducción a la programación
Introducción a la programaciónLinely Vergara
 
Programación.pptx
Programación.pptxProgramación.pptx
Programación.pptx
YHOALIBETHODALISMART
 
Qué es un algoritmo
Qué es un algoritmoQué es un algoritmo
Qué es un algoritmo
Abrirllave
 
Resolver problemas con_una_computadora
Resolver problemas con_una_computadoraResolver problemas con_una_computadora
Resolver problemas con_una_computadora
FaridCastillo2
 
Resolver problemas con_una_computadora
Resolver problemas con_una_computadoraResolver problemas con_una_computadora
Resolver problemas con_una_computadora
JulioVizcarra5
 
Compiladores financieros trabajo 10
Compiladores financieros trabajo 10Compiladores financieros trabajo 10
Compiladores financieros trabajo 10
anita andrea
 

Similar a Equipo 6 programacion hibrida (20)

Visual basic terminado[1]
Visual basic terminado[1]Visual basic terminado[1]
Visual basic terminado[1]
 
Visual basic terminado[1]
Visual basic terminado[1]Visual basic terminado[1]
Visual basic terminado[1]
 
Algoritmos
AlgoritmosAlgoritmos
Algoritmos
 
Algoritmos
AlgoritmosAlgoritmos
Algoritmos
 
Algoritmos
AlgoritmosAlgoritmos
Algoritmos
 
Algoritmos
AlgoritmosAlgoritmos
Algoritmos
 
9º Algoritmos
9º Algoritmos9º Algoritmos
9º Algoritmos
 
Algoritmos
AlgoritmosAlgoritmos
Algoritmos
 
Algoritmos
AlgoritmosAlgoritmos
Algoritmos
 
Programación
ProgramaciónProgramación
Programación
 
Programa informático
Programa informáticoPrograma informático
Programa informático
 
37975756-Guia-de-C
37975756-Guia-de-C37975756-Guia-de-C
37975756-Guia-de-C
 
Introducción a Programación I (Clase1).pptx
Introducción a Programación I (Clase1).pptxIntroducción a Programación I (Clase1).pptx
Introducción a Programación I (Clase1).pptx
 
Introducción a la programación
Introducción a la programaciónIntroducción a la programación
Introducción a la programación
 
Programación.pptx
Programación.pptxProgramación.pptx
Programación.pptx
 
Qué es un algoritmo
Qué es un algoritmoQué es un algoritmo
Qué es un algoritmo
 
Resolver problemas con_una_computadora
Resolver problemas con_una_computadoraResolver problemas con_una_computadora
Resolver problemas con_una_computadora
 
Resolver problemas con_una_computadora
Resolver problemas con_una_computadoraResolver problemas con_una_computadora
Resolver problemas con_una_computadora
 
Compiladores financieros trabajo 10
Compiladores financieros trabajo 10Compiladores financieros trabajo 10
Compiladores financieros trabajo 10
 
Lenguajes de desarrollo (programación)
Lenguajes de desarrollo (programación)Lenguajes de desarrollo (programación)
Lenguajes de desarrollo (programación)
 

Más de gabo

Proyecto Sound Search
Proyecto Sound SearchProyecto Sound Search
Proyecto Sound Searchgabo
 
Tabla comparativa
Tabla comparativaTabla comparativa
Tabla comparativagabo
 
Resultados encuesta
Resultados encuestaResultados encuesta
Resultados encuestagabo
 
Encuesta sound search
Encuesta sound searchEncuesta sound search
Encuesta sound searchgabo
 
Sound search
Sound searchSound search
Sound searchgabo
 
Equipo 6 comparaciones
Equipo 6 comparacionesEquipo 6 comparaciones
Equipo 6 comparacionesgabo
 
Equipo 6 codigo segment
Equipo 6 codigo segmentEquipo 6 codigo segment
Equipo 6 codigo segmentgabo
 
Equipo 6 buses
Equipo 6 busesEquipo 6 buses
Equipo 6 busesgabo
 
Emulador emu8086
Emulador emu8086Emulador emu8086
Emulador emu8086gabo
 
Condicional
CondicionalCondicional
Condicionalgabo
 
Condicional
CondicionalCondicional
Condicionalgabo
 
Condicional
CondicionalCondicional
Condicionalgabo
 
Equipo 1
Equipo 1Equipo 1
Equipo 1gabo
 
Equipo 1
Equipo 1Equipo 1
Equipo 1gabo
 
Modos de direccionamiento
Modos de direccionamientoModos de direccionamiento
Modos de direccionamientogabo
 
Equipo 5
Equipo 5Equipo 5
Equipo 5gabo
 
3.2.2 Externos
3.2.2 Externos3.2.2 Externos
3.2.2 Externosgabo
 
3.2.2 Externos
3.2.2 Externos3.2.2 Externos
3.2.2 Externosgabo
 
2.5.2 Circular
2.5.2 Circular2.5.2 Circular
2.5.2 Circulargabo
 
2.1.4 ajustes
2.1.4 ajustes2.1.4 ajustes
2.1.4 ajustesgabo
 

Más de gabo (20)

Proyecto Sound Search
Proyecto Sound SearchProyecto Sound Search
Proyecto Sound Search
 
Tabla comparativa
Tabla comparativaTabla comparativa
Tabla comparativa
 
Resultados encuesta
Resultados encuestaResultados encuesta
Resultados encuesta
 
Encuesta sound search
Encuesta sound searchEncuesta sound search
Encuesta sound search
 
Sound search
Sound searchSound search
Sound search
 
Equipo 6 comparaciones
Equipo 6 comparacionesEquipo 6 comparaciones
Equipo 6 comparaciones
 
Equipo 6 codigo segment
Equipo 6 codigo segmentEquipo 6 codigo segment
Equipo 6 codigo segment
 
Equipo 6 buses
Equipo 6 busesEquipo 6 buses
Equipo 6 buses
 
Emulador emu8086
Emulador emu8086Emulador emu8086
Emulador emu8086
 
Condicional
CondicionalCondicional
Condicional
 
Condicional
CondicionalCondicional
Condicional
 
Condicional
CondicionalCondicional
Condicional
 
Equipo 1
Equipo 1Equipo 1
Equipo 1
 
Equipo 1
Equipo 1Equipo 1
Equipo 1
 
Modos de direccionamiento
Modos de direccionamientoModos de direccionamiento
Modos de direccionamiento
 
Equipo 5
Equipo 5Equipo 5
Equipo 5
 
3.2.2 Externos
3.2.2 Externos3.2.2 Externos
3.2.2 Externos
 
3.2.2 Externos
3.2.2 Externos3.2.2 Externos
3.2.2 Externos
 
2.5.2 Circular
2.5.2 Circular2.5.2 Circular
2.5.2 Circular
 
2.1.4 ajustes
2.1.4 ajustes2.1.4 ajustes
2.1.4 ajustes
 

Equipo 6 programacion hibrida

  • 1. PROGRAMACIÓN HIBRIDA En la programación software, sistemas híbridos inteligentes denotan a los sistemas software que emplean, en paralelo, una combinación de modelos de inteligencia artificial, métodos y técnicas de éstos subcampos Cada sistema inteligente natural es un híbrido porque éstos desarrollan operaciones mentales tanto en niveles simbólicos como sub-simbólicos. Desde hace pocos años se ha ido desarrollando una discusión sobre la importancia en la inteligencia artificial de la integración de todos éstos sistemas. Basados en las nociones de que se habían ya creado simples y específicos sistemas de inteligencia artificial (como sistemas para la visión de computadores, síntesis del habla, etc., o software que emplean alguno de los modelos mencionados arriba) algunos autores proponen aque es ahora el momento de la integración para crear complejos, grandes sistemas de inteligencia artificial. Investigadores destacados sobre estas ideas son Marvin Minsky, Aaron Sloman, Deb Roy, Kristinn R. Thórisson y Michel Arbib. La metodología de diseño Creacionista (CDM, por sus siglas en inglés) (nótese en su nombre referencias al deseo humano de ser el Arquitecto) es una filosofía de desarrollo software diseñado específicamente para la creación de grandes sistemas A.I. CDM está basado en pasos de diseño iterativos que guíen hacia la creación de una red de llamados módulos interactivos, que se comunican por flujos tipados explícitos y mensajes discretos. 02 La organización Mindmakers es un portal online para la gente que trabaja en la integración e incremento de la coloboración en el campo de la Inteligencia Artificial Al trabajar con un lenguaje de alto nivel, en ocasiones nos encontramos con el problema de que necesitamos que haga determinada función o trabajo pero desafortunadamente ésta solo existe en otro lenguaje que no es el que necesitamos utilizar, o simplemente, no encontramos esa función en ningún lenguaje de alto nivel. 03 Ventajas de la Programación Híbrida ü Para mejorar la escalabilidad ü Cuando muchas tareas producen desbalanceo ü Aplicaciones que combinan paralelismo de grano grueso y fino ü Reducción del tiempo de desarrollo de código ü Cuando el número de procesos MPI es fijo ü En caso de mezcla de paralelismo funcional y de datos En este momento el lenguaje ensamblador constituye una herramienta no solo eficaz, sino simple para producir un parche para el compilador de nuestro lenguaje preferido. Tal vez el mayor problema con el que nos enfrentemos sea el de cómo conectar ambos
  • 2. programas (el de alto y el de bajo niveles) y cómo pasar variables de un programa al otro. Para conseguir nuestro objetivo se utilizan pseudo-operadores, es decir, instrucciones que aparecen en el código fuente del ensamblador pero que no generan ninguna instrucción de máquina, pero proporcionan directivas para que el ensamblador pueda operar con datos, ramificaciones condicionales, generación de listados y con macros durante el proceso de ensamble. DIRECTIVAS PARA COMPILACIÓN HIBRIDA Turbo Pascal permite escribir procedimientos y funciones en código ensamblador e incluirlas como parte de los programas en lenguaje Pascal; para esto, Turbo Pascal cuenta con dos palabras reservadas: Assembler y Asm. Assembler permite indicarle a Turbo Pascal que la rutina o procedimiento que se está escribiendo está totalmente escrita en código ensamblador. Ejemplo de un procedimiento híbrido: Procedure Limpia_Pantalla; Assembler; Asm Mov AX,0600h ; procedimiento Clr Scr de la unidad CRT de Turbo Pascal Mov BH,18h Mov CX,0000h Mov DX,184Fh Int 10h End; Por otro lado, Asm nos permite incluir bloques de instrucciones en lenguaje ensamblador en cualquier parte del programa sin necesidad de escribir procedimientos completos en ensamblador. Ejemplo de un programa con un bloque de instrucciones en ensamblador: ;El programa solicita que se introduzcan dos número, después calcula la suma por medio de la instrucción Add de ensamblador y finalmente imprime el resultado en la pantalla. ; realiza la suma de dos cantidades enteras (N1 y N2) introducidas previamente por el usuario, después almacena el resultado en la variable Res y finalmente presenta el resultado en la pantalla. Program hibrido; Uses Crt; Var N1,N2,Res : integer; Begin Writeln(“Introduce un número: “); Readln(N1); Writeln(“Introduce un número: “); Readln(N2); Asm
  • 3. Mov AX,N1; Add AX,N2; Mov Res,AX End; Writeln(“El resultado de la suma es: “,Res); Readln; End. ;Este programa solicita al usuario que presione alguna tecla, cuando la tecla es presionada, ésta se utiliza para rellenar la pantalla. Termina cuando se presiona la tecla enter. 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 carácter que se le pasa como parámetro. Program Hibrido2; Uses Crt; Var Car: Char; i,j : integer; ;Este procedimiento limpia la pantalla y pone blanco sobre azul Procedure Limpia_Pantalla; Assembler; Asm Mov AX,0600h Mov Bh,17h Mov CX,0000h Mov DX,184Fh Int 10h End; ;Este procedimiento imprime el carácter en la pantalla Procedure Imprime_Car(C: Char); Assembler; Asm Mov Ah,02h Mov Dl,C Int 21h End; ;Este procedimiento tiene la misma función que el procedimiento Goto XY de Turbo Pascal Procedure Cursor_XY(X,Y: Byte); Assembler; Asm Mov Ah,02h Mov Bh,00h Mov Dh,Y Mov Dl,X
  • 4. Int 10h End; Begin Limpia_Pantalla; Repeat Limpia_Pantalla; Cursor_XY(0,0); Write(‘Introduce un carácter: ‘); Car:=Read Key; Imprime_Car(Car); Limpia_Pantalla; If car #13 then Begin For i:=0 to 24 do For j:=0 to 79 do Cursor_XY(j,i); Imprime_Car(Car); End; Cursor_XY(30,24); Write(‘Presiona enter para salir u otro para seguir…’); Readln; Until car = #13; End. Tal vez el mayor problema es cómo conectar dos programas, el de alto y el de bajo niveles, y cómo pasar variables de un programa al otro. Para conseguir nuestro objetivo se utilizan pseudo-operadores, es decir, instrucciones que aparecen en el código fuente del ensamblador pero que no generan ninguna instrucción de máquina, pero proporcionan directivas para que el ensamblador pueda operar con datos, ramificaciones condicionales, generación de listados y con macros durante el proceso de ensamble. El formato de este pseudo-operador es PUBLIC número, variable o rótulo Ejemplo de uso de PUBLIC: PUBLIC nombre Instrucciones RET nombre ENDP