Laboratorio 1 - MIPS (Carlos Espinosa)

Descargar como docx, pdf o txt
Descargar como docx, pdf o txt
Está en la página 1de 2

Arquitectura del Computador

Primera práctica en Ensamblador MIPS

La práctica consiste en elaborar un programa en ensamblador que evalúe cadenas


palíndromas. Los palíndromos son aquellas palabras, frases o números que se pueden
leer igual del derecho que del revés (en el caso de los números también se les llama
capicúas). Un par de ejemplos bien conocidos son: “Dábale arroz a la zorra el abad” ó “La
ruta natural”.

El programa de partida examinará sistemáticamente la cadena mirando y comparando los


caracteres a ambos extremos, y avanzando hacia el centro en ambos lados a cada paso.
Una vez que se comienza a ejecutar el programa, analizar la ejecución paso a paso del
programa tratando de comprender cada uno de sus detalles:
Cambios en los registros de la CPU, correspondencia de los saltos y condiciones con las
estructuras de control y bucles típicos, flujo de ejecución del programa.

Ejercicios de la primera parte de la memoria:

1. Comprobar dónde se guarda la cadena de texto en el resultado ensamblado.


Explicar por qué.
2. Tras las instrucciones de salto suele aparecer una instrucción NOP ¿a qué se
debe?
 Las instrucciones NOP son Operaciones Cero y no provocan ninguna reacción en su
elaboración en la CPU. El editor AWL reconoce las operaciones cero NOP 0 y NOP 1.
Estas operaciones Cero se indican en forma de instrucciones, sin tener repercusiones en el
programa. Por ejemplo, en una marca de salto siempre tiene que haber una instrucción. Si
no se desea ejecutar nada en la marca de salto del programa, entonces se utiliza la
instrucción "NOP 0". Pero tenga en cuenta que las operaciones cero ocupan una memoria
de 2 Bytes y necesitan de un tiempo de ejecución.

3. Que son las pseudoinstrucciones en mips, cita al menos 3 pseudoinstrucciones y


su correspondiente código ensamblador real.
 El lenguaje ensamblador MIPS incluye 12 instrucciones básicas condicionales o de toma
de decisión, sin embargo también hay instrucciones condicionales extendidas
(pseudoinstrucciones), muchas de estas instrucciones tienen distintos modos de
direccionamiento, que permiten utilizar operandos de 8, 16 y 32 bits.
Branch if Equal
beq $t1, $t2, etiqueta

Donde $t1 y $t2 son los registros a comparar y "etiqueta" es a donde se desea saltar (Recordar
que los registros de $t0-$t7 se utilizan para almacenar valores temporales)
Esta instrucción compara los valores de dos registros ($t1 y $t2), y si resultan ser iguales el flujo
del programa salta a la instrucción que corresponda a la etiqueta colocada. De no ser iguales se
ejecuta la siguiente instrucción en el código.

Branch if not Equal


bne $t1, $t2, etiqueta
Donde $t1 y $t2 son los registros a comparar y "etiqueta" es a donde se desea saltar
En este caso se realiza la comparación y si los valores en ambos registros no resultan iguales el
programa salta a la instrucción que corresponde a la etiqueta. Si resultan iguales se ejecutara la
siguiente instrucción.

Branch if greater than or equal to zero


bgez $t1, etiqueta

Si el contenido de $t1 es mayor o igual a cero, el flujo del programa salta a la instrucción
correspondiente a la etiqueta colocada

Modifique su programa para que utilice al menos dos o tres funciones. Sugerencias

1. Una función “main” desde la que se pasa la cadena que deseamos comprobar
2. Una función que realiza dicha tarea y que a su vez llama a distintas subrutinasque:
a. Calculan la longitud de la cadena.
b. Verifican que dos caracteres sean iguales o no.
c. Imprimen el resultado de la operación.

También podría gustarte

pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy