Descarga la aplicación para disfrutar aún más
Vista previa del material en texto
Práctica 3 Objetivo: Desarrollar programas por medio de prácticas en lenguaje ensamblador, los cuales ejemplifiquen las diferentes instrucciones y funciones básicas, así como la forma de estructurarla Ejercicio 1 Diseña un programa en el emulador EMU8086 que te permita verificar si dos cadenas son iguales Lo primero que haremos es definir los básicos de cada programa como es el .model, .stack, en el .data vamos a definir nuestros mensajes que serán los mensajes que se desplegaran una vez que el programa ya este ejecutado Después en la sección de código donde el programa imprimirá las cadenas. Pasamos a la parte del bloque de inicio, donde la variable “n” se moverá al segmento “si” el cual almacenara las cadenas. En donde se compara letra por letra las cadenas y si uno no coincide esta manda directamente a fin y termina el programa, en la parte de jne saltara si la cadena 1 es diferente de la segunda cadena y desplegara el mensaje de que son diferentes. Lo mismo ocurre con las cadenas iguales pero este se compara con “si” y si llega hasta el $, en esta parte se utiliza el salto jc para esto se despliega el mensaje de fin2, y se utiliza el loop que este va a ciclar el programa hasta terminar las comparaciones que se realicen. -Comparación de cadenas diferentes. -Comparación de cadenas iguales. -Captura de los registros de salida y banderas del programa. Cadenas iguales. -Captura de los registros de salida y banderas del programa. Cadenas diferentes. Ejercicio 2 Diseña un programa en el emulador EMU8086 en el cual realices la comparación de 2 números que escribas mediante teclado (2 dígitos) y utilices los saltos condicionales. Lo primero que tenemos que hacer es lo básico, definir el programa como lo es el .model y .stack. El .data vamos a definir las variables que vamos a utilizar para este programa, en el cual vamos a utilizar unidades y decenas, además una variable donde se almacenara el numero completo y los mensajes que se desplegaran. Después en el bloque de código el programa imprimirá los mensajes que nosotros hemos definido en el bloque de data. A continuación se creara un espacio para las decenas donde le indicaremos al progema que ahí se va a guardar las decenas del numero que vamos a introducir. Al programa le indicamos que el numero de las decenas que se encuentra en “al” este se multiplique con lo que hay en “bl” y después añade el numero que se inserto en las unidades creando el numero completo, que se almacena en la variable “numero1”,lo mismo se hace con la variable “numero2”. Una vez almacenados, se le indica al programa que debe compararlos utilizando cmp. Después de esto le indicamos al programa que este debe verificar que cual de los numeros es mayor o si son iguales, utilizando jc, jz y jnz. Dependiendo de la condición el programa terminara. Captura cuando el primer número es mayor y sus banderas. Captura cuando el segundo número es mayor y sus banderas. Captura cuando los números son iguales y sus banderas. Ejercicio 3 Diseña un programa en el emulador EMU8086 que cuente del 0 al 9 en forma ascendente o descendente muestre en pantalla el conteo solicitado, utilizando ciclos Como inicio debemos poner lo que es el .model, .stack , y ahora en el punto data pondremos nuestras variables, y en nuestro caso usamos 9 contadores y 9 mensajes para hacer todos los ciclos correspondientes. En la parte del código hacemos lo normal de imprimir el mensaje e iniciamos nuestros ciclos, cada uno con su contador para que este sepa cuando va a tener que hacer el salto una vez que el contador haya terminado. Una vez que llega al ciclo9 este hace el ultimo salto para que el programa termine. Y ejecuta lo siguiente Ejercicio 4 Diseña un programa en el emulador EMU8086 el cual tiene que mostrar 2 mensajes e imprimir cada mensaje (n) veces, utilizando saltos incondicionales. Como hemos visto lo primero que se debe de poner en un programa es lo básico que es el .model y .stack, y el .data pondremos nuestras variables, en este caso son dos contadores y dos mensajes predefinidos para mandarse a imprimir. En el bloque de .code ,donde se mandara a imprimir los mensajes, y en eso iniciamos nuestros ciclos ,para que el mensaje se imprima el numero de veces que nosotros le indiquemos en nuestro caso son 4 veces cada mensajes y como podemos observar en el código inicia con el contador y después viene un salto ,pero este es ignorado hasta que el el contador llegue a su fin y después salta al “ciclo1” que es donde se imprimirá nuestro segundo mensaje, una vez que haya acabado de imprimirse el segundo mensaje. Una vez acabado el “ciclo1” este dará un salto a salir, por ende, el programa terminará. Captura de el programa ejecutando los dos mensajes uno después de que haya terminado el primero, siendo impreso 4 veces cada uno y sus banderas. Captura del programa ejecutando el primer mensaje 8 veces y el segundo mensaje 3 veces . Ejercicio 5 Diseña un programa en el emulador EMU8086 que realice las operaciones de suma, resta, multiplicación y división 1. Lo primerop que debemos hacer es definir los elementos básicos del programa como el modelo, la pila y el espacio de los datos. 2. Después vamos a crear las variables en donde se guardarán los números que escribiremos y ahí se guardaran para poder hacer las operaciones aritmeticas. 3. Se escribirán los mensajes que se imprimirán en pantalla tanto al inicio como al final del programa. 4.En la parte del .code se puso lo que son los comandos necesarios para cada operación aritmética que en la mayoría de los casos para todos fue mov, dl, bh para juntar un número con otro y después el comando add para la suma, el comando add igualmente para la resta, para la multiplicación fue el comando mul y para la división fue el comando div. 5. Por último ponemos el comando .exit y end para salir y terminar el programa. Y obtenemos como ejecución lo siguiente, en el cual ingresamos los números 8 y 2 y nos da sus respectivas operaciones aritméticas. Conclusiones. Conclusión Mauricio Axel Lopez Anselmo. Una vez concluido con todos los ejercicios, pude comprender los conceptos de una mejor manera que hasta el momento habíamos visto en clase, con estos ejercicios pude poner en práctica estos conocimientos adquiridos acerca de los saltos, los ciclos, las comparaciones y las capturas de cadenas y como todos estos conceptos pueden interactuar unos con otros para hacer funcionar una gran variedad de programas y que estos pueden ser reconocidos por el lenguaje ensamblador.
Compartir