Você está na página 1de 2

Untitled Untitled

Ensamblar manualmente (codificar) el siguiente programa MIPS: bne $10, $0, 16 | 5 | 10 | 0 | 16 |


add $8, $8, $9 | 0 | 8 | 9 | 8 | 0 | 32 |
begin: addi $t0, $zero, 0 addi $9, $9, 2 | 8 | 9 | 9 | 2 |
addi $t1, $zero, 1 j 8 | 2 | 8 |
loop: slt $t2, $a0, $t1 add $2, $8, $0 | 0 | 8 | 0 | 2 | 0 | 32 |
bne $t2, $zero, finish
add $t0, $t0, $t1
addi $t1, $t1, 2 3o. Pasar cada campo numérico a su equivalente en binario.
j loop Tener cuidado de utilizar el número de bits que corresponda
finish: add $v0,$t0,$zero a cada campo.

OpCode rs rt rd shf func


1o. Sustituir etiquetas y registros por sus valores numéricos. ------+-----+-----+-----+-----+------
- Suponer que la etiqueta begin: corresponde a la posición addi $8, $0, 0 | 8 | 0 | 8 | 0 |
de memoria 0. 001000 00000 01000 00000 00000 000000
- Cada instrucción ocupa 32 bits
addi $9, $0, 1 | 8 | 0 | 9 | 1 |
Dirección Programa en 001000 00000 01001 00000 00000 000001
de memoria ensamblador
--------------------------- slt $10, $4, $9 | 0 | 4 | 9 | 10 | 0 | 42 |
00..03 addi $8, $0, 0 000000 00100 01001 01010 00000 101010
04..07 addi $9, $0, 1
08..11 slt $10, $4, $9 bne $10, $0, 16 | 5 | 10 | 0 | 16 |
12..15 bne $10, $0, 16 000101 01010 00000 00000 00000 010000
16..19 add $8, $8, $9
20..23 addi $9, $9, 2 add $8, $8, $9 | 0 | 8 | 9 | 8 | 0 | 32 |
24..27 j 8 000000 01000 01001 01000 00000 100000
28..31 add $2, $8, $0
addi $9, $9, 2 | 8 | 9 | 9 | 2 |
2o. Transformar cada instrucción a su equivalente numérico según el 001000 01001 01001 00000 00000 000010

formato que le corresponda. j 8 | 2 | 8 |


000010 00000 00000 00000 00000 001000
Opcode rs rt rd shf func
Instr Type (6 bits) (5 bits) (5 bits) (5 bits) (5 bits) (6 bits) add $2, $8, $0 | 0 | 8 | 0 | 2 | 0 | 32 |
------------------------------------------------------------------ 000000 01000 00000 00010 00000 100000
addi I 8 x x vvvvvvvvvvvvvvvvvvvvvv
slt R 0 x x x 0 42
bne I 5 x x vvvvvvvvvvvvvvvvvvvvvv Versión en binario del programa (código máquina):
add R 0 x x x 0 32
j I 2 vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv OpCode rs rt rd shf func
------+-----+-----+-----+-----+------
|001000|00000|01000|00000 00000 000000|
OpCode rs rt rd shf func |001000|00000|01001|00000 00000 000001|
------+-----+-----+-----+-----+------ |000000|00100|01001|01010 00000 101010|
addi $8, $0, 0 | 8 | 0 | 8 | 0 | |000101|01010|00000|00000 00000 010000|
addi $9, $0, 1 | 8 | 0 | 9 | 1 | |000000|01000|01001|01000 00000 100000|
slt $10, $4, $9 | 0 | 4 | 9 | 10 | 0 | 42 | |001000|01001|01001|00000 00000 000010|
Page 1 Page 2
Untitled
|000010|00000|00000|00000 00000 001000|
|000000|01000|00000|00010 00000 100000|

4o. Dividir cada línea en grupos de 4 para obtener la versión en

hexadecimal

0010 0000 0000 1000 0000 0000 0000 0000


2 0 0 8 0 0 0 0

0010 0000 0000 1001 0000 0000 0000 0001


2 0 0 9 0 0 0 1

0000 0000 1000 1001 0101 0000 0010 1010


0 0 8 9 5 0 2 A

0001 0101 0100 0000 0000 0000 0001 0000


1 5 4 0 0 0 1 0

0000 0001 0000 1001 0100 0000 0010 0000


0 1 0 9 4 0 2 0

0010 0001 0010 1001 0000 0000 0000 0010


2 1 2 9 0 0 0 2

0000 1000 0000 0000 0000 0000 0000 1000


0 8 0 0 0 0 0 8

0000 0001 0000 0000 0001 0000 0010 0000


0 1 0 0 1 0 2 0

Versión en hexadecimal del programa (código máquina):

Dirección Programa en
de memoria lenguaje máquina
---------------------------
[00] 0x20080000
[04] 0x20090001
[08] 0x0089502A
[12] 0x15400010
[16] 0x01094020
[20] 0x21290002
[24] 0x08000008
[28] 0x01001020

Page 3

Você também pode gostar