Docsity
Docsity

Prepara tus exámenes
Prepara tus exámenes

Prepara tus exámenes y mejora tus resultados gracias a la gran cantidad de recursos disponibles en Docsity


Consigue puntos base para descargar
Consigue puntos base para descargar

Gana puntos ayudando a otros estudiantes o consíguelos activando un Plan Premium


Orientación Universidad
Orientación Universidad


Prácticas de Fundamentos de Computadores: Ensamblador y MIPS R2000 - Prof. Guirao Puerta, Apuntes de Ingeniería Telemática

Los objetivos, conceptos previos, ventajas y desventajas, escritura y carga de un programa ensamblador para el procesador mips r2000. Además, se incluye la sintaxis básica del ensamblador y la estructura de un programa ensamblador. Útil para estudiantes universitarios de informática que deseen obtener una mejor comprensión de los fundamentos de computadores.

Tipo: Apuntes

Antes del 2010

Subido el 27/02/2009

pitiii
pitiii 🇪🇸

4.3

(12)

14 documentos

1 / 11

Toggle sidebar

Esta página no es visible en la vista previa

¡No te pierdas las partes importantes!

bg1
PRÁCTICAS DE FUNDAMENTOS DE COMPUTADORES
OBJETIVOS DE LAS PRÁCTICAS
Saber diferenciar entre los diferentes lenguajes de programación de sistemas microprocesadores.
Conocer el sistema de representación numérica en distintos códigos: binario, hexadecimal, etc.
Programar en lenguaje ensamblador.
Saber implementar algoritmos (bucles, sentencias IF...THEM, CASE..., etc), en lenguaje
ensamblador.
Conocer estructuras de procesadores (ej. MIPS R20009
Reconocer cómo se ejecuta una instrucción en una estructura procesadora.
Reconocer el funcionamiento de estructuras tales como: memorias, ALU’s, registros, etc.
elementos a utilizar en las prácticas
Lenguaje de programación: Ensamblador
Entorno de programación: PC SPIM
Procesador: MIPS R2000
pf3
pf4
pf5
pf8
pf9
pfa

Vista previa parcial del texto

¡Descarga Prácticas de Fundamentos de Computadores: Ensamblador y MIPS R2000 - Prof. Guirao Puerta y más Apuntes en PDF de Ingeniería Telemática solo en Docsity!

PRÁCTICAS DE FUNDAMENTOS DE COMPUTADORES

• OBJETIVOS DE LAS PRÁCTICAS

  • Saber diferenciar entre los diferentes lenguajes de programación de sistemas microprocesadores.
  • Conocer el sistema de representación numérica en distintos códigos: binario, hexadecimal, etc.
  • Programar en lenguaje ensamblador.
  • Saber implementar algoritmos (bucles, sentencias IF...THEM, CASE..., etc), en lenguaje ensamblador.
  • Conocer estructuras de procesadores (ej. MIPS R
  • Reconocer cómo se ejecuta una instrucción en una estructura procesadora.
  • Reconocer el funcionamiento de estructuras tales como: memorias, ALU’s, registros, etc.

• elementos a utilizar en las prácticas

  • Lenguaje de programación: Ensamblador
  • Entorno de programación: PC SPIM
  • Procesador: MIPS R

CONCEPTOS PREVIOS

• tipos de lenguajes de PROGRAMACIÓN

• Los microprocesadores ( F 06 DP ) trabajan con ceros y unos (niveles altos y bajos de tensión).

• Toda la información que almacenan y procesan los F 06 DP está formada por ceros y unos.

  • Los lenguajes de programación se pueden clasificar dependiendo de la proximidad y dependencia con el procesador que va a interpretar las órdenes:

• Lenguaje máquina: Es el lenguaje más cercano al F 06 DP , las instrucciones están formadas

por ceros y unos. Es sumamente complejo y puede dar lugar a muchos errores.

Ejemplo: Sumar dos variables (20+15) 1010 1101 00010100 0000 1111

Sumar 20 15

  • Lenguaje ensamblador: Las instrucciones se dan como abreviaturas o nemónicos.

Este lenguaje es propio de cada F 06 DP , que tiene su propio conjunto de instrucciones o

nemónicos.

Ejemplo: Sumar dos variables (20+15) ADDI 14H,0FH

  • Lenguajes de alto nivel: Las instrucciones se dan como frases simples. Este lenguaje

no depende del F 06 DP. Como ejemplos de éstos tenemos: BASIC, PASCAL, C.

Ejemplo: Sumar dos variables (20+15) Sumar (20,15)

ESTRUCTURA DE UN PROGRAMA ENSAMBLADOR

  • Los programas de ensamblador de los MIPS están divididos en dos partes principales:
    • Segmento de datos: Contiene todos los datos constantes de nuestro programa.
    • Segmento de texto: - Es la parte del programa que contiene el programa en sí. - El programa se estructura en subrutina. - Subrutina: Pequeños programas que hacen una función determinada dentro del programa principal.
  • Ejemplo: ############### SEGMENTO DE DATOS ############### .data var_a: .word 255 var_b: .word 0xFF cadena: .asciiz “El resultado es: “ ############### SEGMENTO DE TEXTO ############### .text __start: ####### RUTINA PRINCIPAL ######## jal print cadena #Llama a la rutina que imprime la cadena lw $8,var_a #Carga una variable desde memoria ($8=$t0) lw $t1,var_b #Carga otra variable desde memoria add $t2,$t0,$t1 #Suma y pone el resultado en otro registro move $a0,$t2 #Pone en $a0 el resultado a imprimir. li $v0,1 #Código de llamada al sistema print_int syscall #Imprime el resultado li $v0,10 #Código de llamada al sistema exit syscall #Termina el programa print_cadena: ########### SUBRUTINA ########## la $a0,cadena #Pone en $a0 la dirección de la cadena a imprimir li $v0,4 #Código de llamada al sistema Print_string syscall #Imprime la cadena jr $31 #Vuelve a la rutina principal

SINTAXIS DEL ENSAMBLADOR

  • Las principales reglas de escritura para un programa en ensamblador para el procesador MIPS R2000 son: - Cada instrucción debe ir en una sola línea. - Los comentarios comienzan con el símbolo “#”. - Es aspecto de cualquier línea es:

[etiqueta:] <código operación> [#comentarios]

  • Etiqueta: Secuencia de caracteres alfanuméricos, subrayados y puntos, terminado con “:” (nunca pueden empezar con números) y que sirven para hacer referencia a la posición de memoria donde se ubican los datos o instrucciones.
  • Código de operación: Son palabras reservadas, que nunca se pueden utilizar como etiquetas, y que pueden ser : directivas, instrucciones o pseudoinstrucciones.
  • Directivas: Comienzan con un punto y sirven para indicar al ensamblador como debe tratar los datos y/o las instrucciones que vienen a continuación. Las directivas no generan código máquina, son de carácter informativo, y de algún modo guían el proceso de ensamblaje.
  • Instrucciones: Representan una orden o tarea del procesador y son las que verdaderamente componen el programa que va a ejecutar el procesador.
  • Pseudoinstrucciones: Son un conjunto de instrucciones no reales, ofrecidas por el ensamblador, y que este traduce en una o varias instrucciones reales. La función de estas pseudoinstrucciones es la de facilitar la elaboración de los programas.
  • Operandos (argumentos): Para el caso de las instrucciones es habitual encontrarse registros, datos inmediatos o referencia a etiquetas.
  • Los registros se pueden acceder directamente a través de su número o nombre, y lo normal es que sirvan de argumentos de las operaciones que representan las instrucciones.

Número de registro

Nombre (^) Utilización

Directiva Significado .align n (^) Alinea el siguiente dato sobre un límite 2 n^ bytes. Si se usa el valor 0 se desactiva

automáticamente la alineación de las directivas .half, .word, .float y .double hasta la siguiente directiva .data.

.ascii str (^) Almacena la cadena str en memoria, pero no la termina con un carácter nulo. La cadena

str debe estar entre comillas dobles. .asciiz str (^) Almacena la cadena str en memoria terminándola con un carácter nulo. La cadena str

debe estar entre comillas dobles. .byte b1, b2, ..., bn

Almacena los n valores en bytes consecutivos en memoria.

.data (^) Los elementos declarados tras esta directiva son almacenados en el segmento de datos, concretamente a partir de la dirección expresada en . Si el argumento no aparece se tomará la dirección por defecto. .double d1, d2, ..., dn

Almacena los n valores en coma flotante de doble precisión (64 bits) consecutivamente en memoria. .end (^) Fin de programa

.float f1, f2, ..., fn

Almacena los n valores en coma flotante de simple precisión (32 bits) consecutivamente en memoria. .globl simbolo (^) Declara simobolo como global y puede ser referenciado desde otros archivos.

.half h1, ..., hn (^) Almacena los n valores en medias palabras (16 bits) consecutivos en memoria.

.space n (^) Reserva n bytes de espacio en el segmento de datos.

.text (^) Los elementos declarados tras esta directiva son almacenados en el segmento de

código, concretamente a partir de la dirección . Estos elementos sólo pueden ser instrucciones o palabras (.word). Si el argumento no se utiliza, se tomará la dirección por defecto. .word w1, w2, ..., wn

Almacena los n valores en palabras (32 bits) sucesivas en memoria.

- CARGA DEL PROGRAMA

Una vez editado el programa con cualquier procesador de textos, se procede a su simulación. Para ello

se carga el fichero ( file F 0A E open ). Esta opción ensambla el programa, la carga en memoria, traduce las

etiquetas, chequea las instrucciones y pseudoinstrucciones y hace el análisis sintáctico y semántico del programa.

- EJECUCIÓN DEL PROGRAMA

Una vez cargado el programa en el simulador, la ejecución de éste se puede realizar de dos formas distintas:

  • Opción Go del simulador: Con esta opción se ejecuta el programa sin pausas. Si se quiere

detener la ejecución del programa, se puede elegir la opción Break, y si se quiere detener el

programa en una dirección de memoria determinada se puede elegir la la opción Breakpoints.

  • Depurador: El depurador o debugger del simulador permite que el programa se ejecute paso a

paso (instrucción a instrucción), opción single step (F10), o también permite ejecutar un

número determinado de instrucciones múltiple step (F11).