En una entrada anterior hemos hablado referente a las interrupciones, una interrupción como mencionamos, tiende a interrumpir la ejecución normal de un programa, es una subrutina (como una función o comando) que ejecuta cierta accion segun una especie de selector. Para utilizarlas, tendremos que poner los registros con un determinado valor (el selector) para que se realice el propósito que buscamos. Cada interrupción tiene varias funciones, y podremos elegir cuál ejecutamos según el valor de AH.
21h: Invoca a todos los servicios de llamada a función DOS, generalmente usado en convinacion con otros servicios para la entrada o salida de datos.
20h: Invoca al servicio de terminación de programa del DOS (termina un programa, como el exit).
10h: Despliega opciones de video
16h: Esta interrupción se encarga de controlar el teclado del PC.
Servicios:
Un servicio es el valor (selector del que hablamos anteriormente), este nos proporciona la facilidad para realizar varias tareas, desde una simple inserción de datos, hasta el hecho de modificar propiedades del display.
Veamos algunos servicios comunes para algunas interrupciones vistas en clase:
Interrupcion 21h
Servicio 01: lee un caracter introducido por teclado
mov ah,01 ;invoco al servicio
int 21h ;ejecuto la accion
Servicio 09: Visualización de una cadena de caracteres
MOV DX,OFFSET CADENA2 ; Paso la cadena a DX
MOV AH,9 ;LLamo al servicio 09
INT 21H ;ejecuto la accion
;lo anterior imprimira el contenido de la cadena2
Servicio 02: imprime un solo caracter
mov ah,02
mov dl,suma
int 21h
Servicio 4ch: Termina un programa pero antes retorna el control si es que este programa fue invocado por otro programa. Sin tanto rollo es como el return 0 en C al final del main.
mov ah,4ch
int 21h
Mas servicios del 21h: http://ict.udlap.mx/people/oleg/docencia/ASSEMBLER/asm_interrup_21.html
Interrupcion 16h:
Servicio 00: Leera una pulsacion de teclado (dejara el cursor esperando hasta que se presione una tecla, parecido a presione cualquier tecla para continuar)
MOV AX,0
INT 16H
Mas servicios del 16h:http://www.esacademic.com/dic.nsf/eswiki/591430
Interrupcion 10h:
Servicio 0Fh: Mediante esta función podemos saber en todo momento, en qué modo de vídeo estamos trabajando.
Servicio 0: o 00h, establece el modo de video, este lo deja en resolucion de 40x25
mov ah,0Fh ;-consigo el modo actual
mov ah,0 ;-lo cambio a la resolucion mensionada
int 10h ;-aplico los cambios
Mas servicios de 10h: http://ict.udlap.mx/people/oleg/docencia/Assembler/asm_interrup_10.html
Comentarios
Publicar un comentario