Está en la página 1de 6

UPTC. Gómez, Avilés, Ramirez MICROPROCESADORES.

USO DEL SET DE INSTRUCCIONES INTEL


X86 EN EL EMULADOR EMU8086
Gómez Santiago, Avilés Alejandro, Ramirez Gutiérrez Daniela Alexandra
{Gómez Santiago, Alejandro. Avilés, daniela. ramirez01 }@uptc.edu.co
Universidad Pedagógica y Tecnológica de Colombia.
29/Junio/2020
continuación, se desarrollarán cuatro ejercicios empleando
Resumen: En el presente trabajo muestra el desarrollo de los grupos de instrucciones de Intelx86 empleados en el
programas en lenguaje ensamblador aplicando las entorno de emulación Emu8086.
instrucciones lógicas y aritméticas para Intel x86, sobre el
III. DESARROLLO DE LA PRACTICA
emulador Emu8086 en modo real. Los programas a diseñar
son: producto punto en dos vectores, sumatorias y EJERCICIOS PROPUESTOS
Fibonacci.
A. Producto punto
entre dos vectores de 5 elementos cada uno, que debe
Palabras claves: Emu8086, Intel x86, set de ingresar el usuario mediante el teclado. Compilación y
instrucciones. emulación de programas.
I. OBJETIVOS El producto punto es una operación algebraica que toma dos
secuencias de números de igual longitud y retorna un único
número a continuación un ejemplo del producto punto.
 Identificar y familiarizar con el entorno emulador EJEMPLO:
Emu8086. V 1=1,1,1,1,1
 Conocer los conceptos básicos
relacionados instrucciones lógicas y aritméticas de V 2=1,1,1,1,1
la familia Intelx86. Producto punto=1*1+1*1+1*1+1*1+1*1=5
 Desarrollar programas en lenguaje ensamblador
usando Emu8086 Para el desarrollo del ejercicio anterior se tomaron dos
vectores que son los responsables en guardar el valor de
II. INTRODUCCIÓN entrada por teclado y así el ciclo se repite hasta que se llene
La familia Intelx86 son microprocesadores de 16 bits el vector en cinco posiciones. El usuario debe digitar Enter
diseñados por la empresa Intel este microprocesador en cada posición a ingresar. A continuación, en la figura Nº1
introdujo la segmentación lo cual representa un bloque de se demuestra el proceso ya mencionado con el vector 1
memoria que inicia en dirección fija, cada segmento tiene llamado VAR1 en Emu8086.
una longitud de 64KB. El cual provee 1MB de memoria y
cuatro registros de segmentos de código:
 CS Registro de segmento de código
 DS Registro de segmento de datos
 SS Registro de segmento de pila
 ES Registro de segmento extra.
Los procesadores Intelx86 también tiene un set de
instrucciones amplio el cuales son capaces de realizar
operaciones lógicas y aritméticas el grupo de instrucciones
de Intel 8086 son cinco grupos:
 Transferencia de datos.
 Lógicas y aritméticas.
 manipulación de bits.
 Transferencia de cadenas de datos.
 El control de programas.
Para la solución de los siguientes ejercicios es indispensable
conocer y manejar estos grupos de instrucciones ya que en
el entorno emulador Emu8086 tiene la opción de observar la
función de cada una de sus funciones e interrupciones de los
grupos de instrucciones y el movimiento de registros. A

Ing. Oscar Sierra. Microprocesadores


UPTC. Gómez, Avilés, Ramirez MICROPROCESADORES.

Figura N°1. Vecto1 y asignación de cada posición entrada.

A continuación, se multiplica por 1000,100,10


respectivamente con la posición del número en unidades,
decenas y centenas al sumar estos productos se tendrá el
valor ingresado por teclado.

Figura N°3. Multiplicación de vectores.


El vector nuevo es multiplicado con 1000,100,10 para
separar unidades decenas y centenas y estas serán sumadas
para mostrar en pantalla el resultado final de la
multiplicación.

Figura N°2. Multiplicación de Unidades decenas y centenas


para determinar el valor ingresado por teclado.

Capturado los dos vectores resultantes se inicia el ciclo de


multiplicación donde se va a multiplicar respecto a la
posición del apuntador y el resultado es guardado en vector
RESULT hasta llegar a 5 el puntero y se reiniciara el
puntero para cargar el resultado en PRSUMA.

Figura N°4.Imprimir en pantalla el resultado.

Realizando comprobación del código anterior se asigna al


primer vector cinco posiciones de valor uno ingresados por
teclado e igual mente para el vector dos cinco posiciones de
valor uno, el programa nos arroja el siguiente resultado en la
Figura Nº5 comprobando que el código esta desarrollando lo
requerido en el enunciado.

Ing. Oscar Sierra. Microprocesadores


UPTC. Gómez, Avilés, Ramirez MICROPROCESADORES.

Cuando ENEC y ENE son iguales se procede a determinar


si es par o impar realizando comparaciones de registros AH
con cero ya que en AH se guarda el valor dividido.

Figura N°5.Resultado en pantalla.

En Anexos1 se encuentra el diagrama de flujo establecido


para el desarrollo del ejercicio.

B. Calcule el valor al
que converge la siguiente sumatoria:

35000(−1)n+1
x=∑
n=1 2n
Apoyándose de la calculadora se determina que la sumatoria
converge en el número 15 ya que este no genera valores
decimales y se puede manejar valores enteros de la
sumatoria. Ya estableciendo el valor anterior se procede a
generar un bucle que va contar 15 veces y va hacer
cargado en CX, igualmente se le asigna una variable a
35000 denominada NUM y al valor 1 en la variable ENE Figura N°8.Ciclo par e impar.
como se observa en la Figura Nº6.
Si AH es igual a 0 se determina que es par y salta al ciclo
par en este caso se restara NUM con la variable RESUL,
cuando AH es diferente de 0 se determina que es impar y
salta al ciclo impar donde se sumara la variable NUM con la
variable RESULT. Y se restablecerá el ciclo principal
BUCLE hasta que CX llegue a cero.

Cx es cero se procede a imprimir el resultado el cual es


multiplicado por 1000,100,10 para separalo en unidades,
Figura N°6.Asignacion de Valores. decenas y centenas. Después de esto se suman y se imprime
el valor en pantalla.
Para la división se utilizará el shifter ya que este imita la
división entre potencias de a dos, se realiza Shifter a la
variable NUM hacia a la derecha y se va incrementando el
apuntador denominado ENEC, el cual es encargado de
controlar los Shifter que se realizan comparando ENEC y
ENE.

Figura N°7.Division entre dos.

Ing. Oscar Sierra. Microprocesadores


UPTC. Gómez, Avilés, Ramirez MICROPROCESADORES.

Figura N°9.Separar Unidades Decenas y Centenas.

Figura N°10.Resultado de la sumatoria en pantalla.

En Anexos2 se encuentra el diagrama de flujo establecido


para el desarrollo del ejercicio.

C. Genere dos vectores


de 5 elementos para las variables enteras de tipo
palabra x y w. Realice la captura de 5 datos de tamaño
palabra y almacénelos en las posiciones de los vectores
x y w. A continuación, realice el cálculo de la
sumatoria:

5
n=∑ w i x i +b
i=1
Figura N°11.Captura de valores ingresados por el vector 1.

Para el desarrollo del ejercicio se tomo como referencia el Cada número será asignado a cada posición del vector
ejercicio1 la multiplicación de dos vectores con cinco cuando el usuario digite Enter se ira ALM donde se
posiciones respectivamente donde la etiqueta V1 y V2 van a multiplicará por 1000,100 y 10 y así establecer unidades,
guardar respectivamente cinco posiciones de los valores decenas y centenas, sumando los productos para ser
ingresados por teclado. A continuación, en la figura 11 se guardado en el vector denominado VECT1.
observa el código referente a la captura de datos del vector
1.

Ing. Oscar Sierra. Microprocesadores


UPTC. Gómez, Avilés, Ramirez MICROPROCESADORES.

A Continuación, se procede a separar el vector en unidades,


decenas y centenas, multiplicando entre 1000,100 y 10, con
el producto de estos se suman y se agrega el signo “+” y “b”
y así con La función 30h y la interrupción 21h se imprime
en pantalla el Resultado de la sumatoria.

Figura N°12.Separar Unidades Decenas y Centenas


guardadas en el vector1.

El apuntador denominado PUNT va determinar la posición


del vector y cuando este llegue a cinco, demostrara que el
vector esta completo. El procedimiento anterior también se
realiza con el vector 2 denominado V2.

El PUNT llega a cinco se procede a multiplicar los dos


vectores determinando la posición del apuntador y así
multiplicar posición a posición, cuando el puntero llegue a 5
se suman los productos de cada posición y enviándolo al
vector denominado RESULTADO. Figura N°14.Separar Unidades Decenas y Centenas.

Figura N°15. Resultado de la sumatoria en pantalla.

En Anexos3 se encuentra el diagrama de flujo establecido


para el desarrollo del ejercicio.
D. Calcule el valor de
los primeros 20 términos de la sucesión de Fibonacci,
esta se muestra a continuación:
0,1,1,2,3,5,8,13,21,34,55,89,144,233,377,610 ....
Para el desarrollo de la serie Fibonacci se carga el valor 19
Figura N°13.Multiplicacion y suma de los productos. en Cx ya que este asignara 20 espacios para los términos de
la serie Fibonacci, luego de ello se cargarán los números

Ing. Oscar Sierra. Microprocesadores


UPTC. Gómez, Avilés, Ramirez MICROPROCESADORES.

semilla, estos números son los que generan el siguiente En Anexos4 se encuentra el diagrama de flujo establecido
número a sumar. para el desarrollo del ejercicio.
El puntero iniciara en la tercera posición ya que los números
semillas ocupan las dos primeras posiciones del vector IV. CONCLUSIONES
RESPUESTA.

 El entorno emulador Emu8086 es amigable con el


programador ya que en la opción Help se encuentra
todas las funciones e interrupciones que se pueden
realizar, también incluye una ventana donde se
puede visualizar los movimientos entre registro y
pila del procesador.
Figura N°16. Números semilla y asignación de espacios en  Las instrucciones lógicas y aritméticas de la familia
el vector. Intelx86 son un gran apoyo para desarrollar
programas más complejos como los que se
Posterior se sumarán el NUM1 y NUM2, el resultado de la observaron en el informe ya que estas instrucciones
suma se guardará en una posición indicada por el apuntador ayudan a economizar código respecto al realizarlas
en RESPUESTA y se incrementará el apuntador. Luego de en ensamblador puro.
ello el valor de NUM2 se copia en la variable NUM1 y el  Los ejercicios desarrollados en entorno Emu8086
resultado de la suma también se copia en la variable NUM2, ayudan a conceptualizar y comprender la estructura
este ciclo se repetirá hasta que CX llegue a 0 del microprocesador intelx8086 y realizar
diferentes operaciones las cuales su resultado
puede ser visualizado mediante una pantalla así
logrando ser amigable con el usuario.
V. REFERENCIAS

[1] Barry B. Bray, the Intel Microprocessors, Fourth


Edition,
[2] Prentice Hall, 2009.
[3] [2] Emu8086 Documentation HELP.
Figura N°17.Serie Fibonacci. [4] [3] Carl Hamacher, Zvonko Vranesic, Safwat Zaky,
Cuando Cx llegue a 0 se procede a imprimir el valor, se Naraig
define el cursor para imprimir el vector RESPUESTA desde [5] Manjikian, Computer Organization and Embedded
la posición 0 y se separa por unidades decenas y centenas Systems,
[6] McGraw-Hill, 2011.
utilizando la multiplicación de 1000,100,10 y así con la
[7] [4] Sivarama P. Dandamudi, Introduction to
función 30h de la interrupción 21h se imprimen los valores Assembly Language
en pantalla de cada posición del vector Respuesta. [8] Programming For Pentium and RISC Processors,
Springer, 2005.
[9] [5] Andrew S. Tanenbaum - Structured Computer
Organization,
[10] Pearson, 2006.
[11] [6] William Stallings, Computer Organization and
Architecture -
[12] Designing for Performance, Prentice Hall, 2010.
[13] [7] Kip R. Irvine, Lenguaje ensamblador para
computadoras basadas en Intel, Prentice Hall 2008

Figura N°18.resultado de la Serie Fibonacci en pantalla.

Ing. Oscar Sierra. Microprocesadores

También podría gustarte