Está en la página 1de 21

Qu es una Interrupcin?

Interrupcin (tambin conocida como interrupcin hardware o peticin de interrupcin) es una seal recibida por el procesador de un ordenador, indicando que debe "interrumpir" el curso de ejecucin actual y pasar a ejecutar cdigo especfico para tratar esta situacin. Una interrupcin supone la ejecucin temporaria de un programa, para pasar a ejecutar una "subrutina de servicio de interrupcin", que pertenece al BIOS (Basic Input Output System). Las interrupciones surgen de las necesidades que tienen los dispositivos perifricos de enviar informacin al procesador principal de un sistema de computacin. La primera tcnica que se emple fue que el propio procesador se encargara de sondear (polling) el dispositivo cada cierto tiempo para averiguar si tena pendiente alguna comunicacin para l. Este mtodo presentaba el inconveniente de ser muy ineficiente, ya que el procesador constantemente consuma tiempo en realizar todas las instrucciones de sondeo. El mecanismo de interrupciones fue la solucin que permiti al procesador desentenderse de esta problemtica, y delegar en el dispositivo la responsabilidad de comunicarse con el procesador cuando lo necesitaba. El procesador, en este caso, no sondea a ningn dispositivo, sino que queda a la espera de que estos le avisen (le "interrumpan") cuando tengan algo que comunicarle (ya sea un evento, una transferencia de informacin, una condicin de error, etc.). Tipos de Interrupciones
y

Interrupciones hardware: Estas son asncronas a la ejecucin del procesador, es decir, se pueden producir en cualquier momento independientemente de lo que est haciendo la CPU en ese momento. Las causas que lo producen son externas al procesador y a menudo suelen estar ligadas con distintos dispositivos de E/S. Interrupciones software o excepciones : Son aquellas que se producen de forma sncrona a la ejecucin del procesador y por tanto podran predecirse si se analiza con detenimiento la traza del programa que en ese momento estaba siendo ejecutado en la CPU. Normalmente las causas de estas interrupciones suelen ser realizaciones de operaciones no permitidas tales como la divisin por 0, el desbordamiento, el acceso a una posicin de memoria no permitida, etc. Trampas: A menudo se tiende a confundir las interrupciones software y las trampas, ya que su naturaleza es bastante similar. Sin embargo las excepciones se producen al realizar una operacin no permitida por lo que de algn modo podemos decir que no es controlada directamente por el

programador si no que, por un fallo al programar, se producen. No obstante las trampas si que son provocadas por el programador, para provocar una trampa existen distintas instrucciones en el repertorio mquina que permiten al programador producir una interrupcin al ejecutar dicha instruccin. Suelen tener nemotcnicos tales como INT. Suelen ser de vital importancia ya que a partir de las trampas se pueden pedir al SO que realice determinadas funciones, para ello, en DOS se realiza la instruccin INT 0x21 y en Unix se utiliza INT 0x80.

Funciones de Cadena Asc Chr$ Comp Html$ InStr LCase$ Left$ Len LTrim$ Mid$ Right$ RInStr RTrim$ Space$ Split String$ Subst$ Trim$ UCase$ Devuelve el cdigo ASCII de un carcter en una cadena. Devuelve un carcter a partir de su cdigo ASCII. Compara dos cadenas. Cita una cadena para que sea HTML vlido. Busca una cadena dentro de otra. Convierte una cadena a minsculas. Devuelve los primeros caracteres de una cadena. Devuelve la longitud de una cadena. Elimina espacios en blanco de la parte inicial de una cadena. Devuelve parte de una cadena. Devuelve los ltimos caracteres de una cadena. Busca una cadena dentro de otra empezando por su final. Elimina espacios en blanco de la parte final de una cadena. Devuelve una cadena que contiene slo espacios. Divide una cadena en subcadenas. Devuelve la misma cadena concatenada varias veces. Sustituye cadenas en un patrn. Elimina espacios en blanco del final de una cadena. Convierte una cadena a maysculas.

Replace$ Reemplaza, dentro de una cadena, una subcadena por otra.

Interrupcin 21H INT 21H La mayora de servicios funciones del sistema operativo MS-DOS se obtienen a travs de la interrupcin software 21H. Es por esto que se le denomina DOS-API: DOS-APPLICATION-PROGRAM-INTERFACE La INT 21H est compuesta por un grupo de funciones. Cuando se accede a la INT 21H, hay que indicar el nmero de funcin que queremos ejecutar. La llamada a la INT 21H se realizar como sigue: - Introducimos en (AH) el nmero de funcin a la que deseamos acceder. - En caso de que deseemos acceder a una sub-funcin dentro de una funcin, debemos indicarlo introduciendo en (AL) el nmero de esa sub-funcin. - Llamar a la INT 21H.

INT 21H Funcin 01H Entrada de Carcter con Eco ( salida) LLAMADA: AH = 01H DEVUELVE: AL = Cdigo ASCII del Carcter ledo y Echo a pantalla (si AH =08H) es servicio sin Echo) EFECTO: Se lee un carcter del dispositivo de entrada estndar, y se enva al dispositivo estndar de salida. Si al llamar a la funcin no haba ningn carcter disponible, se esperar a que lo haya. Normalmente el dispositivo estndar de entrada es el teclado, y el dispositivo estndar de salida es la pantalla.

INT 21H Funcin 02H Salida de Carcter LLAMADA: AH = 02H DL = Cdigo ASCII a enviar al dispositivo de salida. DEVUELVE: NADA. EFECTO: Se enva el carcter depositado en el registro DL al dispositivo estndar de salida. La salida puede ser redireccionada hacia un fichero, impresora, etc

INT 21H Funcin 05H Envo de Carcter a la Impresora LLAMADA: AH = 05H DL = Cdigo ASCII a enviar al dispositivo de salida. DEVUELVE: NADA

EFECTO: Se enva el carcter depositado en DL al puerto paralelo. Si no se ha redireccionado la salida, el dispositivo por defecto en el puerto paralelo de salida (LPT1 PRN) es la impresora.

INT 21H Funcin 06H Envo de Carcter a la pantalla como smbolo LLAMADA: AH = 06H DL = smbolo entre "cuotation marks" 'A' "#". DEVUELVE: NADA

INT 21H Funcin 09H Visualizacin de una cadena de caracteres LLAMADA: AH = 09H DS:DX = Segmento: Desplazamiento de la cadena a visualizar (in DX - offset address of string in data segment) DS debe apuntar al segmento donde se encuentra la cadena. DX debe contener el desplazamiento de la cadena dentro de ese segmento. Ejemplo: Definition of the message in Data segment MSG DB "This is a message$" or "This...","$" Program in Code segment Mov AH, 09H Mov DX, Offset MSG Int 21 H DEVUELVE: NADA. EFECTO: Se enva una cadena de caracteres al dispositivo estndar de salida. Si no se ha redireccionado la salida, la cadena se enviar a la pantalla.

INT 21H Funcin 0AH Leer cadena de smbolos desde teclado y su cdigo se almacena al buffer LLAMADA: AH = 0AH DX =direccin de buffer en segmento de datos DEVUELVE: En direccin DS:DX la cadena de ASCII cdigos de smbolos entrantes Ejemplo. Define Buffer address in data segment BUF DB 6,0,0,0,0,0,0 (6-simbols, 5 places for input simbols by zero, and last zero is for RETURN ). More than 6 - beep and ignore In code segment the program

Mov AH; 0Ah Mov DX, Offset BUF INT 21H ; input 5 symbols to buffer with "return" code and output all of them to screen INT 21H Funcin 0BH Comprobacin del estado de la entrada LLAMADA: AH = 0BH DEVUELVE: AL = 00H si no hay carcter disponible. AL = FFH si hay algn carcter disponible. EFECTO: Se comprueba si hay algn carcter procedente del dispositivo estndar de entrada. La entrada puede ser redireccionada. Si no hay tal redireccin, se comprueba el buffer de teclado

INT 21H Funcin 0EH Seleccin de disco LLAMADA: AH = 0EH DL = Cdigo de la unidad (0=A , 1=B , etc...) DEVUELVE: AL = Nmero de unidades lgicas del sistema EFECTO: Selecciona una unidad de disco para que se convierta en la unidad por defecto o actual. Ofrece adems informacin acerca del nmero total de unidades lgicas del sistema. Una unidad fsica como un disco duro puede estar particionada en varias unidades lgicas designadas por C , D, E ,etc INT 21H Funcin 19H Obtener disco actual LLAMADA: AH = 19H DEVUELVE: AL = Cdigo de la unidad actual (0=A , 1=B , etc...) EFECTO: Devuelve el cdigo de la unidad de disco activa o por defecto. INT 21H Funcin 39H Crear directorio LLAMADA: AH = 39H

DS:DX = Segmento: Desplazamiento de una cadena ASCII con el nombre del directorio. DEVUELVE: Si se ejecut correctamente: Flag de acarreo (Cf) = 0 Si NO se ejecut correctamente: Flag de acarreo (Cf) = 1 AX = Cdigo de error. EFECTO: Se crea un nuevo directorio usando la unidad de disco y la va de acceso especificada en la cadena ASCIIZ. INT 21H Funcin 3AH Borrar directorio LLAMADA: AH = 3AH DS:DX = Segmento: Desplazamiento de una cadena ASCII con el nombre del directorio a borrar. DEVUELVE: Si se ejecut correctamente: Flag de acarreo (Cf) = 0 Si NO se ejecut correctamente: Flag de acarreo (Cf) = 1 AX = Cdigo de error. EFECTO: Se elimina el directorio indicado de la unidad de disco y la va de acceso especificada en la cadena ASCII.

INT 21H Funcin 3BH Establecer directorio actual LLAMADA: AH = 3BH DS:DX = Segmento: Desplazamiento de una cadena ASCII con el nombre del directorio. DEVUELVE: Si se ejecut correctamente: Flag de acarreo (Cf) = 0 Si NO se ejecut correctamente: Flag de acarreo (Cf) = 1 AX = Cdigo de error. EFECTO: Establece como directorio actual el indicado mediante la cadena ASCII.

INT 21H Funcin 47H Obtener directorio actual LLAMADA: AH = 47H DL = Cdigo de la unidad (0 = unidad por defecto, actual;1 = A ; 2 = B ; etc...) DS:SI = Segmento: Desplazamiento de un buffer de 64 bytes. Este buffer contendr el nombre del directorio, con toda la va de acceso al mismo, en forma de cadena ASCII.

DEVUELVE: Si se ejecut correctamente: Flag de acarreo (Cf) = 0 Si NO se ejecut correctamente: Flag de acarreo (Cf) = 1 AX = Cdigo de error. EFECTO: Establece como directorio actual el indicado mediante la cadena ASCII. Esta funcin se abortar (indicndolo mediante Cf y AX) si el cdigo de unidad no es vlido.

Funciones de manejo de Ficheros INT 21H Funcin 3CH Crear Fichero LLAMADA: AH = 3CH CX = Atributos del fichero: 00H Fichero Normal. 01H Fichero de Slo Lectura. 02H Fichero Oculto. 03H Fichero de Sistema. DS:DX = Segmento: Desplazamiento de una cadena ASCII con el nombre de fichero. DEVUELVE: Si se ejecut correctamente: Flag de acarreo (Cf) = 0 AX = Handle o manejador de fichero. Si NO se ejecut correctamente: Flag de acarreo (Cf) = 1 AX = Cdigo de error. EFECTO: Si el fichero indicado mediante la cadena ASCII ya exista, entonces se vaca su contenido, quedando con longitud 0. Si el fichero no exista, entonces se crea. En ambos casos, el fichero se abre, y se devuelve un Handle manejador de fichero para los restantes accesos a dicho fichero. Esta funcin se abortar (indicndolo mediante Cf y AX) si: -La va de acceso indicada en la cadena ASCII es errnea. -Se va a crear el fichero en el directorio raz y ste ya est lleno El Handle es un nmero mediante el cual se referencia a un fichero dado. De esta forma es ms cmodo trabajar con ficheros. Para cada uno de los ficheros con que trabajemos, tendremos un nmero (Handle) que lo representar. INT 21H Funcin 3DH Abrir Fichero LLAMADA: AH = 3DH AL = Modo de acceso. Bits 0-2: Permiso de lectura/escritura. 000b Acceso de slo lectura. 001b Acceso de slo escritura.

010b Acceso de lectura/escritura. Bit 3: 0b (Reservado). Bits 4-6: Modo de comparticin de Fichero 000b Slo el programa actual puede acceder al archivo 001b Slo el programa actual puede acceder al archivo. 010b Otro programa puede leer el archivo, pero no escribir en l. 011b Otro programa puede escribir en el archivo, pero no leerlo. 100b Otro programa puede leer y escribir en el archivo. Bit 7: Bit de 'herencia' Handle-flag. 0b Si el handle se hereda por un programa hijo. 1b Si el handle no se hereda. DS:DX = Segmento: Desplazamiento de una cadena ASCII con el nombre de fichero. DEVUELVE: Si se ejecut correctamente Flag de acarreo (Cf) = 0 AX = Handle o manejador de fichero Si NO se ejecut correctamente: Flag de acarreo (Cf) = 1 AX = Cdigo de error. EFECTO: Mediante esta funcin se abre un fichero ya existente, y se devuelve un Handle para acceder al fichero en lo sucesivo. INT 21H Funcin 3EH Cerrar Fichero LLAMADA: AH = 3EH BX = Handle. DEVUELVE: Si se ejecut correctamente: Flag de acarreo (Cf) = 0 Si NO se ejecut correctamente: Flag de acarreo (Cf) = 1 AX = Cdigo de error. EFECTO: Mediante esta funcin se cierra un fichero que estuviera abierto. Se utiliza el Handle para indicar el fichero a cerrar. Tras cerrar el fichero, dicho Handle se libera para nuevos ficheros. Se vuelvan al disco todos los buffers internos asociados al fichero.

INT 21H Funcin 3FH Lectura de Fichero o dispositivo LLAMADA: AH = 3FH BX = Handle. CX = Nmero de bytes a leer.

DS:DX = Segmento: Desplazamiento del buffer donde se depositarn los caracteres ledos DEVUELVE: Si se ejecut correctamente: Flag de acarreo (Cf) = 0 AX = Bytes transferidos Si NO se ejecut correctamente: Flag de acarreo (Cf) = 1 AX = Cdigo de error. EFECTO: Dado un handle vlido, se realiza una transferencia desde el fichero referenciado por ese handle hacia el buffer de memoria especificado mediante DS:DX. Se transferirn tantos caracteres como se especifique en CX. Acto seguido, se actualiza el puntero de fichero hasta el carcter que sigue al bloque ledo. Mediante esta funcin es posible leer caracteres del teclado, usando el handle 0.

INT 21H Funcin 40H Escritura en Fichero o dispositivo. LLAMADA: AH = 40H BX = Handle. CX = Nmero de bytes a escribir. DS:DX = Segmento: Desplazamiento del buffer desde donde se van a tomar los caracteres a escribir. DEVUELVE: Si se ejecut correctamente: Flag de acarreo (Cf) = 0 AX = Bytes transferidos. Si NO se ejecut correctamente: Flag de acarreo (Cf) = 1 AX = Cdigo de error EFECTO Dado un handle vlido, se realiza una transferencia desde el buffer de memoria indicado mediante DS:DX hacia el fichero o dispositivo referenciado por el Handle. Se transferirn tantos caracteres como se especifique en CX. Acto seguido, se actualiza el puntero de fichero una posicin por delante del bloque escrito, para que futuras escrituras no 'machaquen' los datos que ya hubiera. Mediante esta funcin es posible escribir caracteres en la pantalla, usando el handle 1.

INT 21H Funcin 41H Borrar Fichero. LLAMADA: AH = 41H DS:DX = Segmento: Desplazamiento de la cadena ASCII con el nombre del fichero a borrar.

DEVUELVE: Si se ejecut correctamente: Flag de acarreo (Cf) = 0 Si NO se ejecut correctamente: Flag de acarreo (Cf) = 1 AX = Cdigo de error. EFECTO: Se borra el fichero indicado mediante la cadena ASCII INT 21H Funcin 42H Establecer puntero de fichero. LLAMADA: AH = 42H AL = Cdigo de desplazamiento: 00h Desplazamiento desde el inicio del fichero. 01h Desplazamiento desde la posicin actual del puntero. 02h Desplazamiento desde el final del fichero. BX = Handle del fichero. CX = Mitad ms significativa del desplazamiento. DX = Mitad menos significativa del desplazamiento. DEVUELVE: Si se ejecut correctamente Flag de acarreo (Cf) = 0 DX = Mitad ms significativa del puntero actualizado. AX = Mitad menos significativa del puntero actualizado. Si NO se ejecut correctamente Flag de acarreo (Cf) = 1 AX = Cdigo de error. EFECTO: Cambia el valor del puntero de fichero, permitiendo as un acceso aleatorio al fichero. Podremos, mediante esta funcin, escribir y leer caracteres en cualquier posicin del fichero, sin pasar por las anteriores.

INT 21H Funcin 43H Subfuncin 00h Obtener atributos de fichero LLAMADA: AH = 43H AL = 00h DS:DX = Segmento: Desplazamiento de la cadena ASCIIZ con el nombre del fichero. DEVUELVE Si se ejecut correctamente: Flag de acarreo (Cf) = 0 CX = Atributos del fichero

Si Bit 0 = 1, Fichero de slo lectura. Si Bit 1 = 1, Fichero oculto. Si Bit 2 = 1, Fichero de sistema. Si Bit 5 = 1, El archivo ha sido modificado desde el ltimo backup. Si NO se ejecut correctamente: Flag de acarreo (Cf) = 1 AX = Cdigo de error. EFECTO: Mediante esta funcin se obtiene informacin acerca de los atributos de un determinado fichero, indicado mediante la cadena ASCII. INT 21H Funcin 43H Subfuncin 01h Establecer atributos de fichero LLAMADA: AH = 43H AL = 01h CX = Nuevos atributos para fichero. Si ponemos Bit 0 = 1, atributo de slo lectura. Si ponemos Bit 1 = 1, atributo de oculto. Si ponemos Bit 2 = 1, atributo de sistema. Debemos establecer Bit 3 = 0 Debemos establecer Bit 4 = 0. Si ponemos Bit 5 = 1, indicar que el fichero ha sido modificado desde el ltimo backup. DS:DX = Segmento: Desplazamiento de la cadena ASCIIZ con el nombre del fichero. DEVUELVE: Si se ejecut correctamente Flag de acarreo (Cf) = 0 Si NO se ejecut correctamente: Flag de acarreo (Cf) = 1 AX = Cdigo de error. EFECTO: Mediante esta funcin se establecen nuevos atributos a un fichero dado. Este fichero se indica mediante la cadena ASCII. INT 21H Funcin 56H Renombrar Fichero Mover Fichero LLAMADA: AH = 56H DS:DX = Segmento: Desplazamiento de la cadena ASCII con el nombre actual del fichero. ES:DI = Segmento:Desplazamiento de la cadena ASCII con el nuevo nombre para el fichero.

DEVUELVE: Si se ejecut correctamente: Flag de acarreo (Cf) = 0 Si NO se ejecut correctamente: Flag de acarreo (Cf) = 1 AX = Cdigo de error. EFECTO: Esta funcin permite cambiar el nombre a un fichero dado. Tambin permite mover el fichero a otro directorio dentro del mismo dispositivo. En el segundo caso, lo que debemos hacer es cambiar el camino que nos lleva al fichero, en vez del nombre de fichero en s. VERSION DE MS-DOS: 2.0 superior. NOTAS: Se producir un error si: - la cadena ASCII indicada es errnea. - ya existe un fichero con el mismo nombre que el indicado. - Se intenta mover el fichero a otro dispositivo o unidad. - El fichero se mueve al directorio raz, y ste est lleno. Funciones de terminacin de procesos INT 21H Funcin 00H Terminar ejecucin del Programa LLAMADA: AH = 00H CS = Direccin del segmento del PSP. DEVUELVE: NADA EFECTO: Se finaliza la ejecucin del programa en curso. Esto conlleva: - Liberacin de toda la memoria asignada al programa. - Todos los buffers de fichero son vaciados. - Se cierra cualquier fichero abierto por el programa. - Se restauran los tres vectores de interrupcin (INT 22H, INT 23H, INT 24H) cuyo contenido original fue almacenado en la pila. Esta funcin est pensada para programas COM, en los cuales, el PSP est en el mismo segmento que el cdigo del programa. En los programas EXE esto no sucede as, estando el PSP en diferente segmento al cdigo del programa, por tanto, no se debe llamar a esta funcin desde un programa .EXE. En ambos casos (COM y EXE), es preferible utilizar la funcin 4CH, ya que devuelve un cdigo de retorno la programa padre. INT 21H Funcin 4CH Terminacin de Programa con Cdigo de Retorno LLAMADA: AH = 4CH

AL = Cdigo de retorno para el programa padre DEVUELVE: NADA. EFECTO: Se finaliza la ejecucin del programa en curso, y se devuelve un cdigo de retorno al programa padre. Mediante este cdigo de retorno, se puede ofrecer informacin al programa padre acerca de la ejecucin del programa (si se ha producido error, etc...) La terminacin del programa conlleva: - Liberacin de toda la memoria asignada al programa. - Todos los buffers de fichero son vaciados. - Se cierra cualquier fichero abierto por el programa. - Se restauran los tres vectores de interrupcin (INT 22H, INT 23H, INT 24H) cuyo contenido original fue almacenado en la pila. Este es el mtodo idneo de terminacin de programas, ya que no necesita que el registro CS tenga ningn contenido especial. Y aparte, devuelve informacin al programa padre.

INT 21H Funcin 31H Finalizar el Programa y Dejar Residente LLAMADA: AH = 31H AL = Cdigo de retorno para el programa padre. DX = Cantidad de memoria a dejar residente (en prrafos). DEVUELVE: NADA EFECTO: Se finaliza la ejecucin del programa en curso, y se devuelve un cdigo de retorno al programa padre. Mediante este cdigo de retorno, se puede ofrecer informacin al programa padre acerca de la ejecucin del programa (si se ha producido error, etc...) Adems de esto, y lo ms importante: Se deja residente el programa o parte del mismo, de forma que las siguientes ejecuciones de programas no lo 'machaquen'. La terminacin del programa conlleva: - Liberacin de toda la memoria asignada al programa. - Todos los buffers de fichero son vaciados. - Se cierra cualquier fichero abierto por el programa. - Se restauran los tres vectores de interrupcin (INT 22H, INT 23H, INT 24H) cuyo contenido original fue almacenado en la pila. Un prrafo equivale a 16 bytes. Por tanto, en DX habr que indicar el nmero total de bytes a dejar residentes dividido por 16. Esta funcin se utiliza en programacin de utilidades residentes (como SideKick o SanBit). Una vez que el programa queda residente en memoria, la activacin del mismo se realiza de acuerdo a algn criterio del propio programa (como la pulsacin de una combinacin de teclas). En este caso, el programa residente toma el control y al acabar su tarea le

devuelve el control al programa que se estuviera ejecutando antes de la activacin del residente. Interrupcin 16H INT 16h es la forma abreviada de la interrupcin 0x16. Esta interrupcin se encarga de controlar el teclado del PC. Esta interrupcion se encarga de obtener funcionalidades bsicas del teclado, es decir, se encarga de recoger las pulsaciones del teclado, obtener el estado del buffer del teclado, etc. La codificacin estndar del teclado que ofrece la INT 16h es de un teclado Estadounidense. Para adaptar la codificacin de la INT 16h a otro tipo de teclado (por ejemplo, un teclado espaol) hay que atender al scan-code de la tecla pulsada y realizar las operaciones convenientes para interpretar la tecla que se desea. En los teclados de 101 letras o ms, existen unas teclas que la INT 16h las interpreta como teclas expandidas, que tienen un scan-code distinto al de las teclas normales (por ejemplo, la tecla pausa). Lista de servicios de la INT 16h AH = 00h Teclado AH = 01h Teclado AH = 02h Teclado AH = 03h Teclado AH = 05h Teclado AH 0Ah = Teclado Teclado expandido Teclado expandido Teclado expandido Leer pulsacin de tecla Obtener el estado del buffer del teclado Obtener el estado del teclado Establecer factor de repeticin Simular la pulsacin de una tecla Obtener el ID del teclado Leer carcter del teclado expandido Obtener estado expandido del buffer del teclado

AH = 10h AH = 11h AH = 12h

Obtener estado del teclado expandido

INT 16h AH=00h - Leer pulsacin de tecla Parmetros: AH = 00h Leer pulsacin de tecla

Retorna: AH = ?? AL = ?? Ejemplo: ;Este ejemplo lee una tecla del teclado y si la tecla pulsada es la de la tecla "" hace las modificaciones para ;que el contenido en AL sea la . inicio: CALL leertecla ;Llamamos a la funcion de leer una tecla MOV AH,0Eh ;Funcion teletype INT 10h ;Mostramos la tecla en pantalla JMP inicio ;Hacemos un bucle eterno leertecla: XOR AX,AX INT 16h CMP AH,27h ""? JE cambiarletra RET cambiarletra: MOV AL,0A4h RET Interrupcin 10H INT 10H Funcin 00H Establecer modo de Vdeo LLAMADA: AH = 00H AL = Modo de vdeo. DEVUELVE: NADA. EFECTO: Selecciona y activa el modo de vdeo especificado. A no ser que se utilice el truco que se indica a continuacin, al llamar a esta funcin, se borra la pantalla. Pero se borra el contenido de pantalla. Por suerte hay una especie de 'truco' para evitar este borrado automtico de la pantalla. Consiste en ;Funcion 0 ;Llamamos al teclado ;El scancode corresponde con el scancode de la tecla ;S, as que cambiamos el contenido de AL ;No, as que no realizamos otra operacin ;Ponemos la letra "" en AL ;Volvemos de la rutina Scan-code de la tecla pulsada Carcter ASCII de la tecla pulsada

poner con valor 1 el bit 7 del registro AL (que contiene el modo de vdeo) en la llamada a la funcin. As por ejemplo, si queremos cambiar a modo 13h, y queremos que se pierda el contenido que hubiera en la pantalla en este modo, en vez de introducir en AL el nmero 13h (00010011b), introduciramos el nmero 93h (10010011b). TARJETA GRAFICA: TODAS (MDA, CGA, EGA, MCGA, VGA...) Modos de vdeo y caractersticas principales: Modo Resolucin Colores Soportan 00h 01h 02h 03h 04h 05h 06h 07h 0Dh 0Eh 0Fh 10h 10h 11h 12h 13h 40 por 25 40 por 25 80 por 25 80 por 25 20 por 200 20 por 200 640 por 200 80 por 25 20 por 200 640 por 200 640 por 350 640 por 350 640 por 350 640 por 480 640 por 480 20 por 200 16 16 16 16 4 4 2 2 16 16 2 4 16 2 16 256 Texto Texto Texto Texto Grfico Grfico Grfico Texto Grfico Grfico Grfico Grfico EGA de 64 KB de RAM Grfico EGA > 64 KB y VGA Grfico Grfico Grfico

Modos superiores al 13h pertenecen a tarjetas Super-VGA superior.

INT 10H Funcin 01H Establecer tamao del Cursor LLAMADA: AH = 01H Bits 0-4 de CH = Lnea inicial del Cursor Bits 0-4 de CL = Lnea final del Cursor. DEVUELVE: NADA. EFECTO: Se selecciona un nuevo tamao de Cursor en modo texto. INT 10H Funcin 02H Posicionar el Cursor LLAMADA: AH = 02H BH = Pgina de vdeo DH = Lnea donde situar el cursor DL = Columna donde situar el cursor DEVUELVE: NADA. EFECTO: Posiciona el cursor en pantalla, de acuerdo a las coordenadas indicadas en los registros DH y DL Slo se desplazar el cursor si la pgina de vdeo indicada mediante BH es la pgina de vdeo activa. Esto es as ya que existe un cursor independiente para cada una de las pginas de vdeo con las que contamos en el modo actual Las coordenadas para la columna empiezan a partir de 0. Las coordenadas para la fila empiezan a partir de 0. Esto quiere decir que la esquina superior izquierda de la pantalla tendr las coordenadas (lnea=0,columna=0). La columna mxima es la 39 (si estamos en un modo de vdeo de 40 columnas) la 79 (si estamos en un modo de vdeo de 80 columnas). La lnea mxima es la 24 (si estamos en un modo de vdeo de 25 lneas) la 49 (si estamos en un modo de vdeo de 50 lneas). (Un 'truco' para hacer desaparecer el cursor de la pantalla consiste en dar valores no vlidos para la columna o la fila. Por ejemplo, si damos a la columna el valor 100, el cursor desaparecer de la pantalla) INT 10H Funcin 03H Buscar posicin del Cursor y Tamao LLAMADA: AH = 03H BH = Pgina de vdeo. DEVUELVE: CH = Lnea inicial del cursor CL = Lnea final del cursor

DH = Fila donde se encuentra el cursor DL = Columna donde se encuentra el cursor EFECTO: Obtiene las coordenadas del cursor en una pgina de vdeo dada. Tambin se obtiene el tamao del cursor. INT 10H Funcin 05H Establecer nueva pgina de vdeo LLAMADA: AH = 05H AL = Pgina de vdeo. DEVUELVE: NADA. EFECTO: Establece como activa la nueva pgina de vdeo indicada mediante el registro AL, mostrndose por pantalla el contenido de esa pgina de vdeo, y situando el cursor en la posicin que le corresponda para esa pgina de vdeo. Las pginas posibles para cada modo de vdeo son: Nmero Pginas 8 (0 - 7) 4 (0 - 3) 8 (0 - 7) 8 (0 - 7) 8 (0 - 7) 4 (0 - 3) 2 (0 - 1) 2 (0 - 1) de Modos Vdeo 00h y 01h 02h y 03h 02h y 03h 07h 0Dh 0Eh 0Fh 10h de Tarjetas soportan que lo

CGA, EGA, MCGA, VGA CGA ECGA, MCGA, VGA EGA, VGA EGA, VGA EGA, VGA EGA, VGA EGA, VGA

Los modos de vdeo 11h en adelante cuentan slo con una pgina de vdeo. INT 10H Funcin 06H Desplazar lneas de texto hacia arriba LLAMADA: AH = 06H AL = Nmero de lneas a desplazar. Si AL=0, se borra toda la ventana seleccionada mediante los registros CX y DX

BH = Atributo a usar en las lneas borradas. CH = Lnea donde comienza la ventana de texto. CL = Columna donde comienza la ventana de texto. DH = Lnea donde acaba la ventana de texto. DL = Columna donde acaba la ventana de texto. DEVUELVE: NADA. EFECTO: Desplaza hacia arriba un nmero determinado de lneas en la ventana especificada mediante los registros CX y DX. Las lneas desplazadas, quedan vacas, rellenndose con blancos. El color utilizado en estas lneas vacas se indica mediante el registro BH. INT 10H Funcin 07H Desplazar lneas de texto hacia abajo LLAMADA: AH = 07H AL = Nmero de lneas a desplazar. Si AL=0, se borra toda la ventana seleccionada mediante los registros CX y DX BH = Atributo a usar en las lneas borradas. CH = Lnea donde comienza la ventana de texto. CL = Columna donde comienza la ventana de texto. DH = Lnea donde acaba la ventana de texto. DL = Columna donde acaba la ventana de texto. DEVUELVE: NADA. EFECTO: Desplaza hacia abajo un nmero determinado de lneas en la ventana especificada mediante los registros CX y DX . Las lneas desplazadas, quedan vacas, rellenndose con blancos. El color utilizado en estas lneas vacas se indica mediante el registro BH. INT 10H Funcin 08H Leer carcter y atributo LLAMADA: AH = 08H BH = Pgina de vdeo. DEVUELVE: AH = Atributo (color del carcter). AL = Cdigo ASCII del carcter ledo. EFECTO: Mediante la llamada a esta funcin, se devuelve en AL el cdigo del carcter situado en la posicin del cursor. As mismo, obtenemos en AH el color de este carcter. INT 10H Funcin 09H Escribir carcter y atributo

LLAMADA: AH = 09H AL = Cdigo del carcter a escribir. BH = Pgina de vdeo donde escribir el carcter. BL = Atributo color que va a tener el carcter. CX = Cantidad de veces que se debe escribir el carcter, uno a continuacin de otro. DEVUELVE: NADA. EFECTO: Se escribe un carcter en la posicin actual del cursor, en la pgina de vdeo deseada. El carcter tendr el color indicado mediante BL. INT 10H Funcin 0AH Escribir carcter LLAMADA: AH = 0AH AL = Cdigo del carcter a escribir. BH = Pgina de vdeo donde escribir el carcter. CX = Cantidad de veces que se debe escribir el carcter, uno a continuacin de otro. DEVUELVE: NADA. EFECTO: Se escribe un carcter en la posicin actual del cursor, en la pgina de vdeo deseada. El carcter tendr el mismo color que tuviera el carcter antiguo en esa posicin. Es decir, se modifica el carcter, pero no el color. En caso de querer modificar el color del carcter, usar la funcin 09h. INT 10H Funcin 0CH Escribir un punto pixel grfico LLAMADA: AH = 0CH AL = Valor del color a usar. BH = Pgina de vdeo donde escribir el carcter. CX = Columna donde escribir el pixel (coordenada grfica x) CX = Fila donde escribir el pixel (coordenada grfica y) DEVUELVE: NADA. EFECTO: Da un nuevo color a un pixel grfico. Funcin vlida slo para modos grficos. INT 10H Funcin 0DH Obtener el color de un pixel grfico LLAMADA: AH = 0DH

BH = Pgina de vdeo. CX = Columna del pixel que nos interesa (coordenada grfica x). DX = Fila del pixel que nos interesa (coordenada grfica y). DEVUELVE: AL = Valor del color del pixel. EFECTO: Obtiene el color de un punto grfico de la pantalla. Este punto se referenciar mediante las coordenadas grficas (x,y): (CX,DX). Funcin vlida slo para modos grficos. INT 10H Funcin 0FH Obtener el Modo de vdeo actual LLAMADA: AH = 0FH DEVUELVE: AL = Modo de vdeo actual. AH = Cantidad de caracteres que caben en una lnea en el modo de vdeo actual. BH = Nmero de la pgina activa. EFECTO: Mediante esta funcin podemos saber en todo momento, en qu modo de vdeo estamos trabajando. La utilidad de esta funcin reside sobre todo en la construccin de programas residentes.

También podría gustarte