Instituto Tecnológico Superior de ChampotónIng. En Sistemas Computacionales Lenguaje Ensamblador Unidad 4 Programación hibrida Alumno: Pablo Adrian Garcia Hernandez Unidad 4 Programación hibrida [Escriba el subtítulo del documento] Investigacion de los subtemas de la unidad IV Blokied .........................................................................................................................................................................................2.................. Funciones ensamblador ........1 Directivas para Compilación Hibrida .................................... 3 4.......................................................................................................................................................................................................... 10 Operador TYPE ...............................................................2 Funciones en Lenguaje Ensamblador ......................................... 10 Operadores de retorno de valores ............................................................................ 10 Operadores MASK y WIDTH: ......... 8 4........................................................................................................................ 10 Operador OFFSET ....... 3 4....4 Operadores Lenguaje Ensamblador ..........3 Bloques en Lenguaje Ensamblador ........................5 Integrar módulos de ensamblador en lenguajes de alto nivel ..... 9 Operadores relacionales ................................... 11 ................................................................................................................................................................................................................................................ 11 4........................................................... 10 Operadores de Atributos ........................................INDICE UNIDAD VI PROGRAMACION HIBRIDA .................................................... 9 Operadores Lógicos ............ 10 Operadores SIZE y LENGTH ......... 5 INT 21H.......................................................................... 9 Operadores Aritméticos ......................................................... 5 4............................................................................................... 3 4................ 18h Mov CX. todo esto con el fin escribir programas más rápidos y eficientes. 0000h Mov DX. . Asm Mov AX. está escrito en ensamblador dentro de una función en pascal. El siguiente código sirve para limpiar pantalla. Procedure Limpia_Pantalla.1 Directivas para Compilación Hibrida La programación hibrida es utilizada en los casos en donde el código en ensamblador dificulta la estructuración del programa. 0600h Mov BH. 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. Ejemplo: la red es el siguiente donde utilizamos código en ensamblador y código pascal. 4. lo que es lo mismo a la función ClrScr en pascal.2 Funciones en Lenguaje Ensamblador Las directivas de programación hibrida son aquellas que nos permiten ejecutar los comandos de ensamblador en un lenguaje de alto nivel. 184Fh Int 10h End. Las directivas de programación hibrida son aquellas que nos permiten ejecutar los comandos de ensamblador en un lenguaje de alto nivel. Assembler.UNIDAD VI PROGRAMACION HIBRIDA 4. 184Fh Int 10h End. . procedimiento Clr Scr de la unidad CRT de TurboPascal Mov BH.18h Mov CX. paraesto. realiza la suma de dos cantidades enteras (N1 y N2) introducidas previamente por el usuario. El programa solicita que se introduzcan dos números. Assembler.Turbo Pascal permite escribir procedimientos y funciones en códigoensamblador e incluirlas como parte de los programas en lenguaje Pascal. Por otro lado. Ejemplo de un programa con un bloque de instrucciones en ensamblador: . después almacena el resultado en la variable Res y finalmente presenta el resultado en la pantalla. Ejemplo de un procedimiento hibrido: Procedure Limpia_Pantalla. . Asm nos permite incluir bloques de instruccionesen lenguaje ensamblador en cualquier parte del programa sin necesidad deescribir procedimientos completos en ensamblador. Turbo Pascal cuenta con dos palabras reservadas: Assembler y Asm.0600h . AsmMov AX. después calcula la suma por medio de la instrucción Add de ensamblador y finalmente imprime el resultado en la pantalla. Assembler permite indicarle a Turbo Pascal que la rutina oprocedimiento que se está escribiendo está totalmente escrita en códigoensamblador.0000h Mov DX. La llamada a la INT 21H se realizará como sigue: . hay que indicar el número de función que queremos ejecutar. Cuando se accede a la INT 21H.Program hibrido. Uses Crt.N2. Readln.Res : integer. Readln(N1). Funciones ensamblador INT 21H La mayoría de servicios ó funciones del sistema operativo MS-DOS se obtienen a través de la interrupción software 21H. Var N1.2. End 4.Res). Mov Res. Add AX. Writeln(“El resultado de la suma es: “. Asm Mov AX. Writeln(“Introduce un número: “). Es por esto que se le denomina DOS-API: DOSAPPLICATION-PROGRAM-INTERFACE La INT 21H está compuesta por un grupo de funciones. Readln(N2). Begin Writeln(“Introduce un número: “).AX End.N1.N2. INT 21H Función 01H Entrada de Carácter con eco (ó salida) INT 21H Función 02H Salida de Carácter INT 21H Función 05H Envío de Carácter a la Impresora INT 21H Función 06H Envío de Carácter a la pantalla como símbolo INT 21H Función 09H Visualización de una cadena de caracteres INT 21H Función 0AH Leer cadena de símbolos desde teclado y su código se almacena al buffer INT 21H Función 0BH Comprobación del estado de la entrada INT 21H Función 0EH Selección de disco INT 21H Función 19H Obtener disco actual . INT 21H Función 39H Crear directorio INT 21H Función 3AH Borrar directorio INT 21H Función 3BH Establecer directorio actual INT 21H Función 47H Obtener directorio actual INT 21H Función 3CH Crear Fichero INT 21H Función 3DH Abrir Fichero INT 21H Función 3EH Cerrar Fichero INT 21H Función 3FH Lectura de Fichero o dispositivo INT 21H Función 40H Escritura en Fichero o dispositivo. INT 21H Función 41H Borrar Fichero. . Los programas de este tipo pueden convertirse a formato COM. .INT 21H Función 42H Establecer puntero de fichero. INT 21H Función 43H Subfunción 00h Obtener atributos de fichero INT 21H Función 43H Subfunción 01h á Establecer atributos de fichero INT 21H Función 56H Renombrar Fichero ó Mover Fichero INT 21H Función 00H Terminar ejecución del Programa INT 21H Función 4CH Terminación de Programa con Código de Retorno INT 21H Función 31H Finalizar el Programa y Dejar Residente 4. Los 4 registros de segmento (CS. SS) están asignados a la misma dirección. datos y pila. por lo que existe un total de 64 Kb donde se mezclan código. ES. 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. DS.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. LARGE: Empleado en las aplicaciones grandes y también por los programadores de sistemas que no tienen paciencia para andar forzando continuamente el tipo de los punteros (para rebasar el límite de 64 Kb). aunque no se admite que los datos estáticos ocupen más de 64 Kb. Se utilizan punteros largos para el código (que puede extenderse hasta 1 Mb) y cortos para los datos: la pila y los datos juntos no pueden exceder de 64 Kb. Por otro. el programa no puede exceder de 64 Kb aunque los datos que controla pueden alcanzar el Mb. Los segmentos de código y datos son diferentes y no se solapan. También se admiten los operadores MOD (resto de la división) y SHL/SHR. es factible manipular bloques de datos de más de 64 Kb cada uno. no siendo quizá tan lento y pesado como indica el fabricante.4 Operadores Lenguaje Ensamblador Operadores Aritméticos Pueden emplearse libremente (+). Realizan las operaciones lógicas en las expresiones . (-). (*) y (/). Por ello. hay 64 kb para código y otros 64 Kb a repartir entre datos y pila.SMALL: Se utiliza en aplicaciones pequeñas. todos los punteros son normalizados automáticamente y se admiten datos estáticos de más de 64 Kb. HUGE: Similar al anterior. ya que los punteros de datos son de tipo far por defecto. COMPACT: Al contrario que el anterior. XOR y NOT. Operadores Lógicos Pueden ser el AND. ya que los segmentos de los punteros se actualizan correctamente. 4. Este modo es el que menos problemas da para manejar la memoria. este modelo es el más costoso en tiempo de ejecución de los programas. Por ello. Tanto los datos como el código pueden alcanzar el Mb. pero con algunas ventajas: por un lado. Sin embargo. OR. En este último caso la división es siempre entera. MEDIUM: Este modelo es ideal para programas largos que no manejan demasiados datos. y gracias a esto último. este modelo es el apropiado para los programas pequeños que emplean muchos datos. GT (mayor que). el bit 7 indica si la expresión contiene una referencia externa. El bit 5 indica si la expresión es local (0 si está definida externamente o indefinida). El TASM utiliza también el bit 3 para indicar algo que desconozco. si ambos bits están inactivos significa modo absoluto.Operadores relacionales Devuelven condiciones de cierto (0FFFFh o 0FFh) o falso (0) evaluando una expresión. NE (no igual). El bit 0 indica modo (relativo al código) y el 1 modo (relativo a datos). silo se puede emplear en programas de tipo EXE. . respectivamente. Pueden ser: EQ (igual). LT (menor que). Operador OFFSET devuelve el desplazamiento de la variable o etiqueta en su Operador TYPE Devuelve el modo de la expresión indicada en un byte. Operadores SIZE y LENGTH Devuelven el tamaño (en bytes) o el no de elementos. Este operador es útil sobre todo en las macros para determinar el tipo de los parámetros. GE (mayor o igual que) Operadores de retorno de valores Operador SEG: devuelve el valor del segmento de la variable o etiqueta. LE (menor o igual que). de la variable indicada (definida obligatoriamente con DUP) Operadores MASK y WIDTH: Informan de los campos de un registro de bits (base RECORD). Por ejemplo. Los programas escritos en lenguaje de alto nivel pueden ser ejecutados con poca o ninguna modificación en diferentes tipos de computadoras. WORD. por lo que estos programas son portables o transportables. Un programa escrito en lenguaje de alto nivel es independiente de la máquina (las instrucciones no dependen del diseño del hardware o de una computadora en particular). TBYTE) o el de distancia (NEAR o FAR) de un operando de memoria. DWORD.5 Integrar módulos de ensamblador en lenguajes de alto nivel Estos lenguajes son los más utilizados por los programadores. Están diseñados para que las personas escriban y entiendan los programas de un modo mucho más fácil que los lenguajes máquina y ensambladores.Operadores de Atributos Operador PTR: redefine el atributo de tipo (BYTE. 4. . QWORD. si se tiene una tabla definida de la siguiente manera.
Report "Unidad 4 Programación hibrida (Pablo Adrian Garcia Hernandez)"