Ingeniería en Sistemas Computacionales
Lenguajes de interfaz
Profesor: José Felipe Escobedo Magallán
Practica 5:
Intel 8086
Integrantes de Equipo:
Carlos David Cerda Díaz
Fecha de Realización: 24/09/2024
PRÁCTICA 5 LENGUAJES DE INTERFAZ
Objetivo: Utilizar el servicio de captura de teclado y de desplegado de
información por monitor.
Herramienta de software: EMU8086
Desarrollo:
Añada el código que haya escrito en la práctica, junto con una captura de
pantalla de la visualización de la información del emulador.
1.- Escribir el siguiente código en el EMU8086 (puede omitir lo que está
comentado). Emular el programa y abrir la memoria RAM en la dirección
0720:0000. Correr el programa paso por paso y comprobar que al ejecutar la
línea 08, el registro DS cambie a 0720. De no ser así, cambie la dirección de la
ventana de la RAM a la dirección de DS.
2.- Ejecutar paso a paso todo el código, teniendo en cuenta que, para terminar
de escribir el número de 3 dígitos, es necesario presionar la tecla “enter”.
Observar el cambio en la memoria y tomar capturas de pantalla para explicar el
cambio. Describa el funcionamiento de cada línea del programa.
En este momento con el servicio 0AH en AH espera a que se haga un input,
que en este caso es escribir un número de 3 cifras, con Mov num1[0],4 es para
validar que el número no tenga más de 4 cifras.
Al dar enter se ingresa el dato por teclado, y se deja de ver el cursor para
escribir.
En memoria se muestra el numero 31,32 y33, que si vamos al código ascci,
son los códigos asignados al numero 1,2 y 3 respectivamente.
3.- Cambie la línea 14 del programa por la instrucción MOV num1[0], 3.
Ejecutar el programa línea por línea e intente escribir con teclado un número de
3 dígitos.
Al cambiar el 3 por el 4 solo deja ingresar 2 dígitos.
4.- Para la captura de teclado, se ocupa una variable en forma de vector, en
donde la localidad [0] indica el número de localidades para los caracteres que
se esperan obtener del teclado más la localidad [1], la localidad [1] se indica el
número de caracteres que se teclearon realmente, y de las localidades [2] en
adelante se guardan los caracteres tecleados. Escribir otro número de 2 dígitos
y revisar las localidades de la RAM. Tomar capturas de pantalla.
Efectivamente, me muestra el número de caracteres que se ingresaron, y el
código ascci del 2 y del 1
5.- Cambiar la línea 5 como se indica en la siguiente imagen. Emular el
programa y ejecutar línea por línea, visualizando en la RAM los cambios en la
memoria. Explicar los cambios, tomando capturas de pantalla.
La instrucción num1 db 10 dup ("x") realiza lo siguiente:
Reserva Espacio en Memoria: Reserva espacio para 10 bytes consecutivos en
la sección de datos del programa.
Inicializa los Bytes: Cada uno de estos 10 bytes se inicializa con el valor
correspondiente al carácter "x" en la tabla ASCII.
El carácter "x" en ASCII tiene un valor decimal de 120 o hexadecimal 0x78.
Por lo tanto, después de esta instrucción, num1 contendrá una secuencia de 10
bytes, cada uno con el valor 0x78.
6.- Modificar el programa para teclear el nombre y número de control de uno de
los integrantes del equipo, como se muestra en la siguiente imagen. La cadena
de caracteres de la primera línea debe ser igual, y el tamaño de la variable
debe contener exactamente el número de caracteres del nombre y número de
control.
Las conclusiones son individuales, máximo 2 integrantes por equipo. La
extensión de las conclusiones debe ser por lo menos de media cuartilla, de
lo contrario se bajarán puntos.
Conclusiones
Carlos David Cerda Díaz:
La práctica abordada se centra en el uso del emulador EMU8086 para
manipular el procesador Intel 8086, específicamente para capturar datos
por teclado y desplegarlos en pantalla. El objetivo principal fue entender
y aplicar servicios básicos de entrada y salida, observar el
comportamiento de registros y memoria en tiempo real, y manejar
códigos ASCII. A través de diversos ejercicios, escribí y emulé un
programa que capturara un número de tres cifras ingresado por teclado,
y verificar cómo cada cambio en el código impactaba la memoria y los
registros.
Uno de los puntos destacados fue la manipulación de las localidades de
memoria para almacenar los caracteres tecleados. Mediante la
instrucción num1 db 10 dup ("x"), se reserva y inicializa espacio en
memoria con el carácter "x", lo que permitió comprender la inicialización
de variables en el entorno de bajo nivel del 8086. También se pidió
modificar el código para ingresar datos personales como nombre y
número de control, lo cual exigió precisión en el tamaño de las variables
y un correcto manejo de memoria.
En conclusión, esta práctica me permitió adentrarme en el
funcionamiento de la memoria y el procesamiento de datos en
ensamblador, así como el manejo de servicios para captura de datos por
teclado, lo que me preparó para afrontar retos más complicados en
lenguaje ensamblador.