Programación General > ASM (Ensamblador)
Modificar El Codigo Del Prscr (print Screan)
(1/1)
Ericka:
:devil: Hola a los que me estan leyendo.... me han dejado de tarea modificar el codigo de la tecla PRSCR printscrean de el teclado, que es la int 5 en assembler, y tengo que hacer que en vez de que cuando se presione imprima de izquierda a derecha como lo hace cualquier computadora programada de esa forma, se invierta haciendolo de derecha a izquierda, el problema es que no si no como entrar al codigo de la interrupcion, nos sugirieron que arrancaramos la compu con DOS y entraramos al debug para buscar el codigo pero no se como hacer para hacerlo :blink: tal vez alguna de sus brillantes mentes me pueda ayudar GRACIAS! :devil:
Super_G:
antes ¿el programa debe funcoanr con la tecla PRSCR (interrupcion)?
entoces si es asi hay que jugar con la sinterrupciones, de no ser asi pienso que puede ser mas facil:
el proble ma se reduciria a:
leer el los datos de la pantalla que se encuentran en la direccion 0b80h
y despues imprimirlo segun el orden que te pidan utilizando interrupcione d eDOS para imprimir(en este for existe un ejeplo para imprimir por puerto paralelo)
y creo que eso es todo.
joajavi:
Pues sí que le has aclarado bastante majete.....Hay que joderse....Cuanto os creeis que sabeis los "Supuestos Programadores de hoy en día". Ni la O con un canuto sabeis hacer. Todo es Windows y WEB's.
Yo tengo el código para hacer el cambio de ese procedimiento en la interrupcion 5h. Si lo pagas bien te lo paso, sin embargo, las impresoras no van de derecha a izquierda por lo que se seguirá imprimiendo de izquierda a derecha salvo que hayas redactado mal el ejercicio y lo que quieras es que la parte de la derecha de la pantalla salga a la izaquierda de la impresora, que eso es otra cosa.
joajavi@yahoo.es
Super_G:
en si mandar a imprimir(por imtpresora) el contenido de la pantalla no es muy dificil con la ayuda de un servicio de DOS es menos complicado(siempre y cuando el DOS no se haga problemas con ciertas impresora por decir impresorascon puertos USB),de modo que mandamos a imprimir byte por byte y los byte que mandamos a imprimir podemos leer en un arreglo de memria o hacerlo de la mismoa forma byte por byte,leyendo del direccinde memria de la pantalla ubicada en 0b800h(cada caracter de la pantalla esta representado por 2 bytes en memoria el codigo ASCII y su propiedad color y color de fondo), para esto hay que tener en cuenta lagunos detalles como la resolucion de la pantalla(modo texto,eje:80x25), el orden de la impresion no aumenta tanto la dificultad, haber que tal esto:
--- Código: Text --- ;;IMPRIMIR PANTALLA EN MODO TEXTO DE 40x80 mov cx,200;;80x25;;# de caracteres a imprimir mov ax,0b800H;;direccion de la pantalla[segmento] mov es,ax xor si,si;;puntero a memoria de pantalla[desplazamiento] G1: mov dx,es:[si];;DH->propiedad vvvv DL->caracter mov ah,5 ;; servicio para imprimir DL en la imresora int 21h add si,2 ;; la lectura de la memoria se hace de 2 en 2 loop G1
eso es basicamente, ahora se puede jugar con el orden de impresion; pero el hecho de como hacer dicha impresion fue la principal duad en este tema pues si se va a sustituir la INT 5h por otra interrupcion se debe alterar el vector de interrupcion......
aqui le dejo el codigo funete + el ejecutable, este se ejecuta e imprime no hece nada con el vector de interrupcion.
Navegación
Ir a la versión completa