martes, 26 de noviembre de 2013
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.
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:
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
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:
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:
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
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
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:
LIMPIAR LA PANTALLA
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.
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).
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:
Suscribirse a:
Entradas (Atom)

















