Profesor: Noé Amir Rodríguez Olivares Matricula: 000028609 Asignatura: Lenguaje Ensamblador Tipo de clase: “Regular” Cl
Views 350 Downloads 152 File size 3MB
Profesor: Noé Amir Rodríguez Olivares Matricula: 000028609
Asignatura: Lenguaje Ensamblador Tipo de clase: “Regular” Clase: Interrupciones en ensamblador
Objetivos de la clase El objetivo de esta clase es que el alumno mejore su capacidad para plantear soluciones con códigos en lenguaje ensamblador a partir de un problema planteado y utilizando interrupciones.
Introducción En esta clase se dará una orientación sobre las interrupciones y su manera de operarlas.
Interrupciones Las interrupciones son una manera de realizar la comunicación entre el procesador con el hardware y software de un programa, permitiéndole ampliar su capacidad de manejar hardware a través del sistema operativo, o recibir mensajes del mismo.
Defina si el siguiente ejemplo de interrupción es por hardware (h) o software (s) • Entrada de un dato del mouse • Una operación da como resultado un cero • Un programa ha terminado su operación • Una impresora manda un mensaje de error
Interrupciones Otra forma de decirlo: Una interrupción es el rompimiento en la secuencia de un programa para ejecutar un programa especial llamando una rutina de servicio cuya característica principal es que al finalizar regresa al punto donde se interrumpió el programa. Tipos de interrupciones por hardware: • Interrupciones por hardware enmascarables: Aquellas que el usuario decide si quiere o no ser interrumpido. • Interrupciones por hardware no enmascarable (NMI): Aquellas que siempre interrumpen al programa.
Interrupciones Las interrupciones por hardware ocurren cuando un dispositivo necesita atención del procesador y genera una señal eléctrica en la línea IRQ que tiene asignada. Interrupción no enmascarable significa que la interrupción no puede ser Deshabilitada por software. Este tipo de interrupciones ocurren cuando se recibe Una señal en la patilla NMI ("Nonmaskable Interrupt") del procesador. Se reservan para casos en que es crítica la respuesta, por ejemplo que se detecte un error de paridad en la memoria. Además son de prioridad más alta que las enmascarables.
¿A tu consideración, qué fallas o eventos en la computadora generarían una interrupción no enmascarable?
Vector de Interrupciones Es un vector que almacena la dirección de atención a la interrupción. Los vectores de interrupción se almacenan en una tabla en una zona de memoria. La llamada tabla de vectores de interrupción. Cuando se atiende una petición de interrupción de número n, el sistema, tras realizar eventualmente algunas tareas previas (tales como salvar el valor de ciertos registros) transfiere el control a la dirección indicada
Vector de Interrupciones El vector de interrupción se direcciona mediante 4 bytes, ya que se encuentra almacenado en los primeros 1024 bytes de memoria (00000h-003FFh), con los 4 bytes de dirección se definen los vectores de interrupción, con un total de 256 interrupciones diferentes.
Cada vector contiene la dirección de un procedimiento ISR*. Los primeros 2 bytes contienen a IP y los 2 últimos contienen a CS, donde se encuentra el código a ejecutar debido a la interrupción
* Rutina de atención a interrupción
Interrupciones Interrupción
Tipo
Descripción
INT #n
Software
Es una instrucción para llamar a la interrupción
INTR
Hardware
Int. Externa mascarable
NMI
Hardware
Int. Externa no enmascarable
Interna
Software
Condiciones internas de error
Instrucciones de interrupción
Otra forma de decirlo: Una interrupción es la ocurrencia de un evento o condición que causa la suspensión temporal del programa mientras la condición es atendida por otro subprograma. INT n Esta instrucción llama al procedimiento de servicio de interrupción ISR que comienza en la dirección representada por el vector número n. Existen 256 instrucciones para la interrupción INT n por software. El DOS (Disk Operating System) contiene una serie de rutinas en software que puede utilizar el programador. La INT 21H es utilizada para procesar acciones diversas las cuales deben estar contenidas previamente en el registro AH antes de ejecutar la interrupción.
La interrupción 21H
Acción
Descripción
00H
Terminar programa
Terminar el programa y retorna el control al DOS
01H
Leer teclado con eco
AL=ASCII; Pantalla=eco
02H
Desplegar carácter
DL=ASCII
03H
Leer puerto serial COM1
AL=ASCII
04H
Características
Escribir puerto serial COM1 DL=ASCII
05H
Escribir puerto paralelo LPT1
DL=ASCII
08H
Leer teclado sin eco
AL=ASCII
09H
Mostrar cadena de caracteres
DS:DX dir de cadena; fin de cadena= $
25H
Almacenamiento del vector de interrupción
AL= # interrupción; DS:DX= Dirección de ISR
2AH
Leer fecha de sistema
CX=año; DH=mes; DL=dia del mes; AL=dia semana
Función 09h INT 21H
EFECTO: Se envía una cadena de caracteres al dispositivo estándar de salida. Si no se ha re direccionado la salida, la cadena se enviará a la pantalla.
¿Cómo imprimo un mensaje especifico? Para imprimir en pantalla un mensaje específico se utiliza la interrupción 21h, con el valor 09H cargado en ah, y se debe utilizar la palabra reservada offset para indicar cual vector se va a imprimir.
¿Cómo limpio la pantalla? Para limpiar la pantalla se utiliza la interrupción 10h, con el valor 03H cargado en al.
Función 01h INT 21H
¿Cómo filtro los valores que entran?
¿Cómo imprimo un vector o arreglo?
¿Cómo invierto el texto 1 de 4?
¿Cómo se ve en el software?
¿Cómo invierto el texto 2 de 4?
¿Cómo filtro los valores que entran?
¿Cómo filtro los valores que entran?
Cuando se presiona enter
¿Cómo invierto el texto 3 de 4?
¿Cómo invierto el texto 3 de 4?
¿Cómo invierto el texto 4 de 4?
¿Cómo invierto el texto 4 de 4?
.
Muchas gracias
Anexo 1
Anexo 2
Anexo 2