Programar en ensamblador

Aquí podéis descargar el programa que ayuda a hacerlo, se llama mars4_3
Sirve para programar MIPS

FORMATOS DE INSTRUCCIÓN DEL MIPS










Formato R



6 bits
5 bits
5 bits
5 bits
5 bits
6 bits


Opcode

rs

rt
rd

Shift

Func.
















Instrucción
Opcode
Func.


Descripción





Desplazamientos













sll $rd, $rt, shift
000000
000000
Desplazamiento lógico a la izquierda



$rs=0
srl $rd, $rt, shift
000000
000010
Desplazamiento lógico a la derecha

sra $rd, $rt, shift
000000
000011
Desplazamiento aritmético a la derecha




sllv $rd, $rt, $rs
000000
000100
Despl. lógico a la izquierda variable

srlv $rd, $rt, $rs
000000
000110
Despl. lógico a la derecha variable

srav $rd, $rt, $rs
000000
000111
Despl. aritmético a la derecha variable

Saltos













jr $rs
000000
001000
Salta a la instr. cuya dirección está en $rs.

jalr $rs, $rd
000000
001001
Salta a la instr. cuya dirección está en $rs,







salvando la dirección de la instrucción







siguiente en $rd (por defecto, $31)

Transferencia de datos











mfhi $rd
000000
010000
hi $rd








mflo $rd
000000
010010
lo $rd








Operaciones aritméticas











mult $rs, $rt
000000
011000
Multiplicación. Resultado = (hi, lo)

multu $rs, $rt
000000
011001
Multiplicación sin signo.





div $rs, $rt
000000
011010
División con desbordamiento.







lo=cociente; hi=resto





divu $rs, $rt
000000
011011
División sin desbordamiento

add $rd, $rs, $rt
000000
100000
Suma con desbordamiento





addu $rd, $rs, $rt
000000
100001
Suma sin desbordamiento





sub $rd, $rs, $rt
000000
100010
Resta con desbordamiento





subu $rd, $rs, $rt
000000
100011
Resta sin desbordamiento





Operaciones lógicas













and $rd, $rs, $rt
000000
100100
AND lógico








or $rd, $rs, $rt
000000
100101
OR lógico








xor $rd, $rs, $rt
000000
100110
OR exclusivo lógico





nor $rd, $rs, $rt
000000
100111
NOR lógico













Página 1


Instrucción
Opcode
Func.
Descripción




Comparaciones



slt $rd, $rs, $rt
000000
101010
si $rs < $rt $rd = 1
sltu $rd, $rs, $rt
000000
101011
si $rs < $rt $rd = 1 (sin signo)
Otras



nop
000000
000000
No operación (no hace nada).
syscall
000000
001100
Llamada a sistema. Resto de campos = 0













Formato I


6 bits
5 bits

5 bits
16 bits





Opcode

rs

rt


Inm.


















Instrucción


Opcode


Descripción





Operaciones aritméticas









addi $rt, $rs, inm

001000

Suma con inmediato (con desbordamiento)



addiu $rt, $rs, inm

001001

Suma con inmediato (sin desbordamiento)



Comparaciones














slti $rt, $rs, inm


001010

Si $rs < inm $rt=1







sltiu $rt, $rs, inm

001011

Si $rs < inm $rt=1 (sin signo)




Operaciones lógicas












andi $rt, $rs, inm

001100

AND lógico con inmediato





ori $rt, $rs, inm


001101

OR lógico con inmediato





xori $rt, $rs, inm


001110

XOR lógico con inmediato

































Carga











lui $rt, inm


001111

$rt = inm << 16;







lb $rt, inm($rs)


100000

Carga un byte. $rt = (inm + $rs)




lh $rt, inm($rs)


100001

Carga un valor de 16 bits. $rt = (inm + $rs)



lw $rt, inm($rs)


100011

Carga una palabra. $rt = (inm + $rs)



lbu $rt, inm($rs)


100100

Carga un byte (sin signo). $rt = (inm + $rs)



lhu $rt, inm($rs)


100101

Carga media palabra (sin signo).


















Almacenamiento




















sb $rt, inm($rs)


101000

(inm+$rs) = byte de menos peso de $rt



sh $rt, inm($rs)


101001

(inm+$rs) = 16 bits de menos peso de $rt



sw $rt, inm($rs)


101011

(inm+$rs) = $rt








Página 2


Instrucción
Opcode
Descripción







Saltos




beq $rs, $rt, etiq
000100
Si $rs = $rt salta etiq instrucciones


bne $rs, $rt, etiq
000101
Si $rs != $rt salta etiq instrucciones


blez $rs, etiq
000110
Si $rs <= 0 salta etiq instrucciones


$rt=0
bgtz $rs, etiq
000111
Si $rs > 0 salta etiq instrucciones














Formato J

6 bits

26 bits

Opcode


Dirección






Instrucción
Opcode
Descripción

Saltos




j etiqueta
000010
Salta a la instrucción etiqueta

jal etiqueta
000011
Salta a la instrucción etiqueta. Guarda la




dirección de la instrucción siguiente en $31




Descargar documento