UNIVERSIDAD PEDAGÓGICA Y TECNOLÓGICA DE COLOMBIA
SEDE SECCIONAL SOGAMOSO
ESCUELA DE INGENIERÍAELECTRÓNICA
LABORATORIO DE MICROPROCESADORES
PRACTICA N°2
MODO GRAFICO EN LA ARQUITECTURA X86.
Alarcón Juan 201111029, Camilo afanador 201112914
Elkin rivera 201310194
RESUMEN: En el presente informe se realiza el Identificar las diferencias que implica el
desarrollo de la practica modo grafico en la manejo de la pantalla en modo gráfico y
arquitectura x86 mostrando los resultados modo texto.
obtenidos en cada una de las implementaciones Elaborar programas en lenguaje
requeridas. ensamblador x86 para imprimir imágenes
en la pantalla.
PALABRAS CLAVE: Direccionamiento,
memoria imagen. pixel.
1. INTRODUCCIÓN 3. MATERIALES Y EQUIPOS
En la presente practica se pondrá en uso el manejo Software Emu8086.
de las diferentes maneras de direccionar datos, el Computador personal
modo de direccionamiento indica la forma de
interpretar la información contenida en cada 4. MARCO TEORICO
campo de la instrucción y en base a esta,
establecer la ubicación real del operando. El Intel 8086 es uno de los primeros
microprocesadores de 16 bits diseñados por Intel.
Una de las características del 8086 es la Fue el inicio y los primeros miembros de la
utilización de modos de direccionamiento que arquitectura x86. El trabajo de desarrollo del 8086
permite la interpretación de la información de los comenzó en la primavera de 1976 y fue lanzado
operandos de una instrucción, estos son en el verano de 1978. El microprocesador cuenta
importantes para la maquina porque según la con un bus de datos de 16 bits y por esto es más
cantidad que es capaz de medir se establece su rápido que el 8088, estos dos procesadores
potencia. comparten el mismo conjunto de instrucciones [1].
Los diferentes tipos de direccionamiento permiten
dar versatilidad de programación al usuario,
proporcionando facilidades tales como el manejo
de vectores o matrices multidimensionales. Esta
capacidad es tan importante en una máquina, que
la potencia de un computador se mide por el
conjunto de instrucciones y por los diferentes
tipos de direccionamiento que es capaz de admitir.
2. OBJETIVOS
Identificar el funcionamiento de las
interrupciones por software que permiten
manejar la pantalla en sistemas con
microprocesadores de la familia Intel
x86.
Laboratorio de Microprocesadores 202-1Pá gina 1
UNIVERSIDAD PEDAGÓGICA Y TECNOLÓGICA DE COLOMBIA
SEDE SECCIONAL SOGAMOSO
ESCUELA DE INGENIERÍAELECTRÓNICA
LABORATORIO DE MICROPROCESADORES
Modo directo. El byte o par de bytes que siguen
al código OP de la instrucción dan el
desplazamiento de 8 ó 16 bits, que, sumado al
contenido del registro DS, determina la dirección
efectiva en la que se encuentra el dato a transferir.
Ejemplo: ADD CL, TABLA
Modo directo indexado. El byte o par de bytes
que siguen al código OP representan un
desplazamiento que se suma al contenido de uno
de los registros índice (DI o SI). El contenido de
DS se añade al resultado de la suma, con lo que se
obtiene la dirección del operando. Incrementando
o decrementando los registros índices, se puede
acceder a posiciones de memoria consecutivas.
Ejemplo: ADD CX, [SI+4]
Modo indirecto. La dirección del operando es el
Fig.1 [2]: Diagrama de bloque de los microprocesadores
contenido de uno de los siguientes registros: BP,
Intel 8086.
BX, DI o SI.
1 Bloque de registros de propósito general Ejemplo: ADD CX, [BX]
2 Bloque de registros de segmento y registro IP Por registro base indexado. El desplazamiento que
3 Sumador de direcciones ha de sumarse a un registro segmento se halla
4 Bus de direcciones interno sumando el contenido de un registro índice y un
5 Cola de instrucciones (4 bytes para el 8088 y 6 desplazamiento de 8 ó 16 bits, contenido en la
bytes para el 8086) instrucción, al contenido de un registro base.
6 Unidad de control (muy simplificada) Ejemplo: MOV AX, TABLA[BX][SI]
7 Interfaz del bus Modo relativo a base: El byte o par de bytes que
8 Bus de datos interno siguen al código OP representan un
9 Unidad aritmético lógica (ALU) desplazamiento que se suma al contenido de uno
10, 11, 12 Bus de direcciones, datos de los registros base (BX o BP). El contenido de
y control externos DS se añade al resultado de la suma, con lo que se
obtiene la dirección del operando.
La forma en que se especifica un operando se Ejemplo: MOV AX, [BP]+4 [3]
denomina modo de direccionamiento, es decir, es
un conjunto de reglas que especifican la
localización (posición) de un dato usado durante 5. PROCEDIMIENTO
la ejecución de una instrucción.
Modos de direccionamiento de la memoria de Se presentan los ejercicios propuestos, con el fin
datos. de dar uso a los distintos tipos de modos de
direccionamiento y conocer sus características
Modo inmediato. El operando se proporciona en para luego ser emulados en el software emu8086 y
el byte o bytes que siguen al código de operación Dos_box, además del modo grafico que dispone el
procesador 8086, dichos programas deben utilizar
de la instrucción. los periféricos virtuales disponibles en el
Ejemplo: ADD CX,385Fh emulador de este microprocesador.
Modo de direccionado por registro. Un registro,
definido por la instrucción, contiene el operando. 6. METODOLOGIA
Ejemplo: ADD CX, AX
6.1 PRIMER PUNTO
Laboratorio de Microprocesadores 202-1Pá gina 2
UNIVERSIDAD PEDAGÓGICA Y TECNOLÓGICA DE COLOMBIA
SEDE SECCIONAL SOGAMOSO
ESCUELA DE INGENIERÍAELECTRÓNICA
LABORATORIO DE MICROPROCESADORES
Para el desarrollo de este punto se planteó generar procede a imprimir en el modo gráfico, borrando
banderas para las diferentes variables a presentar, lo que se encuentra en pantalla con la función
X, Y, Tamaño, Color, estas variables deben estar BORRAR_P, Guardando el dato de Y, llamando
dentro de un rango limitado por un MAX y un una función Marco la cual es una MACRO y
MIN (Imagen 1), como Y se debe expresar en solicita 5 Valores.
forma de ecuación Y=X+B se varia el valor de B
para alterar la variable Y, (C1=Color, XTAM=Tamaño en X,
YTAM=Tamaño en Y, Coordenadas X y Y) y
llamando a una función RETARDO (figura 25).
Figura 25. Funciones requeridas para imprimir el
cuadro en el modo gráfico.
La función Marco coloca los valores solicitados
Figura. 23. Variables usadas en el código del primer en sus respectivas ubicaciones, el color en AL, X
punto en CX, Y en DX para dar así la coordenada inicial
y color a imprimir el marco, luego procede a
Para la decisión de si aumentaba o disminuía las imprimir una línea horizontal de izquierda a
variables X, TAM o B se revisa su respectiva derecha (lineah), una línea vertical de arriba a
bandera, luego de aumentar o disminuir se revisa abajo (lineav), línea horizontal de derecha a
si está dentro del límite establecido de máximo y izquierda (lineah2), una línea vertical de abajo a
mínimo haciendo la comparación con estos, si la arriba (lineav2), formando así un marco de
variable se encuentra fuera del rango se cambia el dimensiones XTAM y YTAM (figura 26).
valor de la bandera y regresa a realizar su
respectiva operación, si se encuentra dentro del En la figura 29 de los anexos se puede observa el
rango pasa a la siguiente parte del código (figura diagrama de flujo
24).
Figura 24. Bandera X proceso de Figura 26. Implementación de función Marco como
incrementar/decrementar, comparación de límites y Macro.
cambio de estado de Bandera X.
6.2 ESTRELLA EN EL CENTRO DE LA
Una vez las 3 variables X, Y y TAM se PANTALLA
encuentren dentro de sus Rangos establecidos se
Laboratorio de Microprocesadores 202-1Pá gina 3
UNIVERSIDAD PEDAGÓGICA Y TECNOLÓGICA DE COLOMBIA
SEDE SECCIONAL SOGAMOSO
ESCUELA DE INGENIERÍAELECTRÓNICA
LABORATORIO DE MICROPROCESADORES
Para el desarrollo de este ejercicio se inicia Call mostrar_pantalla: imprime en pantalla cada
estableciendo el modelo de memoria (MODEL fila de la imagen por medio de la interrupción
SMALL) y los segmentos que contendrá nuestra (INT10/AH=0CH).
aplicación (.DATA, CODE, STACK), además se
declaran las diferentes variables para el desarrollo Call SIG_DATO: verifica si ya se imprimió en
del programa, y las interrupciones que se pantalla todas las filas de la imagen, de lo
necesitan para el modo gráfico, y retardo de la contrario permite adquirir dato de la nueva fila.
BIOS.
Call Retardo: retardo de la BIOS para que se
visualice la imagen por cierto tiempo (0.4s), por
medio de la interrupción (INT15h/AH=86h)
Call CLEAN: limpia la pantalla para nueva
visualización de la imagen, para esto se utiliza la
misma interrupción de modo gráfico
(INT10h/AH=0).
Call ini_datos: restablece los valores para que se
imprima en pantalla la imagen nuevamente.
También puede observar el código comentado el
cual describe el paso a paso de la implementación
del código desarrollado.
Los diagramas de flujo se pueden observar en las
figuras 10,11 y 12 de los anexos.
6.3 PIKACHU EN EL CENTRO DE LA
Figura 1. Código implementado para el desarrollo del PANTALLA (36X40 PIXELES)
punto 2 del laboratorio 2.
Para el desarrollo de la impresión en pantalla de la
En la figura 1, se puede observar el código imagen PIKACHU, se adoptó la misma
implementado para el desarrollo del punto 2, metodología utilizada para el punto 2 del
inicialmente se direcciona el segmento de datos y laboratorio, las únicas diferencias que se pueden
se configura el modo grafico (INT10/AH=0). observar son:
Luego se asigna a DX la variable fila y a CX la
variable columna, las cuales me permiten el En la comparación que se puede visualizar en la
control en pantalla de las filas y columnas figura 2, (cmp fil_0,28h) , fil_0 se compara con un
respectivamente por medio de la interrupción valor de 40, que son las filas que contiene la
(INT10/AH=0CH), se establece SI en cero para el imagen.
direccionamiento de los datos de la imagen.
El modo de direccionamiento utilizado para
adquirir los datos de la imagen es el modo de
direccionamiento base más índice y así imprimir
la imagen por medio de los siguientes
procedimientos desarrollados:
Call INTERCALANDO COLORES: asigna el
nibble alto y bajo de cada fila a las variables
col_1,2,3 y 4 para su posterior impresión en
pantalla.
Laboratorio de Microprocesadores 202-1Pá gina 4
UNIVERSIDAD PEDAGÓGICA Y TECNOLÓGICA DE COLOMBIA
SEDE SECCIONAL SOGAMOSO
ESCUELA DE INGENIERÍAELECTRÓNICA
LABORATORIO DE MICROPROCESADORES
observar que el inicio del programa es el mismo
en cuanto a impresión de la imagen en pantalla.
Figura 2. Código implementado para el desarrollo del Figura 3. Código implementado para imprimir imagen
punto 3 del laboratorio 2. estrella del punto 4 del laboratorio 2.
En el procedimiento call SIG_DATO la variable Para generar las diferentes trayectorias de la
X ahora se compara con el valor de 9 (cmp X,9), imagen se tuvo en cuenta el contorno donde la
si la variable X es igual a 9, indica que ya se imagen se desplazará realizando trayectorias
imprimió la primera fila de la imagen, por tanto, diagonales aleatorias, en la figura 4 se puede
se incrementa DX para imprimir en pantalla la observar el contorno definido.
nueva fila de la imagen, para mayor comprensión
remítase a la figura xx de los anexos.
También puede observar el código comentado el
cual describe el paso a paso de la implementación
del código desarrollado.
El diagrama de flujo se puede observar en la
figura 14 de los anexos.
6.4 IMAGEN PIKACHU Y ESTRELLA
CON DIAGONALES INDEFINIDAS
ALEATORIAS EN LA PANTALLA.
Figura 4. Contorno definido para las trayectorias
6.4.1 IMAGEN ESTRELLA CON diagonales aleatorias de la imagen estrella del punto 4
del laboratorio 2.
DIAGONALES INDEFINIDAS
ALEATORIAS EN LA PANTALLA.
Para generar las trayectorias diagonales en el
contorno establecido de la figura 4 se dispone tres
Para el desarrollo del ejercicio propuesto se
variables de control (p_dia_inf_d, p_dia_izq_s ,
dispuso de la misma metodología de los puntos
p_dia_izq), las cuales me permiten controlar el
anteriores desarrollados (imagen en pantalla de la
recorrido de las diagonales.
estrella y pikachu). En la figura 3 se puede
Laboratorio de Microprocesadores 202-1Pá gina 5
UNIVERSIDAD PEDAGÓGICA Y TECNOLÓGICA DE COLOMBIA
SEDE SECCIONAL SOGAMOSO
ESCUELA DE INGENIERÍAELECTRÓNICA
LABORATORIO DE MICROPROCESADORES
En la figura 5 se puede observar el código de la
primera trayectoria diagonal establecida luego de
imprimirse en pantalla la imagen de la estrella,
donde se establece los procedimientos de retardo
de la BIOS y limpiar pantalla.
Figura 6. Código para trayectoria 2 diagonal de la
imagen estrella del punto 4 del laboratorio 2.
Si alguna de las dos comparaciones mencionadas
anteriormente se cumple, columna menor a igual a
4 y ver_fila mayor a igual a ciento sesenta, salta a
la diag_inf_izq, como se observa en la figura 6,
donde se incrementa la variable de control
p_dia_izq para que la nueva diagonal se mantenga
hasta que columna sea mayor o igual a doscientos
Figura 5. Código para trayectoria 1 diagonal de la noventa y seis y fila sea menor o igual a dos.
imagen estrella del punto 4 del laboratorio 2.
Esto se cumple para las otras dos trayectorias
Inicialmente se compara si alguna de las variables diagonales que se implementaron en el código,
de control mencionadas anteriormente es mayor o dependiendo si se incrementa o decrementa fila u
igual a 1, si no es así, le resta al valor de columna columna, manteniendo siempre la imagen dentro
actual cuatro y se pregunta si el resultado de esta del contorno seleccionado.
es menor o igual a cuatro, si el resultado de la
resta es mayor a cuatro, se suma a la variable fila
actual dos, y se compara la variable ver_fila, si es
mayor o igual a ciento sesenta la cual va obtener
la última coordenada de fila de la imagen a
imprimir
Si ver_fila no es mayor a ciento sesenta carga los
nuevos valores de columna y fila y salta a la
etiqueta ini_datos para imprimir nuevamente la
imagen.
Figura 7. Código para nueva secuencia de trayectorias
diagonales aleatorias de la imagen estrella.
Al realizarse las trayectorias diagonales
implementadas en el programa, es decir cuando la
variable (p_dia_inf_d,) es mayor o igual a uno, y
Laboratorio de Microprocesadores 202-1Pá gina 6
UNIVERSIDAD PEDAGÓGICA Y TECNOLÓGICA DE COLOMBIA
SEDE SECCIONAL SOGAMOSO
ESCUELA DE INGENIERÍAELECTRÓNICA
LABORATORIO DE MICROPROCESADORES
columna es mayor o igual doscientos noventa y
seis, o fila es menor o igual a dos, salta a la También puede observar el código comentado el
etiqueta vuelve. cual describe el paso a paso de la implementación
del código desarrollado.
la parte de código descrita en la figura siete
permite cambiar el valor de la columna y fila para Los diagramas de flujo se pueden observar en las
una nueva trayectoria de diagonales de la imagen, figuras 20,21 y 22 de los anexos,
decrementando el valor de columna (296) de dos
en dos (new_serie) y aumentado el valor de fila 7. ANALISIS DE RESULTADOS
(3) de dos en dos, con la condiciones que columna
no puede ser menor o igual que cuatro y fila no Al ejecutar los programas en el software emu
puede mayor o igual que ciento sesenta, de lo 8086, cabe resaltar que la ejecución de los
contrario la variable new_serie se establecerá en programas es bastante lenta,
cero y después en uno generando así trayectorias
diagonales aleatorias. Esto se debe a la velocidad de simulación del
software. Por tanto, se recomienda paciencia a la
También puede observar el código comentado el hora de ejecutar el código, o realizar la ejecución
cual describe el paso a paso de la implementación en el DOS_box.
del código desarrollado.
Por funcionalidad los resultados esperados son
satisfactorios ya que se cumple con los requisitos
Los diagramas de flujo se pueden observar en las impuestos en la práctica.
figuras 16,17 y 18 de los anexos,
6.4.2 IMAGEN PIKACHU CON
7.1 Marcos de colores.
DIAGONALES INDEFINIDAS La simulación de la impresión del marco la podemos
ALEATORIAS EN LA PANTALLA. ver en las imágenes 27 y 28 de los anexos donde la
figura 27 se realiza el llamado de la función
Para el desarrollo del ejercicio propuesto se BORRAR_P para observar la trayectoria del cuadro
dispuso de la misma metodología como se realizó cambiando de color, de tamaño y el efecto de rebote en
en el literal 6.4.1 (imagen estrella con diagonales los bordes superior e inferior.
indefinidas aleatorias en la pantalla.), lo único que
cambia es le contorno establecido donde la
7.2 Imagen en el centro de pantalla.
imagen se desplaza realizando trayectorias
diagonales aleatorias, lo anterior se puede
En la figura 9 se puede observar la simulación del
observar en la figura 8.
punto estrella en el centro de la pantalla.
7.3 Imagen almacenada en memoria
En la figura 13 se puede observar la simulación
del punto pikachu en el centro de la pantalla.
7.4 Movimiento de imágenes de los
ejercicios 2 y 3
En las figuras 15 y 19 se puede observar la
simulación de los puntos estrella y pikachu con
diagonales indefinidas aleatorias por la pantalla.
Figura 8. Contorno definido para las trayectorias 8. CONCLUSIONES
diagonales aleatorias de la imagen pikachu del punto 4
del laboratorio 2.
Laboratorio de Microprocesadores 202-1Pá gina 7
UNIVERSIDAD PEDAGÓGICA Y TECNOLÓGICA DE COLOMBIA
SEDE SECCIONAL SOGAMOSO
ESCUELA DE INGENIERÍAELECTRÓNICA
LABORATORIO DE MICROPROCESADORES
El correcto uso de los diferentes métodos
de direccionamiento reduce notablemente
los códigos desarrollados para un
software.
Se debe tener muy presente que la
codificación de los números para los
colores viene en cuatro bits por lo tanto
las imágenes presentadas que vienen en
atributos se toman los colores para luego
realizar un correcto uso de muestreo en
pantalla.
El manejo claro de los métodos de
direccionamiento permite un desarrollo
eficiente del código, sin embargo, al
cometer errores al seleccionar dicha
posición de memoria afectara de manera
notable el funcionamiento del programa
Las interrupciones juegan un papel
fundamental en el microprocesador ya
que como se observó a lo largo del
desarrollo del laboratorio contribuyen al
manejo de distintas herramientas como lo
es la visualización en pantalla.
9. REFERENCIAS
[1]. Carl Hamacher, Zvonko Vranesic, Safwat
Zaky, Naraig Manjikian, Computer
Organization and Embedded Systems,
McGraw-Hill, 2011.
[2].http://kipirvine.com/asm/debug/Debug_Tutori
al.pdf
[3]. Barry B. Bray, The Intel Microprocessors
8086/8088, 80186/80188, 80286, 80386,
80486, Pentium, Pentium Pro processor,
Pentium II, Pentium III, Pentium 4, and Core2
with 64-bit extensions: architecture,
programming, and interfacing. 8th ed.2009.
Laboratorio de Microprocesadores 202-1Pá gina 8
UNIVERSIDAD PEDAGÓGICA Y TECNOLÓGICA DE COLOMBIA
SEDE SECCIONAL SOGAMOSO
ESCUELA DE INGENIERÍAELECTRÓNICA
LABORATORIO DE MICROPROCESADORES
Laboratorio de Microprocesadores 202-1Pá gina 9