Lenguaje Ensamblador MIPS: Preguntas Clave
48 Questions
2 Views

Choose a study mode

Play Quiz
Study Flashcards
Spaced Repetition
Chat to Lesson

Podcast

Play an AI-generated podcast conversation about this lesson

Questions and Answers

¿Cuál es la función de la seudo-instrucción 'li'?

  • Carga inmediata una constante en un registro (correct)
  • Suma dos registros
  • Copia un registro a otro
  • Realiza un brinco en el código

¿Qué instrucción de lenguaje ensamblador se utiliza para copiar el contenido de un registro a otro?

  • addi
  • sub
  • move (correct)
  • add

¿Qué representa '000000' en el formato de instrucción del lenguaje máquina?

  • Código de instrucción para operaciones de salto
  • Código de todas las instrucciones R (correct)
  • Código de instrucción para operaciones de carga
  • Número del registro destino

¿Cuál de los siguientes NO es un formato de instrucción en MIPS?

<p>Formato C (C)</p> Signup and view all the answers

¿Qué componente del código máquina 'add $t0, $s1, $s2' corresponde al número del registro $t0?

<p>01001 (C)</p> Signup and view all the answers

En el formato I, ¿qué tipo de operando se incluye?

<p>Número inmediato (D)</p> Signup and view all the answers

¿Qué se entiende por lenguaje de máquina?

<p>Lenguaje binario que entiende el hardware (C)</p> Signup and view all the answers

¿Qué instrucción se traduce como '000000fffffgggggddddd00000100000'?

<p>add (C)</p> Signup and view all the answers

¿Cuál es la instrucción que mueve el valor de LO a un registro?

<p>mflo (B)</p> Signup and view all the answers

¿Qué instrucción se utiliza para cargar una palabra de la memoria a un registro?

<p>lw (A)</p> Signup and view all the answers

¿Cómo se indica el segmento de datos en un programa MIPS?

<p>.data (C)</p> Signup and view all the answers

¿Qué tipo de datos se almacenan en el segmento de datos dinámicos?

<p>Espacio asignado con malloc (D)</p> Signup and view all the answers

¿Cuál es el propósito de la instrucción sw?

<p>Almacenar un valor de registro en memoria (C)</p> Signup and view all the answers

El segmento de texto comienza a partir de qué dirección en un sistema MIPS?

<p>0x40000000 (B)</p> Signup and view all the answers

¿Dónde se almacenan los stack frames en un sistema MIPS?

<p>Segmento de pila (D)</p> Signup and view all the answers

¿Cuál es el tamaño de una palabra (word) en MIPS?

<p>4 bytes (B)</p> Signup and view all the answers

¿Cómo se declara un string en el código MIPS?

<p>mssg:.asciiz 'Hola mundo' (C)</p> Signup and view all the answers

¿Cuál es la función principal de la instrucción syscall en MIPS?

<p>Permitir la entrada y salida de datos. (D)</p> Signup and view all the answers

En el ejemplo dado, ¿qué valor se le asigna a la variable z?

<p>17 (A)</p> Signup and view all the answers

¿Qué instrucción se utiliza para imprimir un string en la consola en MIPS?

<p>li $v0, 4 (D)</p> Signup and view all the answers

¿Cuál es la función de los registros $x0 y $v0 en un syscall?

<p>$x0 siempre contiene cero y $v0 devuelve el valor resultante. (A)</p> Signup and view all the answers

¿Cuál es el primer paso para hacer una llamada al sistema en MIPS?

<p>Cargar el número de llamada en $v0. (D)</p> Signup and view all the answers

¿Qué tipo de instrucciones son las pseudo-instrucciones en MIPS?

<p>Instrucciones que son alternativas a las instrucciones reales. (C)</p> Signup and view all the answers

¿Qué instrucción se utiliza para finalizar un programa en MIPS?

<p>li $v0, 10 (C)</p> Signup and view all the answers

¿Cuál es el resultado de aplicar la operación sll $t2, $s0, 4?

<p>t2 se multiplica por 16. (D)</p> Signup and view all the answers

¿Cuál es la función principal de la operación nor en lógica?

<p>Funciona como un operador not. (D)</p> Signup and view all the answers

¿Qué operación lógica se utiliza para extraer información de un número binario usando una máscara?

<p>and (A)</p> Signup and view all the answers

Al realizar un corrimiento a la derecha con srlv $r0, $r1, $r2, ¿qué resultado se obtiene?

<p>r0 toma el valor de r1 desplazado a la derecha r2 veces. (A)</p> Signup and view all the answers

¿Qué hace la operación andi $r0, $r1, C?

<p>Realiza un and entre $r1 y una constante C. (A)</p> Signup and view all the answers

¿Cómo se utiliza el corrimiento a la izquierda para multiplicar un número?

<p>Desplazando los bits hacia la izquierda. (D)</p> Signup and view all the answers

¿Cuál es la principal característica de los registros en MIPS?

<p>Tienen una capacidad de 4 bytes. (A)</p> Signup and view all the answers

¿Cuál es el resultado de aplicar la máscara 00111100 a la cadena binaria 11100101 con un AND?

<p>00100100 (B)</p> Signup and view all the answers

¿Qué instrucciones se consideran aritméticas en MIPS?

<p>Suma, resta, multiplicación y división. (D)</p> Signup and view all the answers

¿Para qué se utiliza el resultado de un corrimiento a la derecha en operaciones lógicas?

<p>Para dividir un número entre una potencia de dos. (D)</p> Signup and view all the answers

¿Cuál de las siguientes afirmaciones sobre la memoria en MIPS es incorrecta?

<p>La dirección de una palabra es la dirección del byte más bajo. (B)</p> Signup and view all the answers

¿Cuántos registros enteros hay en la arquitectura MIPS?

<p>32 registros. (A)</p> Signup and view all the answers

¿Qué tipo de operaciones realizan las instrucciones de transferencia de datos en MIPS?

<p>Carga de memoria a registro y almacenamiento de registro a memoria. (A)</p> Signup and view all the answers

¿Cuál de las siguientes afirmaciones sobre la configuración de MIPS es correcta?

<p>Utiliza 32 bits para direccionar la memoria. (B)</p> Signup and view all the answers

¿Qué tipo de instrucciones se ocupan para realizar operaciones lógicas en MIPS?

<p>AND, OR y corrimiento (shift). (B)</p> Signup and view all the answers

¿Qué es un registro en el contexto de MIPS?

<p>Una memoria integrada en la CPU con acceso rápido. (D)</p> Signup and view all the answers

¿Qué instrucción carga el valor de la variable g en el registro $s1?

<p>lw $s1, 0($t0) (D)</p> Signup and view all the answers

¿Cómo se declara una variable entera en MIPS?

<p>x: .word -1 (C)</p> Signup and view all the answers

¿Cuál de las siguientes instrucciones actualiza la variable f en memoria?

<p>sw $s0, f (A)</p> Signup and view all the answers

¿Qué tipo de datos se manejan en este curso según el contenido?

<p>Enteros, arreglos y strings (C)</p> Signup and view all the answers

¿Qué instrucción se utiliza para obtener la dirección de la variable x?

<p>la $t0, x (A)</p> Signup and view all the answers

¿Cuál de las siguientes afirmaciones es correcta sobre las instrucciones MIPS?

<p>La arquitectura MIPS es una arquitectura load/store. (C)</p> Signup and view all the answers

¿Qué representación tiene la declaración 'x:.word 17'?

<p>x es un apuntador a 4 bytes que contiene el valor 17. (D)</p> Signup and view all the answers

¿Cuál es el resultado de la instrucción 'add $t0, $s1, $s2'?

<p>Suma el valor de g y h y lo guarda en $t0. (B)</p> Signup and view all the answers

Flashcards

¿Qué es MIPS?

MIPS (Microprocesador sin etapas de tubería entrelazadas) es una familia de microprocesadores RISC desarrollada por MIPS Technologies desde 1981 y por Imagination Technologies desde 2012.

Principio de regularidad en MIPS

Todas las instrucciones en MIPS ocupan 4 bytes (32 bits).

Principio de simplicidad en MIPS

Las instrucciones de MIPS son sencillas. Solo hay 3 formatos de instrucción.

Tipos de instrucciones en MIPS

Las instrucciones MIPS se clasifican en: aritméticas, transferencia de datos, lógicas, brincos condicionales, brincos incondicionales.

Signup and view all the flashcards

¿Qué son los registros?

Un registro es una memoria integrada en la CPU. Tienen poca capacidad (4 bytes en MIPS), pero son de acceso muy rápido.

Signup and view all the flashcards

Tipos de registros en MIPS

MIPS posee 32 registros enteros (para cálculos) y 32 registros float (para números decimales).

Signup and view all the flashcards

¿Qué es la memoria en MIPS?

Se utiliza para guardar variables. MIPS utiliza byte addressing, y la memoria es un arreglo de bytes.

Signup and view all the flashcards

Alineación de memoria en MIPS

Las palabras en MIPS deben comenzar en direcciones múltiplo de 4. La dirección de una palabra es la dirección del byte más alto.

Signup and view all the flashcards

mflo

La instrucción mflo mueve el valor del registro LO a otro registro.

Signup and view all the flashcards

mfhi

La instrucción mfhi copia el valor del registro HI a otro registro.

Signup and view all the flashcards

lw

La instrucción lw carga una palabra (4 bytes) de la memoria a un registro. Se utiliza para copiar datos de la memoria al procesador.

Signup and view all the flashcards

sw

La instrucción sw almacena una palabra (4 bytes) de un registro en la memoria. Se utiliza para copiar datos del procesador a la memoria.

Signup and view all the flashcards

Segmento de texto

El segmento de texto es la parte de la memoria donde se almacena el código del programa.

Signup and view all the flashcards

Segmento de datos

El segmento de datos es la parte de la memoria donde se almacenan los datos del programa.

Signup and view all the flashcards

Segmento de pila

El segmento de pila es la parte de la memoria donde se almacenan los stack frames, que contienen información local de las funciones.

Signup and view all the flashcards

Stack frame

Un stack frame es una estructura que contiene información local de una función, como las variables locales y el retorno de la función.

Signup and view all the flashcards

Directiva .word

Se utiliza para reservar espacio en la memoria para una palabra (4 bytes).

Signup and view all the flashcards

Etiqueta (variable)

Un nombre que se le asigna a una variable en MIPS.

Signup and view all the flashcards

Valor inicial

El valor que se le asigna a una variable al declararla.

Signup and view all the flashcards

Cargar una variable en un registro

Transferir el valor almacenado en una variable a un registro para poder procesarlo.

Signup and view all the flashcards

Instrucciones la y lw

Se utilizan para cargar una variable a un registro.

Signup and view all the flashcards

Guardar un registro en una variable

Transferir el valor almacenado en un registro a una variable en la memoria.

Signup and view all the flashcards

Instrucciones sw

Se utilizan para guardar un registro en una variable.

Signup and view all the flashcards

Seudo-instrucción

Una instrucción que no existe en el lenguaje de máquina, pero se traduce a una o más instrucciones básicas durante el ensamblaje.

Signup and view all the flashcards

li (load immediate)

Una seudo-instrucción que asigna una constante a un registro. Por ejemplo, li $r, 17 asignará el valor 17 al registro $r.

Signup and view all the flashcards

Lenguaje de máquina

El lenguaje que entiende el hardware. Se compone de bits (0 y 1) y representa las instrucciones del programa.

Signup and view all the flashcards

Ensamblador

Un programa que traduce instrucciones del lenguaje ensamblador al lenguaje de máquina.

Signup and view all the flashcards

¿Qué es el formato R?

Un formato de instrucción MIPS donde todos los operandos son registros. Por ejemplo, add $t0, $s1, $s2.

Signup and view all the flashcards

¿Qué es el formato I?

Un formato de instrucción MIPS donde hay un operando inmediato (constante). Por ejemplo, addi $t0, $s1, 10.

Signup and view all the flashcards

¿Qué es el formato J?

Un formato de instrucción MIPS que realiza un brinco (jump). Por ejemplo, j main.

Signup and view all the flashcards

Operaciones lógicas en MIPS

Las operaciones lógicas en MIPS manipulan datos a nivel de bits. Permiten realizar operaciones como corrimientos a la izquierda y derecha, AND, OR y XOR, entre otras.

Signup and view all the flashcards

Corrimiento a la izquierda (sll)

El corrimiento a la izquierda multiplica el operando por 2 elevado al número de posiciones recorridas. Ej: sll $t2, $s0, 4 (t2 = s0 * 2^4)

Signup and view all the flashcards

Corrimiento a la derecha (srl)

El corrimiento a la derecha divide el operando por 2 elevado al número de posiciones recorridas. Ej: srl $r0, $r1, $r2 (r0 = r1 / 2^r2)

Signup and view all the flashcards

AND lógico en MIPS

La operación AND lógico establece un bit en 1 solo si ambos bits correspondientes son 1. Ej: and $r0, $r1, $r2 (r0 = r1 & r2)

Signup and view all the flashcards

OR lógico en MIPS

La operación OR lógico establece un bit en 1 si al menos uno de los dos bits correspondientes es 1. Ej: or $r0, $r1, $r2 (r0 = r1 | r2)

Signup and view all the flashcards

XOR lógico en MIPS

La operación XOR lógico establece un bit en 1 si uno y solo uno de los dos bits correspondientes es 1. Ej: xor $r0, $r1, $r2 (r0 = r1 ^ r2)

Signup and view all the flashcards

NOR lógico en MIPS

La operación NOR lógico es la negación del OR lógico. Ej: nor $r0, $r1, $r2 (r0 = !(r1 | r2))

Signup and view all the flashcards

Extracción de datos en MIPS

Las operaciones lógicas permiten seleccionar bits específicos dentro de un número. Se utilizan máscaras y corrimientos para aislar la información deseada.

Signup and view all the flashcards

String en MIPS

Un string en MIPS se declara con la directiva .asciiz, que indica que es un string terminado en nulo (ascii 0), y se guarda en memoria como una secuencia de caracteres empacados en 4 caracteres por palabra.

Signup and view all the flashcards

Impresión de string en MIPS

Para imprimir un string en MIPS, primero se debe obtener su dirección con la instrucción la, luego se carga el número de llamada al sistema 4 en el registro $v0 y la dirección del string en $a0, finalmente se ejecuta la instrucción syscall.

Signup and view all the flashcards

Llamadas al sistema en MIPS

Las llamadas al sistema en MIPS se utilizan para realizar tareas como leer del teclado, escribir a la consola y manejar archivos del sistema. No hay instrucciones de entrada y salida en la arquitectura de MIPS.

Signup and view all the flashcards

Segmento de datos en MIPS

El segmento de datos en MIPS se define con la directiva .data y contiene las variables del programa y otros datos como strings. Las variables se inicializan con la directiva .word.

Signup and view all the flashcards

Segmento de texto en MIPS

El segmento de texto en MIPS se define con la directiva .text y contiene las instrucciones del programa. Las instrucciones se ejecutan en orden por el procesador.

Signup and view all the flashcards

Seudo-instrucciones en MIPS

Las seudo-instrucciones no son instrucciones reales del ISA, pero son reconocidas por el ensamblador. Se traducen a dos o más instrucciones reales para facilitar la programación.

Signup and view all the flashcards

Instrucción 'lw' en MIPS

La instrucción lw (load word) se utiliza para cargar una palabra de memoria en un registro. Se necesitan dos operandos: el registro destino y la dirección de memoria.

Signup and view all the flashcards

Instrucción 'sw' en MIPS

La instrucción sw (store word) se utiliza para guardar una palabra de un registro en la memoria. Se necesitan dos operandos: el registro fuente y la dirección de memoria.

Signup and view all the flashcards

Study Notes

Lenguaje Ensamblador MIPS

  • MIPS (Microprocesador sin etapas de tubería entrelazadas) es una familia de microprocesadores RISC desarrollada por MIPS Technologies desde 1981 y por Imagination Technologies desde 2012.

Características de MIPS

  • Principio de regularidad: Todas las instrucciones ocupan 4 bytes (32 bits).
  • Principio de simplicidad: Instrucciones sencillas. Solo hay 3 formatos de instrucción.

Usos de MIPS

  • En consolas de videojuegos (Nintendo y Sony).
  • En sistemas embebidos (routers Cisco, dispositivos Windows CE, gateways, entre otros).

Clases de Instrucciones

  • Aritméticas: Suma, resta, multiplicación, división.
  • Transferencia de datos: Carga (load) de memoria a registro, almacena (store) de registro a memoria.
  • Lógicas: AND, OR, desplazamiento (shift).
  • Brincos condicionales.
  • Brincos incondicionales.
  • Hay instrucciones para números reales y enteros.

Operandos

  • Registros.
  • Memoria.

Registros

  • Un registro es una memoria integrada en la CPU.
  • Poseen poca capacidad (4 bytes o 32 bits en MIPS), pero de acceso rápido.
  • Hay 32 registros enteros ($s0-$s7, $t0-$t9, $a0-$a3, $v0-$v1, $zero, $gp, $fp, $sp, $ra, $at).
  • Hay 32 registros flotantes ($f0-$f31).
  • Se utilizan para guardar valores temporales y resultados de operaciones aritméticas.

Memoria

  • Se usa para guardar variables.
  • MIPS usa byte addressing.
  • La memoria es un arreglo de bytes.
  • La dirección de una palabra es la dirección del byte más alto.
  • Las palabras son de 4 bytes (32 bits).
  • Los registros son de 4 bytes (32 bits).
  • La memoria está alineada. Las palabras deben comenzar en direcciones que son múltiplo de 4.
  • MIPS se puede configurar por hardware como big-endian o little-endian.
  • Se usan 32 bits para direccionar la memoria.
  • La memoria tiene:
    • 2³² bytes con direcciones desde 0 hasta 2³² – 1.
    • 2³⁰ palabras con direcciones desde 0 hasta 2³² – 4.

Registros vs Memoria

  • La mayoría de las CPUs modernas mueven las variables de la memoria principal a los registros, operan sobre ellos y regresan el resultado a la memoria.
  • Esto se conoce como arquitectura load/store.
  • MIPS emplea la arquitectura load/store.

Instrucciones Aritméticas

  • add: suma de registros.
  • addu: suma de registros sin signo.
  • addi: suma inmediata.
  • addiu: suma inmediata sin signo.
  • sub, subu: restas.
  • div, divu: divisiones.
  • mult, multu: multiplicaciones.

Instrucciones MIPS Aritméticas

  • La suma y la resta tienen 3 operandos.
  • El orden de los operandos es fija (primero el destino, luego las fuentes).

Instrucciones Aritméticas (Ejemplos)

  • add $r0, $r1, $r2 # $r0 ← $r1 + $r2
  • addi $r0, $r1, C # $r0 ← $r1 + C
  • addu $r0, $r1, $r2# $r0 ← $r1 + $r2
  • addiu $r0, $r1, $r2# $r0 ← $r1 + C

Instrucciones Aritméticas (Overflow)

  • Si al sumar se produce overflow, add y addi lo indican.
  • addu y addiu lo ignoran.

Instrucciones Aritméticas (otras)

  • Las restas sub, subu funcionan de la misma manera.
  • Las divisiones y multiplicaciones tienen dos argumentos.
  • Dejan el resultado en dos registros especiales: LO y HI.
  • Hay instrucciones para copiar datos de LO y HI a los registros normales.

Instrucciones Aritméticas (mult, div)

  • mult $r0, $r1 # $r0 × $r1
  • div $r0, $r1 # $r0 / $r1

Transferencia de datos

  • mflo: mueve el valor de LO a un registro.
  • mfhi: mueve el valor de HI a un registro.
  • lw: mueve (carga) una palabra (4 bytes) de memoria a un registro.
  • sw: mueve (almacena) el valor de un registro (4 bytes) a memoria.

Usos de la memoria

  • Por convención, los sistemas basados en MIPS dividen la memoria en tres segmentos:
    • Segmento de texto (text segment)
    • Segmento de datos (data segment)
    • Segmento de pila (stack segment)
  • El segmento de texto, a partir de la dirección 0x400000, es donde se guarda el código del programa.
  • A su vez, el segmento de datos consta de dos partes:
    • Datos estáticos: Contiene variables de tamaño fijo que se necesitan durante todo el programa.
    • Datos dinámicos: Contiene variables que se crean durante el programa.
  • El segmento de pila (stack segment), a partir de la dirección 0x7FFFFFFC, es donde se guardan los stack frames.

Seudo-instrucciones

  • Son instrucciones que un programa ensamblador reconoce pero que no existen en la definición del ISA.
  • El ensamblador mapea cada seudo-instrucción a dos o más instrucciones reales.
  • Se usan para comodidad de los programadores. Algunos ejemplos: li, move.

Lenguaje Máquina

  • El lenguaje de máquina es un lenguaje binario.
  • El hardware solo entiende bits.
  • El ensamblador traduce cada instrucción de lenguaje ensamblador a lenguaje de máquina.
  • Por ejemplo, la instrucción add $t0, $s1, $s2 se traduce en binario a 000000100011001001001000001000002 → 0232482016.

Formatos de Instrucciones

  • En MIPS, hay tres formatos de instrucción: R, I y J.

Operaciones Lógicas

  • Shift (desplazamiento) a la izquierda (sll, sllv), a la derecha (srl, srlv).
  • AND, ANDI, OR, ORI, XOR, XORI, NOR, NORI.

Instrucciones de Control

  • Brincos condicionales (beq, bne, slt - comparar para brincar).
  • Brincos incondicionales (j, jr, jal).

Ciclo While

  • Traducción mecánica de ciclos while, do-while y for a MIPS.

Arreglos de Enteros

  • Se declaran en el segmento de datos usando la directiva .word.
  • Para acceder a los elementos del arreglo, se utiliza un índice y el offset correspondiente.

Llamadas a Funciones

  • En MIPS, los argumentos se pasan en registros como $a0, $a1, $a2, $a3.
  • Los valores de regreso se devuelven en los registros $v0, $v1.

Stack Frame

  • El llamador tiene la obligación de guardar ciertos registros
  • El stack frame involucra la gestión de memoria para argumentos y la preservacion de registros.
  • El stack frame se guarda en la sección de la pila. Salvar los registros, reservar espacio para el nuevo frame y ajustar el stack pointer.

Studying That Suits You

Use AI to generate personalized quizzes and flashcards to suit your learning preferences.

Quiz Team

Related Documents

MIPS Instruction Set PDF

Description

Pon a prueba tus conocimientos sobre el lenguaje ensamblador MIPS con este cuestionario. Aquí encontrarás preguntas sobre instrucciones, formatos y componentes del código máquina. Ideal para estudiantes de informática y electrónica.

More Like This

MIPS Instruction Formats
12 questions
MIPS Instruction Set Cheat Sheet
6 questions
MIPS Control Flow Instructions Quiz
8 questions

MIPS Control Flow Instructions Quiz

CuteWatermelonTourmaline avatar
CuteWatermelonTourmaline
Use Quizgecko on...
Browser
Browser