You are on page 1of 8

Introducción

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.

En el presente trabajo se menciona que es una programació n hibrida y se


menciona las directivas de compilació n, coma también loas diferentes
instrucciones lineales, se profundiza en las matemá ticas, de pila y movimiento
Programació n hibrida
¿Qué es programació n hibrida?

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.

La programació n híbrida proporciona un mecanismo por medio del cual


podemos aprovechar las ventajas del lenguaje ensamblador y los lenguajes de
alto nivel. En si la programació n hibrida es aquella, con la que podemos mezclar
el có digo ensamblador con el có digo de cualquier otro lenguaje que admita
este procedimiento. Las Ventajas de la Programació n Híbrida son:

 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

Directivas para compilación hibrida

Las directivas de programació n hibrida son aquellas que nos permiten


ejecutar los comandos de ensamblador en un lenguaje de alto nivel.

4
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. 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 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;

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

; El programa solicita que se introduzcan dos números, 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.

6
Instrucciones lineales

TIPO INSTRUCCIÓN COMENTARIO


Transfiere datos entre dos registros o entre
un registro y memoria, y permite llevar datos
MOV
inmediatos a un registro o a memoria.
MOVIMIENT Sintaxis: MOV destino, origen
O
Intercambia datos entre dos registros o entre
XCHG un registro y memoria.
Sintaxis: XCHG destino, origen

Transfiere el elemento palabra que se


encuentra en lo alto de la pila (apuntado por
POP SP) al operando destino que ha de ser tipo
palabra, e incrementa en dos el registro SP.
Sintaxis: POP destino

Decrementa el puntero de pila (SP) en 2 y


luego trasfiere la palabra especificada en el
PUSH
operando en la cima de la pila.
Sintaxis: PUSH origen

PILA Traslada al registro de los indicadores la


palabra almacenada en la cima de la pila; a
POPF continuación el puntero de pila SP se
incrementa en 2.
Sintaxis: POPF

Decrementa en dos el puntero de pila y


traslada a la cima de la pila el contenido de
PUSHF
los indicadores.
Sintaxis: PUSHF

7
Instrucciones Aritméticas (Matemáticas)

INSTRUCCIÓN PROPÓSITO COMENTARIO

Convierte el contenido del registro AL en un


Ajusta los valores a nú mero BCD no empaquetado.
AAA
ASCII para la suma
Sintaxis: AAA

Suma los operandos origen, destino y el valor


Realizar una suma con del indicador de acarreo (0 ó 1) y el resultado
ADC lo almacena en el operando destino.
acarreo
Sintaxis: ADC destino, origen

Convierte el contenido del registro AL en un


Ajustar decimales para par de valores BCD.
DAA
la suma
Sintaxis: DAA

Convierte el resultado de la sustracció n de


dos operandos BCD no empaquetados para
Ajusta los valores a
AAS que siga siendo un nú mero BCD no
ASCII para la resta
empaquetado.
Sintaxis: ASS

Corrige el resultado en AL de la resta de dos


Ajuste decimal para la números BCD empaquetados, convirtiéndolo
DAS
resta también en un valor BCD empaquetado
Sintaxis: DAS

Resta el operando origen del operando


destino y el resultado lo almacena en el
SBB Resta con acareo
operando destino.
Sintaxis: SBB destino , origen

8
Resta el operando destino al operando origen,
colocando el resultado en el operando destino.
Los operandos pueden tener o no signo, siendo
Realiza la resta de los
SUB necesario que sean del mismo tipo, byte o
valores
palabra.

Sintaxis: SUB destino , origen


INSTRUCCIÓN PROPÓSITO COMENTARIO
Corrige el resultado en AX del producto de
Ajusta los valores a dos nú meros BCD no empaquetados,
AAM ASCII para la convirtiéndolo en un valor BCD también no
multiplicación empaquetado.
Sintaxis: AAM

Multiplica un operando origen con signo de


Realiza multiplicaciones longitud byte o palabra por AL o AX
IMUL
enteras con signo respectivamente.
Sintaxis: IMUL origen

el operando destino es un byte el


Multiplica el contenido
acumulador es AL guardando el resultado en
sin signo del
MUL AH y AL, si el contenido de AH es distinto de
acumulador por el
0 activa los indicadores CF y OF.
operando origen
Sintaxis: MUL origen

Convierte dos números BCD no empaquetados


contenidos en AH y AL en un dividendo de un
byte que queda almacenado en AL. Tras la
Ajusta los valores a
AAD operación AH queda a cero. Esta instrucción es
ASCII para la división
necesaria ANTES de la operación de dividir, al
contrario que AAM
Sintaxis: AAD
Divide, sin considerar el El cociente se guarda en AL o AX y el resto
signo, un número en AH o DX segú n el operando sea byte o
contenido en el palabra respectivamente. DX o AH deben ser
DIV
acumulador y su cero antes de la operació n.
extensión entre el
operando fuente. Sintaxis: DIV origen
IDIV Divide, considerando el El cociente se almacena en AL o AX segú n el
signo, un nú mero operando sea byte o palabra y de igual
contenido en el manera el resto en AH o DX. DX o AH deben
acumulador y su ser cero antes de la operació n

9
extensió n entre el
operando fuente. Sintaxis: IDIV origen.

Bibliografía

La informació n del presente trabajo se extrajo de las siguientes fuentes:


http://www.scribd.com/doc/23105033/UNIDAD-4-ENSAMBLADOR
http://www.monografias.com/trabajos-pdf/programacion-
ensamblador-procesadores/programacion-ensamblador-
procesadores.pdf
http://www.slideshare.net/gabohp12/equipo-6-programacion-hibrida
http://www.scribd.com/doc/6643575/unidad-2-ensamblador

10

You might also like