You are on page 1of 20

Laboratorio 3

Tutor
Wilson Pérez

Alexander Villamil Poveda


80777388

301302_45

Mayo 6 de 2018.

Arquitectura de Computadores
UNAD Universidad Nacional Abierta y a Distancia.
Bogotá DC.
Introducción

Este documento reúne las evidencias del manejo del programa MSX88,
SE REALIZAN, 3 secciones en las cuales se aumenta el conocimiento del
programa y se inicia en el campo de la programación del lenguaje
ensamblador.
Sección 1:

1. Escribir un programa que realice la suma de dos datos (el 25h y el 30h)
que se encuentran en los registros AX y DX del procesador. El resultado
lo almacenará en AX. Guardar el código con el nombre Programa.asm.
Seguir los pasos descritos en el laboratorio 2 para ensamblar, enlazar y
ejecutar el programa.
Creo el Programa.ASM en un block de notas PROG8

Ensamblamos el archivo anterior para ello en la linea de ordenes teclear


ASM88.
Enlazamos el archivo PROG8 creado desde la linea de ordenes escribimos
LINK88.

Ejecutamos el programa MSX88 para ello escribir en la linea de ordenes


MSX88.

Se carga el programa el apuntador IP queda cargado con el valor 20 00


que es la direccion inicio del programa ORG 2000h, tambien las
direcciones de memoria 2001(25) y 2004(30) almacenan los valores
que van a ser sumados.
Nuevamente el apuntador IP se incrementa a 2002 y se ejecuta cada ciclo
de instrucción el secuenciador traslada el dato BAH al buffer de datos IR
para su decodificacion como instrucción MOV el secuenciador por
micoordenes incrementa al apuntador IP a 2002

La ALU realiza el calculo de la suma y obtiene le resultado el cual se


almacena en AX
Sección 2:

Diseñar dos programas con las siguientes condiciones:

1. Escribir un programa que realice la multiplicación de dos números.


Realizar la ejecución de Ciclo de instrucción a Ciclo de instrucción (F6).
Documentarlo tal como aparece en el anexo 1, escribiendo lo sucedido
por cada ciclo de instrucción hasta su resultado. Mostrando posiciones de
memoria igualmente.
Creo el Programa.ASM en un block de notas PROG9

Ensamblamos el archivo anterior para ello en la linea de ordenes teclear


ASM88.

Enlazamos el archivo PROG9 creado desde la linea de ordenes escribimos


LINK88.
Ejecutamos el programa MSX88 para ello escribir en la linea de ordenes
MSX88.

CARGAMOS EL VALOR DE AX
CARGAMOS EL VALOR DE BX

CARGAMOS EL VALOR DE CX

Se ejecuta nuevamente el decremento de BX y esta vex llega a cero por


lo que la bandera Z se activa
ALU finaliza el calculo y termina el programa.

2. Escribir un programa que realice la división de dos números. Realizar


la ejecución de Ciclo de instrucción a Ciclo de instrucción. Documentarlo
tal como aparece en el anexo 1, escribiendo lo sucedido por cada ciclo de
instrucción hasta su resultado. Mostrando posiciones de memoria
igualmente.

Creo el Programa.ASM en un block de notas PROG10


Ensamblamos el archivo anterior para ello en la linea de ordenes teclear
ASM88.

Enlazamos el archivo PROG10 creado desde la linea de ordenes escribimos


LINK88.

Ejecutamos el programa MSX88 para ello escribir en la linea de ordenes


MSX88.
Valores a los registros de AX y BX que son los que se van a dividir.

Se incrementa CX, se realiza la resta AX-BC y el resultado se almacena


en AX, la bander Z se aciva dado el resultado de la operación =0

El programa termina y el resultado de la division nos queda almacenado


en CX=2
Sección 3:

Diseñar un programa en ensamblador para MSX88 donde utilice Etiquetas


y Comparaciones. Ver Anexo 2. Comparaciones_Etiquetas_Ensamblador

El programa diseñado compara el valor de AX con el de BX, si AX es mayor


carga el valor 50H al registro DX y termina y si el mayor es BX carga el
valor 30H al registro CX y termina.
Situacion 1; AX <BX
Creo el Programa.ASM en un block de notas PROG6

Ensamblamos el archivo anterior para ello en la linea de ordenes teclear


ASM88.
Enlazamos el archivo PROG6 creado desde la linea de ordenes escribimos
LINK88.

Ejecutamos el programa Etiqueta MSX88 para ello escribir en la linea de


ordenes MSX88.

Valores cargados en el registro AX y BX.


Se decodifica la instrucción de comparacion

Se activa la bandera S la cual indica que el resultado de la operación es


un numero negativo.

Se codifica la instrucción de salto condicional si el resultado es un numero


negativo JS
Mueve el valor 50H registro DX y el programa Termina

Situacion 2; AX>Bx
Creo el Programa.ASM en un block de notas PROG7

Ensamblamos el archivo anterior para ello en la linea de ordenes teclear


ASM88.
Enlazamos el archivo PROG7 creado desde la linea de ordenes
escribimos LINK88.

Ejecutamos el programa Etiqueta MSX88 para ello escribir en la linea de


ordenes MSX88.

Valores cargados en el registro AX y BX


Se decofica la instrucción de comparacion CMP

Se decodifica la isntruccion de salto condicional si el resultado es un


numero negativo JS.
Al estar desactivada la bandera S el procesador NO salta a la direccion
de la etiqueta MENOR, continua con la ejecucion.

Mueve el valor 30H al registro CX.


Mueve el valor 30h al registro CX y termina el programa
CONCLUSIONES
 Aprendi el manejo del programa MSX88.

 La realizacion de la actividad me ayudo a comprender la forma


correcta de crear un programa basado en el set de instrucciones
con que trabaja el MSX88
BIBLIOGRAFÍA
Nacional, I. P. (19 de 11 de 2017). Obtenido de http://ac-
ipn.blogspot.com.co/p/herramientas-titulo-descarga-simulador.html