Está en la página 1de 8

Departamento de Eléctrica y Electrónica

Carrera de Electrónica y Automatización

MICROPROCESADORES Y MICROCONTROLADORES

Práctica 2.1

MANEJO DE LA INTERRUPCION INT 21H CON EL


MICROPROCESADOR 8086

Autor:
Pantusin Chiluisa Fernando Javier

Docente:
Ing. Amparo Meythaler

NRC: 7803
1) OBJETIVOS
- Identificar la interface y opciones básicas del Emulador EMU86.
- Realizar una aplicación que permita realizar un corrido en pasos de las instrucciones
de la fábrica INTEL en el Emulador EMU86.

2) MARCO TEORICO
INTERRUPCION INT 21H
La mayoría de servicios ó funciones del sistema operativo MS-DOS se obtienen a
través de la interrupción 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 número de función
que queremos ejecutar. La llamada a la INT 21H se realizará como sigue:
- Introducimos en (AH) el número de función a la que deseamos acceder.
- En caso de que deseemos acceder a una sub-función dentro de una función,
debemos indicarlo introduciendo en (AL) el número de esa sub-función.
- Llamar a la INT 21H.

INT 21H Función 01H


Entrada de Carácter con Eco (ó salida)
LLAMADA:
AH = 01H
DEVUELVE:
AL = Código ASCII del Carácter leído y Echo a pantalla
(si AH =08H) es servicio sin Echo)

EFECTO: Se lee un carácter del dispositivo de entrada estándar, y se envía al


dispositivo estándar de salida. Si al llamar a la función no había ningún carácter
disponible, se esperará a que lo haya. Normalmente el dispositivo estándar de entrada
es el teclado, y el dispositivo estándar de salida es la pantalla.

INT 21H Función 02H


Salida de Carácter
LLAMADA:
AH = 02H
DL = Código ASCII a enviar al dispositivo de salida.
DEVUELVE:
NADA.

EFECTO: Se envía el carácter depositado en el registro DL al dispositivo estándar de


salida. La salida puede ser re direccionada hacia un fichero, impresora, etc.

3) EQUIPOS Y MATERIALES

PC con el paquete EMU86.


4) ACTIVIDADES

4.1) Trabajo Preparatorio

a) Investigue para qué sirven las interrupciones INT 16H y la INT 10H.
INT 16H: La INT 16H del BIOS proporciona la operación básica del BIOS para el
teclado para aceptar caracteres desde el búfer del teclado. Para una tecla de carácter, la
operación envía el carácter al AL y el código de rastreo de la tecla al AH. Para una tecla
de función extendida, la operación envía cero al AL y el código de rastreo al AH.

INT 10H: Despliegue de video. Acepta el número de fracciones en el AH para el modo


de pantalla, colocación del cursor, recorrido y despliegue. Esta interrupción se utiliza
básicamente para mostrar texto en la pantalla, para cambiar a modo gráfico, para
establecer la paleta de colores, etc.

4.2) Desarrollo

a) Realice un programa que presente su nombre. Ponga el código realizado.

- Código:

;MENSAJE
.model small
.stack 100h
.data
texto db 'Mi nombre es: Fernando Pantusin$' ; 10,10,13, POSICION ABAJO
.code
MOV AX,@DATA
MOV DS, AX
LEA DX,texto
MOV AH,09H
INT 21H
MOV AH,4CH
INT 21H
END

b) Corra el programa en forma total y verifique el funcionamiento. Ponga la captura


de pantalla del resultado.
Figura 1. Resultado de la emulación el programa 1

c) Repita los pasos anteriores para un programa que reciba dos números y presente
como resultado el mayor, sin considerar el signo. Nota: Presente dos capturas, una
para cada caso posible.

- Código:
;COMPARADOR

.model small
.stack 64
.data

;declarando variables globales


numero1 db 0
numero2 db 0
comparacion db 0
msjn1 db 10,13, "Ingrese el primer numero= ",'$';ingrese n1
msjn2 db 10,13, "Ingrese el segundo numero= ",'$';ingrese n2
;mensaje para mostrar los resultados
msjnC1 db 10,13, "El mayor numero sin considerar el signo es el primero:= ",'$'
msjnC2 db 10,13, "El mayor numero sin considerar el signo es el segundo:= ",'$'
.code
begin proc far
;direccionamiento del procedimiento
mov ax, @data
mov ds,ax

;solicitar del teclado numero 1


mov ah, 09
lea dx, msjn1
int 21h
mov ah, 01
int 21h
sub al, 30h
mov numero1,al

;solicitar del teclado numero 2

mov ah, 09
lea dx, msjn2
int 21h
mov ah, 01
int 21h
sub al, 30h
mov numero2,al

;operacion

;COMPARACION
mov al, numero1
mov ah, numero2
cmp al,ah
jna caso2

;Mostrar los mensajes de los resultados

;mostrando el primer caso


caso1:
mov comparacion,al
mov ah,09
lea dx,msjnC1
int 21h
mov dl,comparacion
add dl,30h
mov ah,02
int 21h
jmp cierre

;mostrando el segundo caso


caso2:
mov comparacion,ah
mov ah,09
lea dx,msjnC2
int 21h
mov dl,comparacion
add dl,30h
mov ah,02
int 21h

CIERRE:
;cierre del programa
mov ah,4ch
int 21h

begin endp
endHLT

- Resultado:

Caso 1:

Figura 2. Resultado de la emulación del programa 2, considerando el primer caso


Caso 2:

Figura 3. Resultado de la emulación del programa 2, considerando el segundo caso

5) RESULTADOS
• Anote los errores que cometió (si los tuvo). Y la forma en que lo solucionó.
El único problema que tuve fue colocar mal un salto, ya que el texto salía “El número
mayor es:” y me indicaba el valor del número menor. Por consiguiente, coloqué
correctamente el salto lo que resolvió el problema.

• Consulte para qué se pone al inicio de los programas: model, stack, data y code.

Directiva .MODEL:
Crea segmentos por omisión y los enunciados ASSUME y GROUP necesarios. Su
formato general es:
.MODEL modelo-memoria
La directiva .MODEL define el tipo de memoria que se utilizará.

Directiva .STACK
Define el segmento de pila. Su formato general es:
.STACK [tamaño]
El tamaño por omisión de la pila es de 1,024 bytes, que puede pasar por alto.

Directiva .DATA
definen segmentos de datos. .DATA define un segmento para inicializar datos cercanos,
para un programa en ensamblador autónomo, también puede definir datos cercanos no
inicializados en un segmento .DATA.
Directiva .CODE
define el segmento de código. Su formato general es:
.CODE [nombre]
Todo código ejecutable debe ser colocado en este segmento.

6) CONCLUSIONES
- Las interrupciones nos permiten detener un programa determinada para cambiar,
ingresar un dato entre otras intrucciones.
- Las interrupciones nos permiten ya relacionar la memoria y la unidad de control
con la interfaz, en este caso el teclado y la pantalla donde muestra el resultado.
- Las interrupciones tienen ya establecidos un conjunto de instrucciones.
- Las directivas nos establecen con que registros vamos a trabajar y que intrucciones
(escribir texto, ingresar texto) podemos realizar en el programa.

7) RECOMENDACIONES
- Verificar previamente como se trabaja con cada interrupción para poder saber que
interfaces podemos usar.
- Colocar los valores correctos y registros a usar dados por la interrupción y la
directiva
- Emular más de una vez el programa con diferentes resultados para poder corroborar
el funcionamiento correcto del mismo.

8) BIBLIOGRAFIA/LINKOGRAFÍA

Abel, P. (1995). Lenguaje ensamblador y programación para IBM PC y compatibles


(Tercera ed.). México: Prentice Hall.

También podría gustarte