INTRODUCCIÓN AL SIMULADOR EMU8086
Enviado por moises trigueros • 3 de Mayo de 2017 • Apuntes • 1.193 Palabras (5 Páginas) • 503 Visitas
Reporte de laboratorio[pic 1]
Integrantes:
- Moises Israel Trigueros López 2014-0889U
- Roger Enmanuel Sánchez Novoa 2014-0654U
INTRODUCCIÓN AL SIMULADOR EMU8086
OBJETIVOS
- Conocer y aplicar algunas de las instrucciones de interrupción que provee el programa simulador EMU 8086.
- Programar en ensamblador pequeños programas que lleven instrucciones de interrupción.
INTRODUCCIÓN
El microprocesador tiene tres tipos diferentes de instrucciones que están disponibles para el programador: INT, INTO e INT 3. En modo real, cada una de estas instrucciones lee un vector de la tabla de vectores y llama al procedimiento almacenado en la localidad direccionada por dicho vector. En el modo protegido, cada una de estas instrucciones lee un descriptor de la tabla de descriptores de interrupción. El descriptor especifica la dirección del procedimiento de servicio de la interrupción. La llamada de interrupción se parece a la instrucción CALL lejana, ya que almacena la dirección de retorno (IP/EIP y CS) en la pila.
INT: existen 256 instrucciones diferentes de interrupción por software disponibles para el programador. Cada instrucción INT tiene un operando numérico cuyo rango es de 0 a 255 (00H a FFH). La dirección del vector de interrupción se calcula multiplicando el número de la interrupción por 4. Por ejemplo, la instrucción INT 10H llama al procedimiento de servicio de interrupción cuya dirección en modo real empieza en la localidad de memoria 40H. En modo protegido el descriptor de interrupción se localiza multiplicando el número de interrupción por 8 en lugar de 4, porque cada descriptor posee ocho bytes.
DESARROLLO
- Usando la interrupción INT 10h. La interrupción 10h/0Eh , sirve para mostrar en pantalla un carácter. Utiliza el registro AL que debe contener el carácter a imprimir en la pantalla. La sub-función 0Eh debe cargarse en el registro AH. En AL = carácter a escribir en pantalla.
- Se muestra a continuación un programa que muestra en la pantalla un mensaje
ORG 100h
mov bx,offset mensaje ; apuntamos al mensaje
mov cx,03Bh; contamos los caracteres del mensaje
mov ah,0eh , cargamos la sub-función 0Eh
sig:mov al,[bx] ; obtenemos el primer carácter en al
int 10h ; llamamos a la interrupción 10h, que mostrará
en la pantalla el primer carácter.
inc bx ; incrementamos el puntero del mensaje
dec cx ; decrementamos el contador
jnz sig ; si no es cero, continuamos con el sig. caracter
hlt ; si es cero detiene el programa
mensaje db 'Este es un ejemplo de como se usa la pantalla del simulador'
- Modifique el programa anterior para que el mensaje que se mostrará en pantalla sea terminado por un cero y no tengamos que contar el tamaño del mismo.
[pic 2]
[pic 3]
- La interrupción 16 h, sub-función 00h, obtiene la tecla presionada en el teclado y guarda en AL el carácter ascii correspondiente a la tecla. En AH se debe cargar la sub-función. A continuación se muestra un programa que muestra en pantalla las teclas presionadas en el teclado:
- Org 100h
- start:
- mov ah,00h ; cargamos la sub-función 00h para chequear tecla presionada
- int 16h ; llamamos a la interrupción 16 h para guardar la tecla en al.
- mov ah,0eh ; cargamos la sub-función 0Eh para mostrar el carácter en pantalla
- int 10h ; llamamos a la interrupción 10 h para mostrar el carácter en ; pantalla
- jmp start
5. Modifique el programa anterior para que muestre en la pantalla lo que Ud. presiona en el teclado, pero el programa deberá detenerse si se presiona la tecla ESC o la tecla DEL.
[pic 4]
...