martes, 4 de abril de 2017
lunes, 3 de abril de 2017
jueves, 30 de marzo de 2017
Práctica Color
FIN_4C00H EQU 4C00H
DOS_21H EQU 21H
BIOS_10H EQU 10H
PILA SEGMENT STACK
DW 100 DUP('0')
PILA ENDS
CODIGO SEGMENT
pe06_cls PROC FAR
ASSUME CS:CODIGO,SS:PILA
CALL LIMPIA_PANTALLA
MOV AX,FIN_4C00H
INT DOS_21H
pe06_cls ENDP
LIMPIA_PANTALLA PROC NEAR
MOV AX,0600H
MOV BH,6EH
MOV CX,0000H
MOV DX,484FH
INT BIOS_10H
RET
LIMPIA_PANTALLA ENDP
CODIGO ENDS
END pe06_cls
DOS_21H EQU 21H
BIOS_10H EQU 10H
PILA SEGMENT STACK
DW 100 DUP('0')
PILA ENDS
CODIGO SEGMENT
pe06_cls PROC FAR
ASSUME CS:CODIGO,SS:PILA
CALL LIMPIA_PANTALLA
MOV AX,FIN_4C00H
INT DOS_21H
pe06_cls ENDP
LIMPIA_PANTALLA PROC NEAR
MOV AX,0600H
MOV BH,6EH
MOV CX,0000H
MOV DX,484FH
INT BIOS_10H
RET
LIMPIA_PANTALLA ENDP
CODIGO ENDS
END pe06_cls
miércoles, 29 de marzo de 2017
Programa Práctica
CR EQU 13
LF EQU 10
DATOS SEGMENT
LINEA1 DB CR,LF,'Lara Salazar LUis Fernando',CR,LF,'$'
LINEA2 DB 'Lenguajes de interfaz',CR,LF,'$'
LINEA3 DB 'Ing. sistemas',CR,LF,'$'
LINEA4 DB 'ITM',CR,LF,'$'
DATOS ENDS
PILA SEGMENT STACK
DB 64 DUP('PILA')
PILA ENDS
CODIGO SEGMENT
p5_iden2 PROC FAR
ASSUME CS:CODIGO,DS:DATOS,SS:PILA
MOV AX,DATOS
MOV DS,AX
LEA DX,LINEA1
CALL ESCRIBE
LEA DX,LINEA2
CALL ESCRIBE
LEA DX,LINEA3
CALL ESCRIBE
LEA DX,LINEA4
CALL ESCRIBE
MOV AX,4C00H
INT 21H
p5_iden2 ENDP
ESCRIBE PROC
MOV AH,9
INT 21H
RET
ESCRIBE ENDP
CODIGO ENDS
END p5_iden2
LF EQU 10
DATOS SEGMENT
LINEA1 DB CR,LF,'Lara Salazar LUis Fernando',CR,LF,'$'
LINEA2 DB 'Lenguajes de interfaz',CR,LF,'$'
LINEA3 DB 'Ing. sistemas',CR,LF,'$'
LINEA4 DB 'ITM',CR,LF,'$'
DATOS ENDS
PILA SEGMENT STACK
DB 64 DUP('PILA')
PILA ENDS
CODIGO SEGMENT
p5_iden2 PROC FAR
ASSUME CS:CODIGO,DS:DATOS,SS:PILA
MOV AX,DATOS
MOV DS,AX
LEA DX,LINEA1
CALL ESCRIBE
LEA DX,LINEA2
CALL ESCRIBE
LEA DX,LINEA3
CALL ESCRIBE
LEA DX,LINEA4
CALL ESCRIBE
MOV AX,4C00H
INT 21H
p5_iden2 ENDP
ESCRIBE PROC
MOV AH,9
INT 21H
RET
ESCRIBE ENDP
CODIGO ENDS
END p5_iden2
miércoles, 22 de marzo de 2017
1.5 Llamadas a servicios del sistema.
Es el mecanismo usado por una aplicación para solicitar un servicio al sistema operativo. Las llamadas al sistema comúnmente usan una instrucción especial de la CPU que causa que el procesador transfiera el control a un código privilegiado. previamente especificado por el mismo código. Esto permite al código privilegiado especificar donde va a ser conectado así como el estado del procesador. Cuando una llamada al sistema es invocada, la ejecución del programa que invoca es interrumpida y sus datos son guardados, normalmente en su PCB (Bloque de Control de Proceso del inglés Process Control Block), para poder continuar ejecutándose luego. El procesador entonces comienza a ejecutar las instrucciones de código de alto nivel de privilegio, para realizar la tarea requerida. Cuando esta finaliza, se retorna al proceso original, y continúa su ejecución. El retorno al proceso demandante no obligatoriamente es inmediato, depende del tiempo de ejecución de la llamada al sistema y del algoritmo de planificación de CPU.
1.6 Modos de direccionamiento.
Los llamados modos de direccionamiento son las diferentes maneras de especificar en informática un operando dentro de una instrucción en lenguaje ensamblador. Un modo de direccionamiento especifica la forma de calcular la dirección de memoria efectiva de un operando mediante el uso de la información contenida en registros y / o constantes, contenida dentro de una instrucción de la máquina o en otra parte. Diferentes arquitecturas de computadores varían mucho en cuanto al número de modos de direccionamiento que ofrecen desde el hardware.
Eliminar los modos de direccionamiento más complejos podría presentar una serie de beneficios, aunque podría requerir de instrucciones adicionales, e incluso de otro registro. Se ha comprobado que el diseño de CPUs segmentadas es mucho más fácil si los únicos modos de direccionamiento que proporcionan son simples. La mayoría de las máquinas RISC disponen de apenas cinco modos de direccionamiento simple, mientras que otras máquinas CISC tales como el DEC VAX tienen más de una docena de modos de direccionamiento, algunos de ellos demasiado complejos. El mainframe IBM System/360 disponía únicamente de tres modos de direccionamiento; algunos más fueron añadidos posteriormente para elSystem/390. Cuando existen solo unos cuantos modos, estos van codificados directamente dentro de la propia instrucción (Un ejemplo lo podemos encontrar en el IBM/390, y en la mayoría de los RISC). Sin embargo, cuando hay demasiados modos, a menudo suele reservarse un campo específico en la propia instrucción, para especificar dicho modo de direccionamiento. El DEC VAX permitía múltiples operandos en memoria en la mayoría de sus instrucciones, y reservaba los primeros bits de cada operando para indicar el modo de direccionamiento de ese operando en particular. Incluso en computadores con muchos modos de direccionamiento, algunas medidas realizadas a programas indican que los modos más simples representan cerca del 90% o más de todos los modos de direccionamiento utilizados. Dado que la mayoría de estas medidas son obtenidas a partir de códigos de alto nivel generados a partir de compiladores, nos da una idea de las limitaciones que presentan los compiladores que se utilizan.
1.7 Proceso de ensamblado y ligado.
EDICIÓN:
Los archivos fuente de código ensamblador deben estar en formato ASCII standard. Para esto puede usarse cualquier editor que permita crear archivos sin formato, e.g. Edlin, Edit, Write, El editor del Turbo Pascal, Works, Word, WordStar, etcétera.
Las declaraciones pueden ser introducidas en mayúsculas y/o minúsculas. Una buena práctica de programación es poner todas las palabras reservadas (directivas e instrucciones) en mayúsculas y todo lo del usuario en minúsculas para fines de facilidad de lectura del código.
Las sentencias pueden comenzar en cualquier columna, no pueden tener más de 128 caracteres, no se permiten lineas múltiples ni códigos de control, y cada línea debe ser terminada con una combinación de line-feed y carriage-return. Los comentarios se declaran con; y terminan al final de la línea.
ENSAMBLADO:
El ensamblado se lleva a cabo invocando al MASM. Este puese ser invocado, usando una línea de comando, de la siguiente manera:
MASM archivo [,[objeto][,[listado][,[cross]]]]][opciones][;]
Dónde:
Objeto.- Es el nombre para el archivo objeto.
Listado.- Nombre del archivo de listado de ensamblado. cross. Es un archivo de referencias cruzadas.
LINK:
De la misma forma que el ensamblado, la fase de liga se lleva a cabo con el LINK. Este puede ser invocado de la misma forma que el MASM. Los parámetros que este requiere son:
LINK objeto [,[ejecutable][,[mapa][,[librería]]]]][opciones][;]
dónde:
Objeto.- Es el nombre para el archivo .OBJ
Ejecutable.- Nombre del archivo .EXE
Mapa.- Nombre del archivo mapa
Librería.- Nombre del archivo biblioteca de rutinas
EJECUCIÓN:
Para la ejecución del programa simplemente basta teclear su nombre en el prompt de MS-DOS y teclear ENTER. Con esto el programa será cargado en memoria y el sistema procederá a ejecutarlo. El proceso completo para poder crear un programa ejecutable con el Microsoft Macro Assembler se muestra abajo.
1.8 Desplegado de mensajes en el monitor.
En este momento podemos comenzar a escribir las verdaderas instrucciones que le indicarán a la computadora que mensaje y como lo va a desplegar. Sugiero que comenzemos por borrar la pantalla. Esto se puede realizar de muy diversas formas, aquí lo haremos usando el BIOS, el cual es un microchip que se encuentra dentro de toda PC y controla las funciones básicas de entrada y salida (Basic Input Output System). Lo que haremos es decirle al chip "¡Hey! dime en que modo está trabajando la tarjeta de video", cuando obtengamos la respuesta le diremos: "Dile a la tarjeta de video que deje de trabajar en ese modo y que comienze a trabajar en el modo de video que me diste". Una instrucción rara, pues lo que le estamos ordenando es que deje de trabajar en el modo en el que está trabajando !y que comienze a trabajar en ese mismo modo! Así se lo decimos en su propio lenguaje:
principio:
mov ah, 0fh
int 10h
mov ah, 0
int 10h
Lo primero que vemos es una "etiqueta", con ella le damos nombre a un punto dentro del código, si más tarde dentro del programa deseamos repetir esta parte del código solo tenemos que decir "salta a 'principio'" y ya está.
El primer grupo de instrucciones después de la etiqueta le dicen al BIOS que obtenga la modalidad en la que está trabajando el video. Aquí vemos por primera vez una interrupción (int 10h). Las interrupciones son funciones ya incorporadas dentro del BIOS y del sistema operativo MS-DOS que realizan tareas comunes como leer del disco, mostrar un mensaje en el monitor, o ¡borrar la pantalla!. Enseguida, mediante una función de la interrupción 10h, le decimos que cambie a la misma modalidad de video.
Bueno, ahora que la pantalla está limpia, podemos mostrar nuestro mensaje en el monitor. Aquí está el código:
lea dx, mensaje_a_mostrar
mov ah, 9h
int 21h
Con la primera instrucción le decimos al procesador "Carga en el registro DX, la dirección de memoria de la variable llamada 'mensaje_a_mostrar'". Enseguida le decimos que la despliegue en pantalla con la función 9h de la interrupción 21h.
Nuestra tarea está terminada, así que digamosle a la computadora que no hay más instrucciones que procesar.
int 20h
Las instrucciones están terminadas, pero todavía tenemos que decirle a la computadora que valor va a tener la variable 'mensaje_a_mostrar'.
mensaje_a_mostrar db "¡Hola Mundo!$",0
El signo de pesos al final de la cadena, es necesario para que el sistema operativo sepa en donde se acaba la cadena (una cadena es un grupo de caracteres) que va a desplegar.
Una vez que terminamos con las instrucciones y valores para la máquina, hay que marcar el archivo para que el compilador sepa que ya terminamos de darle instrucciones a la maquina.
CODE ENDS
end principio
¡Al fin! ¡Llegamos al final! Aquí está el código fuente completo:
CODE SEGMENT
ASSUME CS:CODE, DS:CODE, SS:CODE, ES:CODE
ORG 100h
principio:
mov ah, 0Fh
mov ah, 0
int 10h
lea dx, mensaje_a_mostrar mov ah, 9h int 21h
int 20h
mensaje_a_mostrar db "¡Hola Mundo!$",0
CODE ENDS
end principio
Es el mecanismo usado por una aplicación para solicitar un servicio al sistema operativo. Las llamadas al sistema comúnmente usan una instrucción especial de la CPU que causa que el procesador transfiera el control a un código privilegiado. previamente especificado por el mismo código. Esto permite al código privilegiado especificar donde va a ser conectado así como el estado del procesador. Cuando una llamada al sistema es invocada, la ejecución del programa que invoca es interrumpida y sus datos son guardados, normalmente en su PCB (Bloque de Control de Proceso del inglés Process Control Block), para poder continuar ejecutándose luego. El procesador entonces comienza a ejecutar las instrucciones de código de alto nivel de privilegio, para realizar la tarea requerida. Cuando esta finaliza, se retorna al proceso original, y continúa su ejecución. El retorno al proceso demandante no obligatoriamente es inmediato, depende del tiempo de ejecución de la llamada al sistema y del algoritmo de planificación de CPU.
1.6 Modos de direccionamiento.
Los llamados modos de direccionamiento son las diferentes maneras de especificar en informática un operando dentro de una instrucción en lenguaje ensamblador. Un modo de direccionamiento especifica la forma de calcular la dirección de memoria efectiva de un operando mediante el uso de la información contenida en registros y / o constantes, contenida dentro de una instrucción de la máquina o en otra parte. Diferentes arquitecturas de computadores varían mucho en cuanto al número de modos de direccionamiento que ofrecen desde el hardware.
Eliminar los modos de direccionamiento más complejos podría presentar una serie de beneficios, aunque podría requerir de instrucciones adicionales, e incluso de otro registro. Se ha comprobado que el diseño de CPUs segmentadas es mucho más fácil si los únicos modos de direccionamiento que proporcionan son simples. La mayoría de las máquinas RISC disponen de apenas cinco modos de direccionamiento simple, mientras que otras máquinas CISC tales como el DEC VAX tienen más de una docena de modos de direccionamiento, algunos de ellos demasiado complejos. El mainframe IBM System/360 disponía únicamente de tres modos de direccionamiento; algunos más fueron añadidos posteriormente para elSystem/390. Cuando existen solo unos cuantos modos, estos van codificados directamente dentro de la propia instrucción (Un ejemplo lo podemos encontrar en el IBM/390, y en la mayoría de los RISC). Sin embargo, cuando hay demasiados modos, a menudo suele reservarse un campo específico en la propia instrucción, para especificar dicho modo de direccionamiento. El DEC VAX permitía múltiples operandos en memoria en la mayoría de sus instrucciones, y reservaba los primeros bits de cada operando para indicar el modo de direccionamiento de ese operando en particular. Incluso en computadores con muchos modos de direccionamiento, algunas medidas realizadas a programas indican que los modos más simples representan cerca del 90% o más de todos los modos de direccionamiento utilizados. Dado que la mayoría de estas medidas son obtenidas a partir de códigos de alto nivel generados a partir de compiladores, nos da una idea de las limitaciones que presentan los compiladores que se utilizan.
1.7 Proceso de ensamblado y ligado.
EDICIÓN:
Los archivos fuente de código ensamblador deben estar en formato ASCII standard. Para esto puede usarse cualquier editor que permita crear archivos sin formato, e.g. Edlin, Edit, Write, El editor del Turbo Pascal, Works, Word, WordStar, etcétera.
Las declaraciones pueden ser introducidas en mayúsculas y/o minúsculas. Una buena práctica de programación es poner todas las palabras reservadas (directivas e instrucciones) en mayúsculas y todo lo del usuario en minúsculas para fines de facilidad de lectura del código.
Las sentencias pueden comenzar en cualquier columna, no pueden tener más de 128 caracteres, no se permiten lineas múltiples ni códigos de control, y cada línea debe ser terminada con una combinación de line-feed y carriage-return. Los comentarios se declaran con; y terminan al final de la línea.
ENSAMBLADO:
El ensamblado se lleva a cabo invocando al MASM. Este puese ser invocado, usando una línea de comando, de la siguiente manera:
MASM archivo [,[objeto][,[listado][,[cross]]]]][opciones][;]
Dónde:
Objeto.- Es el nombre para el archivo objeto.
Listado.- Nombre del archivo de listado de ensamblado. cross. Es un archivo de referencias cruzadas.
LINK:
De la misma forma que el ensamblado, la fase de liga se lleva a cabo con el LINK. Este puede ser invocado de la misma forma que el MASM. Los parámetros que este requiere son:
LINK objeto [,[ejecutable][,[mapa][,[librería]]]]][opciones][;]
dónde:
Objeto.- Es el nombre para el archivo .OBJ
Ejecutable.- Nombre del archivo .EXE
Mapa.- Nombre del archivo mapa
Librería.- Nombre del archivo biblioteca de rutinas
EJECUCIÓN:
Para la ejecución del programa simplemente basta teclear su nombre en el prompt de MS-DOS y teclear ENTER. Con esto el programa será cargado en memoria y el sistema procederá a ejecutarlo. El proceso completo para poder crear un programa ejecutable con el Microsoft Macro Assembler se muestra abajo.
1.8 Desplegado de mensajes en el monitor.
En este momento podemos comenzar a escribir las verdaderas instrucciones que le indicarán a la computadora que mensaje y como lo va a desplegar. Sugiero que comenzemos por borrar la pantalla. Esto se puede realizar de muy diversas formas, aquí lo haremos usando el BIOS, el cual es un microchip que se encuentra dentro de toda PC y controla las funciones básicas de entrada y salida (Basic Input Output System). Lo que haremos es decirle al chip "¡Hey! dime en que modo está trabajando la tarjeta de video", cuando obtengamos la respuesta le diremos: "Dile a la tarjeta de video que deje de trabajar en ese modo y que comienze a trabajar en el modo de video que me diste". Una instrucción rara, pues lo que le estamos ordenando es que deje de trabajar en el modo en el que está trabajando !y que comienze a trabajar en ese mismo modo! Así se lo decimos en su propio lenguaje:
principio:
mov ah, 0fh
int 10h
mov ah, 0
int 10h
Lo primero que vemos es una "etiqueta", con ella le damos nombre a un punto dentro del código, si más tarde dentro del programa deseamos repetir esta parte del código solo tenemos que decir "salta a 'principio'" y ya está.
El primer grupo de instrucciones después de la etiqueta le dicen al BIOS que obtenga la modalidad en la que está trabajando el video. Aquí vemos por primera vez una interrupción (int 10h). Las interrupciones son funciones ya incorporadas dentro del BIOS y del sistema operativo MS-DOS que realizan tareas comunes como leer del disco, mostrar un mensaje en el monitor, o ¡borrar la pantalla!. Enseguida, mediante una función de la interrupción 10h, le decimos que cambie a la misma modalidad de video.
Bueno, ahora que la pantalla está limpia, podemos mostrar nuestro mensaje en el monitor. Aquí está el código:
lea dx, mensaje_a_mostrar
mov ah, 9h
int 21h
Con la primera instrucción le decimos al procesador "Carga en el registro DX, la dirección de memoria de la variable llamada 'mensaje_a_mostrar'". Enseguida le decimos que la despliegue en pantalla con la función 9h de la interrupción 21h.
Nuestra tarea está terminada, así que digamosle a la computadora que no hay más instrucciones que procesar.
int 20h
Las instrucciones están terminadas, pero todavía tenemos que decirle a la computadora que valor va a tener la variable 'mensaje_a_mostrar'.
mensaje_a_mostrar db "¡Hola Mundo!$",0
El signo de pesos al final de la cadena, es necesario para que el sistema operativo sepa en donde se acaba la cadena (una cadena es un grupo de caracteres) que va a desplegar.
Una vez que terminamos con las instrucciones y valores para la máquina, hay que marcar el archivo para que el compilador sepa que ya terminamos de darle instrucciones a la maquina.
CODE ENDS
end principio
¡Al fin! ¡Llegamos al final! Aquí está el código fuente completo:
CODE SEGMENT
ASSUME CS:CODE, DS:CODE, SS:CODE, ES:CODE
ORG 100h
principio:
mov ah, 0Fh
mov ah, 0
int 10h
lea dx, mensaje_a_mostrar mov ah, 9h int 21h
int 20h
mensaje_a_mostrar db "¡Hola Mundo!$",0
CODE ENDS
end principio
Lenguaje de Interfaz
Unidad I:
Introducción al lenguaje ensamblador
1.1 Importancia de la
programación en lenguaje ensamblador
Definición: El
lenguaje ensamblador es un tipo de lenguaje de bajo nivel utilizado para
escribir programas informáticos, y constituye la representación más directa del
código máquina específico para cada arquitectura de microprocesador.
La importancia del lenguaje ensamblador es principalmente
que se trabaja directamente con el microprocesador; por lo cual se debe de
conocer el funcionamiento interno de este, tiene la ventaja de que en el se
puede realizar cualquier tipo de programas que en los lenguajes de alto nivel
no lo pueden realizar. Otro punto sería que los programas en ensamblador ocupan
menos espacio en memoria.
1.2 El procesador y
sus registros internos
Los registros del procesador se emplean para controlar
instrucciones en ejecución, manejar direccionamiento de memoria y proporcionar
capacidad aritmética. Los registros son direccionable por medio de un nombre.
Los bits por convención, se numeran de derecha a izquierda, como en:
... 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
Registros de segmento
Un registro de
segmento tiene 16 bits de longitud y facilita un área de memoria para
direccionamiento conocida como el segmento actual.
Registro CS.
El DOS almacena la dirección inicial del segmento de código
de un programa en el registro CS. Esta dirección de segmento, mas un valor de
desplazamiento en el registro apuntador de instrucción (IP), indica la
dirección de una instrucción que es buscada para su ejecución.
Registro DS.
La dirección inicial de un segmento de datos de programa es
almacenada en el registro DS. En términos sencillos, esta dirección, más un
valor de desplazamiento en una instrucción, genera una referencia a la
localidad de un byte específico en el segmento de datos.
Registro SS.
El registro SS
permite la colocación en memoria de una pila, para almacenamiento temporal de
direcciones y datos. El DOS almacena la dirección de inicio del segmento de
pila de un programa en el registro SS. Esta dirección de segmento, más un valor
de desplazamiento en el registro del apuntador de pila (SP), indica la palabra
actual en la pila que está siendo direccionada.
Registros ES.
Algunas operaciones
con cadenas de caracteres (datos de caracteres) utilizan el registro extra de
segmento para manejar el direccionamiento de memoria. En este contexto, el
registro ES está asociado con el registro DI (índice). Un programa que requiere
el uso del registro ES puede inicializarlo con una dirección de segmento
apropiada.
Registros FS y GS.
Son registros extra de segmento en los procesadores 80386 y
posteriores.
Registros de propósito
general. Los registros de propósito general AX, BX, CX y DX son los
caballos de batalla del sistema. Son únicos en el sentido de que se puede
direccionarlos como una palabra o como una parte de un byte. El último byte de
la izquierda es la parte "alta", y el ultimo byte de la derecha es la
parte "baja". Por ejemplo, el registro CX consta de una parte CH
(alta) y una parte Cl (baja), y usted puede referirse a cualquier parte por su
nombre.
Registro AX. El
registro AX, el acumulador principal, es utilizado para operaciones que
implican entrada/salida y la mayor parte de la aritmética. Por ejemplo, las
instrucciones para multiplicar, dividir y traducir suponen el uso del AX.
También, algunas operaciones generan código más eficiente si se refieren al AX
en lugar de a los otros registros.
Registro BX. El
BX es conocido como el registro base ya que es el único registro de propósito
general que puede ser índice para direccionamiento indexado. También es común
emplear el BX para cálculos.
Registro DX. El
DX es conocido como l registro de datos.
Alguna operaciones de entrada/salida requieren uso, y las operaciones de
multiplicación y división con cifras grandes suponen al DX y al AX trabajando
juntos.
1.3 La memoria
principal (RAM)
La memoria principal o primaria,"Memoria Central
", es aquella memoria de un ordenador, donde se almacenan temporalmente
tanto los datos como los programas que la CPU está procesando o va a procesar
en un determinado momento. Por su función, es una amiga inseparable del
microprocesador, con el cual se comunica a través de los buses de datos. Por
ejemplo, cuando la CPU tiene que ejecutar un programa, primero lo coloca en la
memoria y después lo empieza a ejecutar. Lo mismo ocurre cuando necesita
procesar una serie de datos; antes de poder procesarlos los tiene que llevar a
la memoria principal. Esta clase de memoria es volátil, es decir que, cuando se
corta la energía eléctrica, se borra toda la información que estuviera
almacenada en ella. Por su función, la cantidad de memoria RAM de que disponga
una computadora es una factor muy importante; hay programas y juegos que
requieren una gran cantidad de memoria para poder usarlos. Otros andarán más
rápido si el sistema cuenta con más memoria RAM.
1.4 El concepto de
interrupciones
Definición: 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.
Dentro de una computadora existen dos clases de
interrupciones: Interrupciones por software: Son aquellas programadas por el
usuario, es decir, el usuario decide cuando y donde ejecutarlas, generalmente
son usadas para realizar entrada y salida. Interrupciones por hardware: Son
aquellas que son provocadas por dispositivos externos al procesador su
característica principal es que no son programadas, esto es, pueden ocurrir en
cualquier momento en el programa. Existen dos clases de interrupciones de este
tipo:
·
Interrupciones por hardware enmascarables: Aquellas en las que el usuario
decide si quiere o no ser interrumpido.
·
Interrupciones por hardware no enmascarables (NMI): Aquellas que siempre
interrumpen al programa.
Las interrupciones por software se ejecutan con ayuda de las
instrucciones: INT e IRET, además se tiene 256 interrupciones: de la 00 a la
FF.
Asociado al concepto
de interrupción se tiene un área de memoria llamada vector de interrupciones;
la cual contiene las direcciones de las rutinas de servicio de cada
interrupción. Esta área se encuentra en el segmento 0000:0000.
Suscribirse a:
Entradas (Atom)