You are on page 1of 17

UNIVERSIDAD NACIONAL DE LOJA AREA DE LA ENERGIA LAS INDUSTRIAS Y LO RECURSOS NO RENOVABLES CARRERA DE INGENIERIA EN SISTEMAS MODULO VI PARALELO B TIEMPOS

DE DEMORA DE IMPRESIN EN JAVA Y LENGUAJE ENSAMLADOR

NOMBRE: Marjorie Chinchay Herrera Karla Largo Elivar Michay Franklin Padilla Jhonny

DOCENTE: MATERIA: FECHA:

Ing. Pablo Ordoez Lenguaje Ensamblador 22 de Julio del 2012

LOJA - ECUADOR

2012

REA DE LA ENERGA, LAS INDUSTRIAS Y LOS RECURSOS NATURALES NO RENOVABLES

ESQUEMA DE CONTENIDOS
1. INTRODUCCIN A LA INTERFAZ NATIVA DE JAVA2 2. INTERRUPCION DE BIOS.2 3. INTERRUPCION DE DOS..4 4. CODIGO DE IMPRESIN EN JAVA .5 4.1 Clase Principal que imprime por el Puerto LPT1 4.2 Clase Principal 4.3 Cdigo que permite imprimir y medir el tiempo que dura la impresin 5. CODIGO DE IMPRESIN EN ENSAMBLADOR .6 6. MEZCLA DE ENMSAMBLADOR Y JAVA.8 6.1 Requerimientos de software 6.2 Configuracin del ambiente de trabajo 6.3 Programacin 6.3.1 Creacin de la clase, el mtodo nativo y la llamada a la librera para invocar al cdigo Ensamblador 6.3.2 Compilar el programa 6.3.3 Escribir el programa en ensamblador que implemente los mtodos nativos: 6.3.4 ImprimirEnsambladorImpl.asm 6.3.5 Usar masm32 para compilar el cdigo nativo 6.3.6 Usar la herramienta masm32 para generar la librera nativa 6.3.7 Archivos Generados 6.3.8 Ejecucin 7. INFORME ERROR.15 8. CONCLUSIONES...16 9. RECOMENDACIONES..17 10. BIBLIOGRAFA18

CARRERA DE INGENIERA EN SISTEMAS

Pgina1

REA DE LA ENERGA, LAS INDUSTRIAS Y LOS RECURSOS NATURALES NO RENOVABLES

1. INTRODUCCIN A LA INTERFAZ NATIVA DE JAVA

JNI es un framework de programacin que permite que un programa escrito en Java ejecutado en la Mquina Virtual Java (JVM) pueda interactuar con programas escritos en otros lenguajes como C, C++ y ensamblador.

La plataforma Java es relativamente nueva, lo que significa que algunas veces se necesita integrar programas escritos en Java con servicios, programas o APIs existentes desarrollados en lenguajes distintos. Es por ello que esta plataforma proporciona la Interfaz Nativa de Java, JNI por sus siglas en ingls, esta no es ms que un framework de programacin que permite que un programa escrito en Java ejecutado en la Mquina Virtual Java (JVM) pueda interactuar con programas escritos en otros lenguajes como C, C++ y ensamblador.[1]

2. INTERRUPCION DE BIOS.

El BIOS contiene un extenso conjunto de rutinas de entrada/salida y tablas que indican el estado de los dispositivos del sistema. El dos y los programas usuarios pueden solicitar rutinas del BIOS para la comunicacin con los dispositivos conectados al sistema. El mtodo para realizar la interfaz con el BIOS es el de las interrupciones de software. A continuacin se listan algunas interrupciones del BIOS. INT 00H: Divisin entre cero. Llamada por un intento de dividir entre cero. Muestra un mensaje y por lo regular se cae el sistema. INT 01H: Un solo paso. Usado por DEBUG y otros depuradores para permitir avanzar por paso a travs de la ejecucin de un programa. INT 02H: Interrupcin no enmascarare. Usada para condiciones graves de hardware, tal como errores de paridad, que siempre estn habilitados. Por lo tanto un programa que emite una instruccin CLI (limpiar interrupciones) no afecta estas condiciones. INT 03H: Punto de ruptura. Usado por depuracin de programas para detener la ejecucin. CARRERA DE INGENIERA EN SISTEMAS

Pgina2

REA DE LA ENERGA, LAS INDUSTRIAS Y LOS RECURSOS NATURALES NO RENOVABLES INT 04H: Desbordamiento. Puede ser causado por una operacin aritmtica, aunque por lo regular no realiza accin alguna. INT 05H: Imprime pantalla. Hace que el contenido de la pantalla se imprima. Emita la INT 05H para activar la interrupcin internamente, y presione las teclas Cltr + PrtSC para activarla externamente. La operacin permite interrupciones y guarda la posicin del cursor. INT 08H: Sistema del cronometro. Una interrupcin de hardware que actualiza la hora del sistema y (si es necesario) la fecha. Un chip temporizador programable genera una interrupcin cada 54.9254 milisegundos, casi 18.2 veces por segundo. INT 09H: Interrupcin del teclado. Provocada por presionar o soltar una tecla en el teclado. INT OBH, INT OCH: Control de dispositivo serial. Controla los puertos COM1 y COM2, respectivamente. INT 0DH, INT OFH: Control de dispositivo paralelo. Controla los puertos LPT1 y LPT2, respectivamente. INT 0EH: Control de disco flexible. Seala actividad de disco flexible, como la terminacin de una operacin de E/S. INT 10H: Despliegue en vdeo. Acepta el nmero de funciones en el AH para el modo de pantalla, colocacin del cursor, recorrido y despliegue. INT 11H: Determinacin del equipo. Determina los dispositivos opcionales en el sistema y regresa el valor en la localidad 40:10H del BIOS al AX. (A la hora de encender el equipo, el sistema ejecuta esta operacin y almacena el AX en la localidad 40:10H). INT 12H: Determinacin del tamao de la memoria. En el AX, regresa el tamao de la memoria de la tarjeta del sistema, en trminos de kilobytes contiguos. INT 13H: Entrada/salida de disco. Acepta varias funciones en el AH para el estado del disco, sectores ledos, sectores escritos, verificacin, formato y obtener diagnstico.

CARRERA DE INGENIERA EN SISTEMAS

Pgina3

REA DE LA ENERGA, LAS INDUSTRIAS Y LOS RECURSOS NATURALES NO RENOVABLES

3. INTERUPCIONES DEL DOS. Las interrupciones desde la 20H hasta la 3FH estn reservadas para operaciones del DOS. A continuacin se mencionan algunas de ellas. INT 20H: Termina programa. Finaliza la ejecucin de un programa .COM, restaura las direcciones para Cltr + Break y errores crticos, limpia los bfer de registros y regresa el control al DOS. Esta funcin por lo regular seria colocada en el procedimiento principal y al salir de l, CS contendra la direccin del PSP. La terminacin preferida es por medio de la funcin 4CH de la INT 21H. INT 21H: Peticin de funcin al DOS. La principal operacin del DOS necesita una funcin en el AH. INT 22H: Direccin de terminacin. Copia la direccin de esta interrupcin en el PSP del programa (en el desplazamiento 0AH) cuando el DOS carga un programa para ejecucin. A la terminacin del programa, el DOS transfiere el control a la direccin de la interrupcin. Sus programas no deben de emitir esta interrupcin. INT 23H: Direccin de Cltr + Break. Diseada para transferir el control a una rutina del DOS (por medio del PSP desplazamiento 0EH) cuando usted presiona Ctlt + Break o Ctlr + c. La rutina finaliza la ejecucin de un programa o de un archivo de procesamiento por lotes. Sus programas no deben de emitir esta interrupcin. INT 24H: Manejador de error critico. Usada por el dos para transferir el control (por medio del PSP desplazamiento 12H) cuando reconoce un error critico (a veces una operacin de disco o de la impresora).Sus programas no deben de emitir esta interrupcin. INT 25H: Lectura absoluta de disco. Lee el contenido de uno o mas sectores de disco. INT 26H: Escritura absoluta de disco. Escribe informacin desde la memoria a uno o mas sectores de disco. INT 27H: Termina pero permanece residente (reside en memoria). Hace que un programa .COM al salir permanezca residente en memoria. INT 2FH: Interrupcin de multiplexion. Implica la comunicacin entre programas, como la comunicacin del estado de un spooler de la impresora, la presencia de CARRERA DE INGENIERA EN SISTEMAS

Pgina4

REA DE LA ENERGA, LAS INDUSTRIAS Y LOS RECURSOS NATURALES NO RENOVABLES

un controlador de dispositivo o un comando del DOS tal como ASSIGN o APPEND. INT 33H: Manejador del ratn. Proporciona servicios para el manejo del ratn.

4. CODIGO DE IMPRESIN EN JAVA

4.1 Clase Principal import java.io.IOException; //clase principal para llamar al form public class Imprimir { public static void main(String args[]) { Principal p; try { p = new Principal(); p.setVisible(true); } catch (IOException e) { e.printStackTrace(); } } }

4.2 Clase Principal que imprime por el Puerto LPT1 import java.io.FileWriter; import javax.swing.JOptionPane; //clase para imprimir por el Puerto LPT1 public class ImprimirJava { //mtodo que se le un envia el string que se quiere imprimir public void imprimirFactura(String f) { CARRERA DE INGENIERA EN SISTEMAS

Pgina5

REA DE LA ENERGA, LAS INDUSTRIAS Y LOS RECURSOS NATURALES NO RENOVABLES try { JOptionPane.showMessageDialog(null, la Factura......"); FileWriter out = new FileWriter("LPT1"); out.write(f + "\n"); out.close(); } catch (Exception e) { } } } "Imprimiendo

4.3 Cdigo que permite imprimir y medir el tiempo que dura la impresin

// clases para imprimir por el piuerto LPT1 ImprimirJava p = new ImprimirJava(); // tiempo para medir el proceso long tiempoInicio = System.currentTimeMillis(); // metodo que imprime p.imprimirFactura(factura); // tiempo total long totalTiempo = System.currentTimeMillis() - tiempoInicio; System.out.println("\nEl tiempo de demora es :" + totalTiempo+ " miliseg");

5. CODIGO DE IMPRESIN EN ENSAMBLADOR INCLUDE Irvine16.inc .data mensaje DB " MAKJEF",13,10; CARRERA DE INGENIERA EN SISTEMAS Pgina6 DISTRIBUIDORA DE HARDWARE Y SOFTWARE

REA DE LA ENERGA, LAS INDUSTRIAS Y LOS RECURSOS NATURALES NO RENOVABLES DB DB " "*Dir. CARLOS YUQUI E/ SALVADOR BUSTAMANTE *AUT. FECHA: CELI Y N.-

EPICLACHIMA

*LOJA-ECUADOR",13,10 *R.U.C 0705470656 SRI.

1111221409",13,10,10 DB "CLIENTE: Luis Vasquez 2012",13,10 DB "DIRECCION: Salvador y Quebec, Casa No. 101 TELF: 081998569",13,10 DB "R.U.C. / C.I.: 1717213183",13,10,10 DB "CANTIDAD TOTAL",13,10,10 DB " DB " DB " DB " DB " DB " DB " DB " -------------DB " FIRMA AUTORIZADA ---------Subtotal: Iva 12%: Total: ---",13,10 ---",13,10 ---",13,10 ---",13,10 ---",13,10 ---",13,10,10,10 DESCRIPCION VALOR UNITARIO VALOR 22-07-

Descuento: ---",13,10

---------------",13,10 FIRMA CLIENTE",13,10,10

DB "Tiempo de demora es:",13,10,"$" .code main proc mov ax,seg mensaje mov ds,ax mov ah,09h ;Funcion de mostrar texto en pantalla lea dx,mensaje ;Ponemos el mensaje en dx int 21h ;Mostramos texto xor ax,ax ;Esperamos a una tecla int 16h ;Teclado CARRERA DE INGENIERA EN SISTEMAS

Pgina7

REA DE LA ENERGA, LAS INDUSTRIAS Y LOS RECURSOS NATURALES NO RENOVABLES xor dx,02 ;En DX va el numero del puerto LPT (00 para LPT1 01 Para LPT2 etc...) lea si,mensaje ;Cargamos el mensaje a imprimir en SI call imprimir_impresora mov ax,4c00h int main endp imprimir_impresora PROC near pusha ;Guardamos todos los registros mov ah,01h ;Funcion de inicializar impresora (DX no se cambia) int 17h bucle: lodsb ;Cargamos la etiqueta en si or al,al;Llegamos al final? je terminamos mov ah,00h ;Funcion de escribir en impresora (AL tiene el caracter a imprimir) int 17h ;IMPRIMIMOS! loop bucle ;Hacemos un bucle de impresion hasta que no acabe la cadena de texto term: popa ;Liberamos todo ret ;Volvemos de la funcion imprimir_impresora ENDP end main term ;Si llegamos al final entonces 21h ;Llamamos a la funcion de impresion ;Function (Quit with exit code (EXIT))

6. MEZCLA DE ENMSAMBLADOR Y JAVA 6.1 Requerimientos de software 1. Editor: Servir para editar el cdigo Java y el cdigo del programa ensamblador CARRERA DE INGENIERA EN SISTEMAS

Pgina8

REA DE LA ENERGA, LAS INDUSTRIAS Y LOS RECURSOS NATURALES NO RENOVABLES

2. MASM32: Se necesita para compilar los programas ASM. 3. JDK de Java: Para la compilacin del cdigo Java 6.2 Configuracin del ambiente de trabajo 6.2.1 Variables de entorno InicioEquipoclic derechoPropiedadesConfiguracin avanzada del

SistemaVariables de Entorno->Variables del Sistema Creamos una nueva variable para compilar el cdigo Java:

Creamos una nueva variable para compilar el cdigo Ensamblador:

CARRERA DE INGENIERA EN SISTEMAS

Pgina9

REA DE LA ENERGA, LAS INDUSTRIAS Y LOS RECURSOS NATURALES NO RENOVABLES

Editamos

la

variable

del

sistema

Path,

la

cual

agregamos

lo

siguiente

;%JAVA_HOME%\bin;%MASM32%\bin:

6.3. Programacin 6.3.1 Creacin de la clase, el mtodo nativo y la llamada a la librera para invocar al cdigo Ensamblador import java.lang.String; public class ImprimirEnsamblador { // mtodo nativo para llamar al codigo ensamblador public native void imprimirFactura(String factura); //libreria de llamada al codigo ensamblador static { System.loadLibrary("ImprimirEnsambladorImpl"); } public void llamar(String f) { ImprimirEnsamblador pe= new ImprimirEnsamblador(); pe.imprimirFactura(f); } } 6.3.2 Compilar el programa Usar javac para compilar el programa. Usar javah -jni para generar la cabecera de C CARRERA DE INGENIERA EN SISTEMAS

Pgina10

REA DE LA ENERGA, LAS INDUSTRIAS Y LOS RECURSOS NATURALES NO RENOVABLES

6.3.3 Escribir el programa en ensamblador que implemente los mtodos nativos: 6.3.3.1 ImprimirEnsambladorImpl.asm .386 .model flat,stdcall .code Java_ImprimirEnsamblador_imprimirFactura jobject:WORD, factura:WORD xor dx,02 ;En DX va el numero del puerto LPT (00 para LPT1 01 Para LPT2 etc...) lea si,factura ;Cargamos el mensaje a imprimir en SI pusha ;Guardamos todos los registros mov ah,01h ;Funcion de inicializar impresora (DX no se cambia) int 17h bucle: lodsb ;Cargamos la etiqueta en si or al,al;Llegamos al final? je term ;Si llegamos al final entonces terminamos mov ah,00h ;Funcion de escribir en impresora (AL tiene el caracter a imprimir) CARRERA DE INGENIERA EN SISTEMAS proc JNIEnv:WORD,

Pgina11

REA DE LA ENERGA, LAS INDUSTRIAS Y LOS RECURSOS NATURALES NO RENOVABLES int 17h ;IMPRIMIMOS! loop bucle ;Hacemos un bucle de impresion hasta que no acabe la cadena de texto term: popa ;Liberamos todo ret ;Volvemos de la funcion ret Java_ImprimirEnsamblador_imprimirFactura endp END

6.3.4 Usar masm32 para compilar el cdigo nativo ml /c /coff /Cp ImprimirEnsambladorImpl.asm

ml es el programa de MASM32 para crear el objeto /c le indicamos que solo habr de ensamblar el .obj /coff para indicar que el objeto ensamblado tendr el formato COFF (Common Object File Format) /Cp indicar a MASM32 que ser sensible a maysculas y minsculas de los identificadores que se usen 6.3.5 Usar la herramienta masm32 para generar la librera nativa 6.3.5.1 Creamos el archivo ImprimirEnsambladorImpl.def LIBRARY ImprimirEnsambladorImpl EXPORTS Java_ImprimirEnsamblador_imprimirFactura CARRERA DE INGENIERA EN SISTEMAS

Pgina12

REA DE LA ENERGA, LAS INDUSTRIAS Y LOS RECURSOS NATURALES NO RENOVABLES LIBRARY declara el nombre que tendr el DLL. En nuestro ejemplo lo llamaremos imprimirFactura porque as lo tenemos en el cdigo del programa ImprimirEnsamblador.java EXPORTS indica el nombre de las funciones o procedimientos que sern exportados en el DLL, nosotros tenemos el procedimiento Java_ImprimirEnsamblador_imprimirFactura

6.3.6 Creamos el archivo .dll link /DLL /NOENTRY /subsystem:windows /DEF:ImprimirEnsambladorImpl.def ImprimirEnsambladorImpl.obj

La explicacin: link el programa (linker) que usaremos para generar el .dll /DLL indica que lo que queremos generar es un DLL /NOENTRY para poder evitar algunos posibles errores no capturados /SUBSYSTEM:windows indicamos que el ejecutable es para windows /DEF:archivo.def y el archivo de definicin que se usar para la exportacin Finalmente indicamos el nombre de nuestro archivo ensamblado, archivo.obj

CARRERA DE INGENIERA EN SISTEMAS

Pgina13

REA DE LA ENERGA, LAS INDUSTRIAS Y LOS RECURSOS NATURALES NO RENOVABLES

6.3.7 Archivos Generados

3.3.8 Ejecucin:

CARRERA DE INGENIERA EN SISTEMAS

Pgina14

REA DE LA ENERGA, LAS INDUSTRIAS Y LOS RECURSOS NATURALES NO RENOVABLES

7 INFORME ERROR

8. CONCLUSIONES La mezcla de porciones de cdigo en un lenguaje de bajo nivel como ensamblador permite disminuir el tiempo en aquellas aplicaciones que requieren ms tiempo de procesamiento. La programacin hibrida Java-Ensamblador permite manejar el 100% del hardware a travs de un lenguaje de alto nivel. El uso y aprendizaje de la JNI (Interfaz nativa de Java) es muy importante, ya que a travs de esta nos permite invocar a programas hechos en otros lenguajes como C, C++ o como en nuestro caso Lenguaje Ensamblador. El Lenguaje ensamblador adems de ser utilizado en la programacin de computadoras, tambin se lo utiliza para la programacin de dispositivos electrnicos.

CARRERA DE INGENIERA EN SISTEMAS

Pgina15

REA DE LA ENERGA, LAS INDUSTRIAS Y LOS RECURSOS NATURALES NO RENOVABLES El programar a bajo nivel as como nos permite manejar directamente el hardware de la mquina, mayor velocidad de procesamiento requiere que conozcamos a fondo el lenguaje y la mquina sobre la que vamos a programar. La aplicacin de este tipo de programacin (hibrida) nos ayuda, ya que algunas de las veces necesitamos hacer uso de rutinas, sea por que los lenguajes de alto nivel no las tienen o por obtener mayor velocidad al realizar un proceso. 9. RECOMENDACIONES La publicacin de ms informacin acerca del tema, ya que despus de haber realizado la prctica nos dimos cuenta que la informacin es muy escaza. 10. BIBLIOGRAFA [1] Java Native Interface, Programmer's guide and specification, [22/07/12], http://java.sun.com/docs/books/jni/html/jniTOC.html

[2]Ventajas

de

usar

archivos

DLL,

[22/07/12].

Disponible

en

http://msdn.microsoft.com/es es/library/dtba4t8b.aspx.

CARRERA DE INGENIERA EN SISTEMAS

Pgina16

You might also like