Documentos de Académico
Documentos de Profesional
Documentos de Cultura
DE
COMPUTADORAS
Laboratorio 1
Integrantes
Alejandra Richter
Profesora
Celeste Gabriela Gaugliano
Comisión
Miércoles 20:00hs
Laboratorio 1: Assembler básico.
En todos los casos realizar el diagrama de flujo correspondiente a cada programa y luego
codificarlo. Utilizar el simulador MSX88 para visualizar el funcionamiento de cada programa.
Ejercicio 1: Codifique un programa que sume dos números con las siguientes
características:
Ejercicio 2: Codifique un programa que reste dos números. ¿Qué ocurre si el resultado es
menor a 0?
Ejercicio 3: Codifique un programa que sea capaz de multiplicar dos números teniendo en
cuenta el set de instrucciones del MSX88. Para ello:
a) Dividir la memoria entre el espacio para las variables necesarias y el espacio del
código principal del programa.
b) Modifique el código anterior y realice una subrutina para la multiplicación que sea
llamada desde el programa principal.
Ejercicio 4: Codifique un programa que sea capaz de contar la cantidad de letras “a”
presentes en una cadena de caracteres.
Ejercicio 1: Codifique un programa que sume dos números con las siguientes
características:
a) Los dos números a sumar se encuentran en los registros AX y BX.
Se guarda el valor en los dos registros y al ser sumado se guarda en el registro AX.
COMIENZO
CARGAR EN AX 20
CARGAR EN BX 30
SUMAR
20 + 30
INTERRUMPIR
END
b) Uno de los números a sumar se encuentra en un registro, mientras que el otro se
encuentra en memoria.
Uno de los números se encuentra en memoria (variable) y el otro se carga directamente en el registro.
Esa suma se guarda en el registro AX.
CARGAR EN AX 10
SUMAR
10 + 100
INTERRUMPIR
END
c) ¿Cómo realizaría la suma de dos números que se encuentran almacenados en la
memoria?
Si ambos números están en la memoria y se carga en un mismo registro. El nuevo número no se sumaría,
si no que se cargaría en el registro. Así, no logrando concretar la suma
VARIABLE num1
COMIENZO
VARIABLE num2
CARGAR EN AX num1
SUMAR
AX + num2
INTERRUMPIR
END
Caso contrario sería:
En este caso al cargarlo en diferentes registros, se logra hacer la suma correctamente, perder el valor
anterior. La suma se guardaría en AX.
VARIABLE num1
COMIENZO
VARIABLE num2
CARGAR EN AX num1
CARGAR EN BX num2
SUMAR
AX + BX
INTERRUMPIR
END
d) ¿Qué ocurre si el resultado de la suma excede el tamaño del registro en el que se
almacena?
Las sumas que excede el tamaño del registro podría causar comportamientos anómalos en la aplicación,
a la hora de ejecutar el programa.
Ejercicio 2: Codifique un programa que reste dos números. ¿Qué ocurre si el resultado es
menor a 0?
Se guarda las variables en los registros correspondientes y se hace la suma. Guardando el resultado en el
registro AX.
Su diagrama de flujo correspondiente:
VARIABLE num1
COMIENZO
VARIABLE num2
CARGAR EN AX num1
CARGAR EN BX num2
RESTAR
AX - BX
INTERRUMPIR
END
¿Qué ocurre si el resultado es menor a 0?
En este caso al dar el resultado en negativo, el resultado que se guarda en el registro AX, da un numero
que en realidad no sería el que corresponde. En vez de ser negativo da FFF8 (65528).
Como se puede ver a continuación:
Ejercicio 3: Codifique un programa que sea capaz de multiplicar dos números teniendo en
cuenta el set de instrucciones del MSX88. Para ello:
a) Dividir la memoria entre el espacio para las variables necesarias y el espacio del
código principal del programa.
Se generan dos variables. La primera es valor(multiplicando) que es el numero a multiplicar y la segunda
es multiplicador que es cuantas veces se multiplica.
Como bien se demuestra esta separado el programa por 1000h y 2000h.
En este caso se usa Iterar como etiqueta para poder volver a repetir si en CMP no se cumple la condición.
Caso contrario se finalizaría con la etiqueta Fin. Habiendo guardado el valor en el registro CX, para no
pisar el valor que esta en el registro AX.
VARIABLE valor
COMIENZO
VARIABLE multiplicando
CARGAR EN AX valor
CARGAR EN BX multiplicando
NO
BX = 0 CX + AX
SI
BX - 1
END
b) Modifique el código anterior y realice una subrutina para la multiplicación que sea
llamada desde el programa principal.
Ejercicio 4: Codifique un programa que sea capaz de contar la cantidad de letras “a”
presentes en una cadena de caracteres.
Ejercicio resuelto en clase. Se cambio el texto y la letra a buscar está en ASCII: