Anda di halaman 1dari 8

Tugas Besar Perkuliahan Bahasa Pemrograman Rakitan

Nama
NIM
Alamat Email

: Olivia Wardhani
: 21120113120032
: Liviaa46@gmail.com

1. Ubahlah bilangan berikut kedalam bentuk basis bilangan lain


Biner
Hexa
Desimal
Octal

0000
0
0
0

0001
1
1
1

0010
2
2
2

0011
3
3
3

0100
4
4
4

0101
5
5
5

0110
6
6
6

0111
7
7
7

Biner
Hexa
Desimal
Octal

1000
8
8
10

1001
9
9
11

1010
A
10
12

1011
B
11
13

1101
C
12
14

1101
D
13
15

1110
E
14
16

1111
F
15
17

2. Buatlah Format Instruksi dari MIPS


a. R Format
Opcode
Rs
Rt
b. I Format
Opcode
Rs
Rt
c. J Format
Opcode

Rd

Shmt

Funct

Immediate
Jump Target

3. Terdapat sebuah instruksi dari MIPS dengan model sebagai berikut : penjumlahan
dimana nilai yang akan dijumlahkan berada di register nomor 20 dan 17. Kemudian
hasil akan diletakkan atau disimpan di register nomor 16. Buatlah format
instruksinya
Field
Opcode
Rs
Rt
Rd
Shmt
Funct
Width
6 bit
5 bit
5 bit
5 bit
5 bit
6 bit
Value
0
20
17
16
0
32
Binary
000000
10100
10001
10000
00000
100000
4. Buatlah compiling by hand untuk instruksi berikut
li $v0, 5
syscall
move $t0, $v0
li $v0, 5
syscall
move $t1, $v0

add $t2, $t0, $t1


move $a0, $t2
li $v0, 1
syscall
li $v0, 10
syscall

Nilai PC
0
4
8
12
16
20

Opcode
13
0
0
13
0
0

Rs
2

Rt
2

2
2

0
2

Rd

Shmt
5

0
5

0
0

Funct
12
33
12
33

24
28
32
36
40
44

0
0
13
0
13
0

8
10
2

9
0
2

10
4

0
0
1

0
2

12
10

5. Buatlah program compiling by hand untuk instruksi berikut


li $v0, 5
syscall
move $t0, $v0
li $v0, 5
syscall
move $t1, $v0
bgt $t0, $t1, t0_bigger
move $t2, $t1

32
33

endif
move $t2,$t0
move $a0, $t2
li $v0, 1
syscall
li $v0, 10
syscall

12

Nilai PC
0
4
8
12
16
20
24
28
32
36
40
44
48
52
56
60

Opcode
13
0
0
13
0
0
0
5
0
1
0
0
13
0
13
0

Rs
2

Rt
2

2
2

0
2

2
9
1
9
0
8
10
2

0
8
0
0
1
0
0
2

Rd

Shmt
5

0
5

9
1

0
0
12
0
8
0
0
1

0
0

10
10
4
0

Funct
12
33
12
33
42
33
33
33
12

10
0

12

6. Buatlah program untuk menghitung persamaan berikut ini :


a. Menjumlahkan angka 1 dan 2, dan hasil diletakkan di t0. Nilai t1 diisi oleh
bilangan 1.
li $t1, 1
add $t0, $t1, 2
move $a0, $t0
li $v0, 1
syscall
li $v0, 10
syscall

b. Menuliskan nama dan nim sendiri (sesuai dengan nim dan nama mahasiswa
yang bersangkutan)
.text
main:
la $a0, nama
li $v0, 4
syscall
li $v0, 10
syscall
.data
nama: .asciiz "Olivia Wardhani\n21120113120032"

c. Menentukan warna gelang resistor

.text
main:
li $t1, 1
li $t2, 2
li $t3, 3
li $t4, 4
li $t5, 5
li $t6, 6
li $t7, 7
li $t8, 8
li $t9, 9
la $a0, input_msg
li $v0, 4
syscall
li $v0, 5
syscall
move $t0, $v0
beq $t0, $zero, rblack
beq $t0, $t1, rbrown
beq $t0, $t2, rred
beq $t0, $t3, rorange
beq $t0, $t4, ryellow
beq $t0, $t5, rgreen
beq $t0, $t6, rblue
beq $t0, $t7, rpurple
beq $t0, $t8, rgrey
beq $t0, $t9, rwhite
b endif
rblack:
la $a0, black
li $v0, 4
syscall
b endif
rbrown:
la $a0, brown
li $v0, 4
syscall
b endif
rred:
la $a0, red
li $v0, 4
syscall
b endif
rorange:
la $a0, orange

li $v0,
syscall
b endif
ryellow:
la $a0,
li $v0,
syscall
b endif
rgreen:
la $a0,
li $v0,
syscall
b endif
rblue:
la $a0,
li $v0,
syscall
b endif
rpurple:
la $a0,
li $v0,
syscall
b endif
rgrey:
la $a0,
li $v0,
syscall
b endif
rwhite:
la $a0,
li $v0,
syscall
endif:
li $v0,
syscall

yellow
4

green
4

blue
4

purple
4

grey
4

white
4
10

.data
input_msg: .asciiz "\nMasukkan angka : "
black: .asciiz "Gelang Resistor warna Hitam\n"
brown: .asciiz "Gelang Resistor warna Coklat\n"
red: .asciiz "Gelang Resistor warna Merah\n"
orange: .asciiz "Gelang Resistor warna Orange\n"
yellow: .asciiz "Gelang Resistor warna Kuning\n"
green: .asciiz "Gelang Resistor warna Hijau\n"
blue: .asciiz "Gelang Resistor warna Biru\n"
purple: .asciiz "Gelang Resistor warna Ungu\n"
grey: .asciiz "Gelang Resistor warna Abu-abu\n"
white: .asciiz "Gelang Resistor warna Putih\n"

d. Menghitung Deret Fibonaci


la $a0, input_msg
li $v0, 4
syscall
li $v0, 5
syscall
move $t7, $v0
move $a0, $t0
li $v0, 1
syscall
la $a0, spacing
li $v0, 4
syscall
li $t1,1
move $a0, $t1
li $v0, 1
syscall
addi $t7,$t7,-2
loop:
la $a0, spacing
li $v0, 4
syscall
add $t2,$t0,$t1
move $a0, $t2
li $v0, 1
syscall
addi $t7,$t7,-1

move $t0,$t1
move $t1,$t2
bgtz $t7,loop
jr $ra
li $v0, 10
syscall
.data
input_msg: .asciiz "Masukkan jumlah deret : "
spacing: .asciiz " "