Vous êtes sur la page 1sur 11

Instituto Tecnolgico Superior de Champotn

Ing. En Sistemas Computacionales

Lenguaje Ensamblador

Unidad 4 Programacin hibrida

Alumno: Pablo Adrian Garcia Hernandez

Unidad 4 Programacin hibrida


[Escriba el subttulo del documento]
Investigacion de los subtemas de la unidad IV Blokied

INDICE
UNIDAD VI PROGRAMACION HIBRIDA ........................................................................ 3 4.1 Directivas para Compilacin Hibrida ........................................................................... 3 4.2 Funciones en Lenguaje Ensamblador ........................................................................... 3 4.2. Funciones ensamblador ............................................................................................... 5 INT 21H.......................................................................................................................... 5 4.3 Bloques en Lenguaje Ensamblador .............................................................................. 8 4.4 Operadores Lenguaje Ensamblador .............................................................................. 9 Operadores Aritmticos .................................................................................................. 9 Operadores Lgicos ........................................................................................................ 9 Operadores relacionales ................................................................................................ 10 Operadores de retorno de valores ................................................................................. 10 Operador OFFSET ........................................................................................................ 10 Operador TYPE ............................................................................................................ 10 Operadores SIZE y LENGTH ...................................................................................... 10 Operadores MASK y WIDTH: ..................................................................................... 10 Operadores de Atributos ............................................................................................... 11 4.5 Integrar mdulos de ensamblador en lenguajes de alto nivel ..................................... 11

UNIDAD VI PROGRAMACION HIBRIDA


4.1 Directivas para Compilacin Hibrida
La programacin hibrida es utilizada en los casos en donde el cdigo en ensamblador dificulta la estructuracin del programa. La programacin hbrida proporciona un mecanismo por medio del cual podemos aprovechar las ventajas del lenguaje ensamblador y los lenguajes de alto nivel, todo esto con el fin escribir programas ms rpidos y eficientes. Las directivas de programacin hibrida son aquellas que nos permiten ejecutar los comandos de ensamblador en un lenguaje de alto nivel. Ejemplo: la red es el siguiente donde utilizamos cdigo en ensamblador y cdigo pascal. El siguiente cdigo sirve para limpiar pantalla, est escrito en ensamblador dentro de una funcin en pascal, lo que es lo mismo a la funcin ClrScr en pascal. Procedure Limpia_Pantalla; Assembler; Asm Mov AX, 0600h Mov BH, 18h Mov CX, 0000h Mov DX, 184Fh Int 10h End;

4.2 Funciones en Lenguaje Ensamblador


Las directivas de programacin hibrida son aquellas que nos permiten ejecutar los comandos de ensamblador en un lenguaje de alto nivel.

Turbo Pascal permite escribir procedimientos y funciones en cdigoensamblador e incluirlas como parte de los programas en lenguaje Pascal; paraesto, Turbo Pascal cuenta con dos palabras reservadas: Assembler y Asm.

Assembler permite indicarle a Turbo Pascal que la rutina oprocedimiento que se est escribiendo est totalmente escrita en cdigoensamblador. Por otro lado, Asm nos permite incluir bloques de instruccionesen lenguaje ensamblador en cualquier parte del programa sin necesidad deescribir procedimientos completos en ensamblador. Ejemplo de un procedimiento hibrido: Procedure Limpia_Pantalla; Assembler; AsmMov AX,0600h ; procedimiento Clr Scr de la unidad CRT de TurboPascal Mov BH,18h Mov CX,0000h Mov DX,184Fh Int 10h End;

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

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

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

4.2. Funciones ensamblador


INT 21H La mayora de servicios funciones del sistema operativo MS-DOS se obtienen a travs de la interrupcin software 21H. Es por esto que se le denomina DOS-API: DOSAPPLICATION-PROGRAM-INTERFACE La INT 21H est compuesta por un grupo de funciones. Cuando se accede a la INT 21H, hay que indicar el nmero de funcin que queremos ejecutar. La llamada a la INT 21H se realizar como sigue:

INT 21H Funcin 01H Entrada de Carcter con eco ( salida)

INT 21H Funcin 02H Salida de Carcter

INT 21H Funcin 05H Envo de Carcter a la Impresora

INT 21H Funcin 06H Envo de Carcter a la pantalla como smbolo

INT 21H Funcin 09H Visualizacin de una cadena de caracteres

INT 21H Funcin 0AH Leer cadena de smbolos desde teclado y su cdigo se almacena al buffer

INT 21H Funcin 0BH Comprobacin del estado de la entrada

INT 21H Funcin 0EH Seleccin de disco

INT 21H Funcin 19H Obtener disco actual

INT 21H Funcin 39H Crear directorio

INT 21H Funcin 3AH Borrar directorio

INT 21H Funcin 3BH Establecer directorio actual

INT 21H Funcin 47H Obtener directorio actual

INT 21H Funcin 3CH Crear Fichero

INT 21H Funcin 3DH Abrir Fichero

INT 21H Funcin 3EH Cerrar Fichero

INT 21H Funcin 3FH Lectura de Fichero o dispositivo

INT 21H Funcin 40H Escritura en Fichero o dispositivo.

INT 21H Funcin 41H Borrar Fichero.

INT 21H Funcin 42H Establecer puntero de fichero.

INT 21H Funcin 43H Subfuncin 00h Obtener atributos de fichero

INT 21H Funcin 43H Subfuncin 01h Establecer atributos de fichero

INT 21H Funcin 56H Renombrar Fichero Mover Fichero

INT 21H Funcin 00H Terminar ejecucin del Programa

INT 21H Funcin 4CH Terminacin de Programa con Cdigo de Retorno

INT 21H Funcin 31H Finalizar el Programa y Dejar Residente

4.3 Bloques en Lenguaje Ensamblador


Los modelos de memoria constituyen las diversas maneras de acceder a la memoria por parte de los compiladores de C. En el caso del Turbo C se pueden distinguir los siguientes: TINY: Se emplea en los programas donde es preciso apurar el consumo de memoria hasta el ltimo byte. Los 4 registros de segmento (CS, DS, ES, SS) estn asignados a la misma direccin, por lo que existe un total de 64 Kb donde se mezclan cdigo, datos y pila. Los programas de este tipo pueden convertirse a formato COM.

SMALL: Se utiliza en aplicaciones pequeas. Los segmentos de cdigo y datos son diferentes y no se solapan. Por ello, hay 64 kb para cdigo y otros 64 Kb a repartir entre datos y pila. MEDIUM: Este modelo es ideal para programas largos que no manejan demasiados datos. Se utilizan punteros largos para el cdigo (que puede extenderse hasta 1 Mb) y cortos para los datos: la pila y los datos juntos no pueden exceder de 64 Kb. COMPACT: Al contrario que el anterior, este modelo es el apropiado para los programas pequeos que emplean muchos datos. Por ello, el programa no puede exceder de 64 Kb aunque los datos que controla pueden alcanzar el Mb, ya que los punteros de datos son de tipo far por defecto. LARGE: Empleado en las aplicaciones grandes y tambin por los programadores de sistemas que no tienen paciencia para andar forzando continuamente el tipo de los punteros (para rebasar el lmite de 64 Kb). Tanto los datos como el cdigo pueden alcanzar el Mb, aunque no se admite que los datos estticos ocupen ms de 64 Kb. Este modo es el que menos problemas da para manejar la memoria, no siendo quiz tan lento y pesado como indica el fabricante. HUGE: Similar al anterior, pero con algunas ventajas: por un lado, todos los punteros son normalizados automticamente y se admiten datos estticos de ms de 64 Kb. Por otro, y gracias a esto ltimo, es factible manipular bloques de datos de ms de 64 Kb cada uno, ya que los segmentos de los punteros se actualizan correctamente. Sin embargo, este modelo es el ms costoso en tiempo de ejecucin de los programas.

4.4 Operadores Lenguaje Ensamblador

Operadores Aritmticos Pueden emplearse libremente (+), (-), (*) y (/). En este ltimo caso la divisin es siempre entera. Tambin se admiten los operadores MOD (resto de la divisin) y SHL/SHR.

Operadores Lgicos Pueden ser el AND, OR, XOR y NOT. Realizan las operaciones lgicas en las expresiones

Operadores relacionales Devuelven condiciones de cierto (0FFFFh o 0FFh) o falso (0) evaluando una expresin. Pueden ser: EQ (igual), NE (no igual), LT (menor que), GT (mayor que), LE (menor o igual que), GE (mayor o igual que)

Operadores de retorno de valores Operador SEG: devuelve el valor del segmento de la variable o etiqueta, silo se puede emplear en programas de tipo EXE.

Operador OFFSET devuelve el desplazamiento de la variable o etiqueta en su

Operador TYPE Devuelve el modo de la expresin indicada en un byte. El bit 0 indica modo (relativo al cdigo) y el 1 modo (relativo a datos), si ambos bits estn inactivos significa modo absoluto. El bit 5 indica si la expresin es local (0 si est definida externamente o indefinida); el bit 7 indica si la expresin contiene una referencia externa. El TASM utiliza tambin el bit 3 para indicar algo que desconozco. Este operador es til sobre todo en las macros para determinar el tipo de los parmetros.

Operadores SIZE y LENGTH

Devuelven el tamao (en bytes) o el no de elementos, respectivamente, de la variable indicada (definida obligatoriamente con DUP)

Operadores MASK y WIDTH: Informan de los campos de un registro de bits (base RECORD).

Operadores de Atributos Operador PTR: redefine el atributo de tipo (BYTE, WORD, DWORD, QWORD, TBYTE) o el de distancia (NEAR o FAR) de un operando de memoria. Por ejemplo, si se tiene una tabla definida de la siguiente manera.

4.5 Integrar mdulos de ensamblador en lenguajes de alto nivel


Estos lenguajes son los ms utilizados por los programadores. Estn diseados para que las personas escriban y entiendan los programas de un modo mucho ms fcil que los lenguajes mquina y ensambladores. Un programa escrito en lenguaje de alto nivel es independiente de la mquina (las instrucciones no dependen del diseo del hardware o de una computadora en particular), por lo que estos programas son portables o transportables. Los programas escritos en lenguaje de alto nivel pueden ser ejecutados con poca o ninguna modificacin en diferentes tipos de computadoras.