Introducció

El llenguatge Assembly MIPS és utilitzat per programar microprocessadors de l'arquitectura MIPS (Microprocessor without Interlocked Pipeline Stages). Aquesta arquitectura és coneguda per la seva simplicitat i eficiència, i és àmpliament utilitzada en sistemes embeguts, educació i investigació.

Conceptes Bàsics

Registres en MIPS

Els registres són elements fonamentals en l'arquitectura MIPS. Hi ha 32 registres de propòsit general, cadascun amb una funció específica. A continuació es mostra una taula amb alguns dels registres més importants:

Registre Nom Descripció
$zero Zero Sempre conté el valor 0
$at Assembler Reservat per a l'assemblador
$v0-$v1 Values Per a valors de retorn de funcions
$a0-$a3 Arguments Per a arguments de funcions
$t0-$t9 Temporals Per a valors temporals
$s0-$s7 Saved Per a valors que es mantenen
$gp Global Punt de dades globals
$sp Stack Punt de la pila
$fp Frame Punt de marc
$ra Return Adreça de retorn

Sintaxi Bàsica

La sintaxi d'instruccions en MIPS segueix el format:

<instrucció> <destinació>, <font1>, <font2>

Per exemple, una instrucció per sumar dos registres i emmagatzemar el resultat en un tercer seria:

add $t0, $t1, $t2

Aquesta instrucció suma els valors dels registres $t1 i $t2 i emmagatzema el resultat en $t0.

Instruccions Bàsiques

Instruccions Aritmètiques

Les instruccions aritmètiques permeten realitzar operacions matemàtiques bàsiques. A continuació es mostren algunes de les més comunes:

add $t0, $t1, $t2    # $t0 = $t1 + $t2
sub $t0, $t1, $t2    # $t0 = $t1 - $t2
mul $t0, $t1, $t2    # $t0 = $t1 * $t2
div $t0, $t1, $t2    # $t0 = $t1 / $t2

Instruccions de Memòria

Les instruccions de memòria permeten carregar i emmagatzemar dades des de i cap a la memòria. Les instruccions més comunes són lw (load word) i sw (store word):

lw $t0, 0($t1)       # Carrega la paraula de la memòria a l'adreça $t1 + 0 a $t0
sw $t0, 0($t1)       # Emmagatzema la paraula de $t0 a la memòria a l'adreça $t1 + 0

Instruccions de Control de Flux

Les instruccions de control de flux permeten alterar la seqüència d'execució del programa. Algunes de les més comunes són:

beq $t0, $t1, etiqueta  # Salta a 'etiqueta' si $t0 és igual a $t1
bne $t0, $t1, etiqueta  # Salta a 'etiqueta' si $t0 no és igual a $t1
j etiqueta              # Salta incondicionalment a 'etiqueta'

Exemple Pràctic

A continuació es mostra un exemple complet d'un programa en MIPS que suma dos nombres i emmagatzema el resultat en un tercer registre:

.data
num1: .word 5
num2: .word 10
result: .word 0

.text
main:
    lw $t0, num1       # Carrega el valor de num1 a $t0
    lw $t1, num2       # Carrega el valor de num2 a $t1
    add $t2, $t0, $t1  # Suma $t0 i $t1, emmagatzema el resultat en $t2
    sw $t2, result     # Emmagatzema el resultat a la memòria (result)
    li $v0, 10         # Finalitza el programa
    syscall

Exercicis Pràctics

Exercici 1

Escriu un programa en MIPS que multipliqui dos nombres i emmagatzemi el resultat en un tercer registre.

Solució

.data
num1: .word 3
num2: .word 4
result: .word 0

.text
main:
    lw $t0, num1       # Carrega el valor de num1 a $t0
    lw $t1, num2       # Carrega el valor de num2 a $t1
    mul $t2, $t0, $t1  # Multiplica $t0 i $t1, emmagatzema el resultat en $t2
    sw $t2, result     # Emmagatzema el resultat a la memòria (result)
    li $v0, 10         # Finalitza el programa
    syscall

Exercici 2

Escriu un programa en MIPS que compari dos nombres i emmagatzemi el valor més gran en un tercer registre.

Solució

.data
num1: .word 7
num2: .word 5
result: .word 0

.text
main:
    lw $t0, num1       # Carrega el valor de num1 a $t0
    lw $t1, num2       # Carrega el valor de num2 a $t1
    bge $t0, $t1, greater  # Si $t0 >= $t1, salta a 'greater'
    sw $t1, result     # Emmagatzema $t1 a result
    j end              # Salta a 'end'
greater:
    sw $t0, result     # Emmagatzema $t0 a result
end:
    li $v0, 10         # Finalitza el programa
    syscall

Conclusió

En aquesta secció hem explorat els conceptes bàsics del llenguatge Assembly MIPS, incloent-hi els registres, la sintaxi bàsica i les instruccions fonamentals. També hem vist exemples pràctics i exercicis per reforçar els conceptes apresos. Amb aquesta base, estàs preparat per aprofundir en temes més avançats i aplicar els teus coneixements en projectes pràctics.

© Copyright 2024. Tots els drets reservats