martes, 26 de noviembre de 2013

MOSTRAR CARACTERES ASCII

PRESENTACION

MANEJADORES DE ARCHIVOS PARA ENTRADA DESDE EL TECLADO

La función 3FH de la INT 21H del DOS utiliza los manejadores de archivo para solicitar entrada del teclado, aunque es una operación un poco ineficaz.
Cargue los registros siguientes:
UNA OPERACIÓN INT EXITOSA

Regresa al AX el numero de caracteres introducidos
Pone en cero la bandera de acarreo.


UNA OPERACIÓN INT FALLIDA

Regresa al AX un código de error.
AX:05H = Acceso denegado
AX:06H = Manejador no válido
Pone en uno la bandera de acarreo.


"La función 0AH (avance de Linea) del DOS, la función 3FH también actua sobre el carácter de retroceso, pero ignora las teclas de función extendidas tal como F1, Inicio, AvPág.

Las instrucciones siguientes ilustran el uso de la función 3FH del DOS:


EJERCICIO INGRESO DE DATOS

SOLUCIÓN




lunes, 25 de noviembre de 2013

MANEJADORES DE ARCHIVOS PARA DESPLIEGUE EN PANTALLA

La función 40H  de la INT 21H del DOS utiliza los manejadores de archivo para solicitar operaciones de despliegue.
Cargue los registros siguientes:

UNA OPERACIÓN INT EXITOSA

Regresa al AX el numero de bytes escritos.
Pone en cero la bandera de acarreo.

UNA OPERACIÓN INT FALLIDA

Regresa al AX un código de error.
AX:05H = Acceso denegado
AX:06H = Manejador no válido
Pone en uno la bandera de acarreo.

"La función responde igual que la función 09H del DOS a los caracteres de control 07H (campana), 08H (Retroceso), 0AH (avance de Linea)  y ODH (Retorno de carro) "

Las instrucciones siguientes ilustran esta operación:


EJERCICIO DESPLIEGUE EN PANTALLA



SOLUCIÓN






MANEJADORES DE ARCHIVOS

Un  manejador de archivo, solo es un numero que hace referencia a un dispositivo especifico.
Los siguientes manejadores de archivos están preestablecidos.

Los manejadores de archivos normales son:
00    Para entrada de teclado.
01    Para despliegue en pantalla

FUNCIÓN 02H DEL DOS PARA DESPLIEGUES EN PANTALLA

Puede encontrar que la función 02H de la INT 21H, sea util para despliegue de un solo carácter. Cargue en el DL el caracter que sera desplegado en la posición actual del cursor, y solicite la INT 21H. Los caracteres de tabulador, retorno de carro y avance de linea actúan normalmente, y la operación avanzada de manera automática el cursor. El código en lenguaje ensamblador es:





El ejemplo siguiente muestra como utilizar este servicio para desplegar una cadena de caracteres. La cadena para desplegar esta definida en CONAME. El programa carga la dirección de CONAME en el registro DI y su longitud en el CX. El ciclo indica el decremento de DI (en INC) para cada caracter sucesivo y la dismunicion del CX (en LOOP) para el numero de caracteres desplegados. El codigo como sigue:







USO DE CARACTERES DE CONTROL PARA DESPLEGAR

Una manera de hacer mas eficaz el uso de despliegues es utilizar los caracteres de control retorno de carro, a veces de linea y el tabulador. Puede codificarlos como valores ASCII o números hexadecimales


Siempre que despliegue salidas o acepte entradas, utilice estos caracteres de control para el manejo del cursor. Aquí esta un ejemplo que despliega el contenido de una cadena de caracteres llamada MESSAGE, seguida por un retorno de carro y un avance de linea para colocar el cursor en la linea siguiente:











El uso de EQU para redefinir los caracteres de control puede hacer que un programa sea mas legible:



COMO LIMPIAR EL ÁREA DE ENTRADA

Los caracteres introducidos reemplazan a los anteriores que están en un área de entrada y permanecen hasta que otros caracteres los reemplazan. Considere las siguientes entradas sucesivas:


El nombre HAMILTON reemplaza al nombre mas corto PAINE. Pero ya que el nombre ADAMS es mas corto que HAMAILTON, reemplaza HAMIL y el carácter Enter reemplaza a la T. Las letras restantes, ON, aun siguen a ADAMS. Puede querer borrar NAMEFLD antes de solicitar un nombre como sigue:










En lugar del registro SI puede usar el DI o el BX. Un método mas eficaz que mueve una palabra de dos espacios en blanco necesita 10 ciclos. Sin embargo, como NAMEFLD esta definido como DB (byte), tendría que invalidar su longitud con un operando WORD y PTR (apuntador), como se indica a continuación 











Interprete el MOV en B30 como "Mover una palabra en blanco a la localidad de memoria a donde apunta el registro SI". Este ejemplo usa LEA para inicial izar el borrado de NAMEFLD y utiliza un método ligeramente diferente para el MOV en B30 porque ya no puede codificar una instrucción como

MOV WORD PTR [NAMEFLD] , 2020H ; NO VALIDO

El borrado del área de entrada resuleve el problema de nombres mas cortos que siguen a datos anteriores. Una practica mas efectiva es borrar solo las posiciones a la derecha del nombre que ha sido ingresado de manera mas reciente.

COMO BORRAR EL CARÁCTER ENTER

Puede usar caracteres de entrada para diferentes propósitos, como imprimir un reporte, almacenar en una tabla o escribir en un disco. Para ello tiene que haber reemplazado el carácter Enter ( 0DH) con un espacio en blanco (20H) siempre que este aparezca en NAMELEN. El campo que contiene la longitud real de los datos de entrada, NAMELEN, proporciona la posición relativa del caracter Enter. Por ejemplo, si NAMELEN contiene 05, entonces el caracter Enter esta en NAMEFLD + 5. Puede mover esta longitud al registro BX para indexar la direccion de NAMEFLD como sigue


Las dos primeras instrucciones MOV establecen el BX con la longitud 05. El tercer MOV mueve un espacio en blanco (20H) a la direccion especificada en el primer operando: la direccion de NAMEFLD mas el contenido de BX - en realidad, NAMEFLD + 5

RESPUESTA CON SOLO LA TECLA ENTER

El programa continua aceptando y desplegando nombres hasta que el usuario presione solo la tecla Enter como respuesta a una petición. La función 09H del DOS la acepta e inserta una longitud de 00H en la lista de parámetros como :

Lista de parámetros (hexadecimal) : | 14 | 00 | 0D | ...

Si la longitud es cero, el programa determina que la entrada ha finalizado, como lo muestra por la instrucción CMP NAMELEN,00 EN A20LOOP

COMO ACEPTAR Y DESPLEGAR NOMBRES


El programa de la figura 9-2 pide al usuario que introduzca un nombre y después lo despliegue en el centro de la pantalla y emite un sonido la bocina. Por ejemplo, si el usuario introduce el nombre Pat Brown, el programa realiza lo siguiente:

1. Divide la longitud 09 entre dos: 9/2=4, ignorando la fracción
2. Resta este resultado de 40:40-4=36

En F10CENT, la instrucción SHR corre la longitud 09 un bit a la derecha dividiendo de hecho la longitud entre 2. Los bits 00001001 se convierten en 00000100, o 4. La instrucción NEG invierte el signo, cambiando +4 a -4. ADD suma el valor 40, dando el registro DL la posición inicial de la columna, 36. Con el cursor colocado en el reglón 12, columna 36, el nombre aparece en la pantalla como sigue:



























Observe que la instrucción en E10CODE que inserta el carácter campana (07H) en el área de entrada sigue de manera inmediata al nombre:



Los dos primeros MOV establecen el BX con la longitud. El tercer MOV hace referencia a un especificador de indice en corchetes que significa que el BX actua como un registro especial de indice para facilitar el direccionamiento extendido. El MOV combina la longitud en el BX con la dirección de NAMEFLD y mueve al 07H a la dirección calculada. Así para una longitud de 05 la instrucción inserta 07H en NAMEFLD+5 (reemplazando el carácter enter) a continuación del nombre. La ultima instrucción en E10CODE inserta un delimitador "$" después del 07H, de manera que la función 09H del DOS pueda desplegar el nombre y sonar la bocina.


FUNCION DEL 0AH DEL DOS PARA ENTRADA DEL TECLADO












































FUNCION 09H DEL DOS PARA DESPLIEGUE EN PANTALLA

LIMPIAR LA PANTALLA

La función 06H de la INT 10H de la BIOS maneja el borrado o recorrido de la pantalla.  Puede limpiar todo o parte de un despliegue iniciando en cualquier localidad de la pantalla y terminando en cualquier localidad con numero mayor.  Por Ejemplo, para limpiar toda la pantalla especifique el remglon:columna iniciales como 00:00H y el renglon:columna finales como 18:4FH.  Cargue esos registros:




Si de modo equivocado establece unted la ubicacion de la esquina inferior de la pantalla algo mayor que 184FH, la operacion da a la pantalla y limpia dos veces algunas localidades.  Esto puede causar error en alguno sistemas.

COLOCACIÓN DEL CURSOR


PANTALLA

Es una malla de posiciones direccionables, en cualquiera de las cuales se puede colocar el cursor, ejemplo un monitor común de vídeo tiene 25 renglones (numerados del 0 hasta el 24) y 80 columnas (numeradas de 0 hasta 79).
       
El sistema proporciona espacio en la memoria para un área de despliegue de vídeo, o bufer. El área de despliegue monocromático inicia en la localidad de BIOS B000[0]H y permite utilizar 4K Bytes de memoria: 2K disponibles para caracteres y 2K para atributos para cada carácter, como vídeo inverso, intermitencia, intensidad y subrayado. El despliegue de video grafico en color permite utilizar 16K Bytes iniciando en la localidad de BIOS B800[0]H se puede procesar ya sea en modo de texto para carácter normal o en modo grafico. Para modo de texto, el area de despliegue ofrece para la pantalla "paginas" numeradas desde la cero hasta la tres para una pantalla de ochenta columnas con Bytes para cada carácter y atributo.

Las interrupciones que manejan los despliegues en pantalla trasfieren sus datos de manera directa al area de despliegue de video, dependiendo del tipo de adaptador de video instalado como EGA o VGA. Aunque técnicamente sus programas pueden transferir datos en forma directa al area de despliegue de video, no existe seguridad que las direcciones de memoria seran las mismas en todos los modelos, de modo que la escritura directa en el area de despliegue, si bien rápida puede ser riesgosa. La practica rrecomendada es utilizar las intrucciones de interrupción adecuadas: las funciones de la INT 10H para despliegue, ubicar el cursor en cualquier posición y limpiar la pantalla y las funciones de INT 21H para diferentes tipos de despliegue.


INTRODUCCION


La mayoría de los programas necesitan entradas desde un teclado, disco, ratón o módem y proporcionan salidas en un formato útil en la pantalla,impresora o disco. Existen varios requisitos para especificar un dispositivo de entrada o salida.

La instrucción INT (interrupción), para la mayoría de los propósito utiliza entrada y salida. Los dos tipos de interrupciones tratados son las funciones de INT 10H del BIOS para manejar la pantalla y las funciones INT 21H del DOS para mostrar salidas en pantalla y aceptar entradas desde el teclado. Estas funciones (o servicios) solicitan una acción para identificar el tipo de operación que la interrupción va a realizar, inserte un numero de funciones del registro AH. 

Las operaciones de bajo nivel del BIOS, como INT 10H transfieren el control de manera directa al BIOS. Sin embargo para facilitar algunas de las operaciones mas complejas, la INT 21H del DOS proporciona un servicio de interrupción que transfiere primero el control al DOS.

Las operaciones introducidas son: