Anda di halaman 1dari 7

Program Studi Teknik Elektro ITB

Nama Kuliah (Kode) : Praktikum Arsitektur Sistem Komputer (EL3111)


Tahun / Semester : 2018-2019 / Ganjil
Modul : 1 / 2 / 3 / 4 / 5 (Lingkari salah satu)
Nama Asisten / NIM : _______________________________________
Nama Praktikan / NIM : _______________________________________

Tugas Pendahuluan

1. Terdapat 5 tahapan dalam melakukan eksekusi. Tahap pertama melakukan fetch instruksi dari
memori menggunakan addres dari pc kemudian menyimpannya ke dalam instruction register.
Tahap kedua adalah mendecode opcode dari instruksi kemudian membaca semua operand
yang dibutuhkan untuk file register. Tahap ketiga adalah tahap eksekusi, semua operasi ALU
dilakukan pada tahapan ini. Tahap keempat adalah mengakses memori. Dan tahapan terakhir
apabila terdapat hasil makan akan dituliskan kembali hasil tersebut kedalam memori register

Ada 3 jenis instruksi dasar, R type, I type, dan J type. Untuk R type instruksi adalah instruksi
dimana semua nilainya terdapat pada register. Bit 31-26 merupakan opdcode, bit 25-21
merupakan Rs, bit 20-16 merupakan Rt, bit 15-11 merupakan Rd, bit 10-6 merupakan shift, bit
5-0 merupakan function
Contoh
Add $t1, $t2, $t3
Sub $t1, $t2, $t3
Div $t1, $t2, $t3
Mul $t1, $t2, $t3
Slt $t1, 1

Instuksi I adalah insturksi yangdigunakan ketika nilainya harus dioperasikan pada immediate
value dan register value. Untuk formatnya Bit 31-26 merupakan opdcode, bit 25-21 merupakan
Rs, bit 20-16 merupakan Rt, dan bit 15-0 merupakan IMM

Addi $t1, $t2, $t3


lw $t0, 9($t9)
sw $t0, 9($t9)
lb $t0, 9($t9)
sh $t0, 9($t9)

Instruksi J merupakan instruksi yang dilakukan ketika “jump” keaddres lain perlu dilakukan.
formatnya Bit 31-26 merupakan opdcode, bit 25-0 merupakan address
contoh
j, label1
j, label2
j, label3
jal, label4
jal, label5
Praktikum Arsitektur Sistem Komputer (EL3111) | Tahun 2014-2015 | Semester Ganjil

2. .
Instruction Opcode funct type arti
sll 000000 000000 R Shift register ke kiri
sub 000000 100010 R Mengurangi 2 register dan
menyimpan hasilnya diregister
baru
nor 000000 100111 R Melakukan nor pada 2 register
dan menyimpoan haslnya pada
addi 001000 I Menambah nilai immediate signed
kemudian menympannya kedalam
register
xori 001110 I Melakukan operasi xor pada level
bitwise dan menyimpannya
kedalam register
j 000010 J Jump ke addres tertentu
srl 000000 000010 R Shift register ke kanan
and 000000 100100 R Melakukan and pada 2 register
dan menyimpoan haslnya pada
regsister yang baru
slt 000000 101010 R Jika $s lebih kecil dari $t ,
$dmenjadi 1. Sebaliknya $t
menjadi 0
slti 001010 I Jika $s lebih kecil dari immediate,
$t menjadi 1. Sebaliknya $t
menjadi 0
lui 001111 I Immediate value dishift 16 bit
kemudian disimpan kedalam
registern. 16 bit lainnya menjadi 0
jal 000011 J Jump ke addres tertentu
kemudian return addres disimpan
pada $31
jr 001000 J Jump ke addres yang mengandung
register $s
or 000000 100101 R Melakukan or pada 2 register dan
menyimpoan haslnya pada
beq 000100 I Branch jika 2 register tidak equal
andi 001100 I Melakukan operasi and pada level
bitwise dan menyimpannya
kedalam register
lw 100011 I Nilai dari register disimpan pada
suatu addres memory
addiu 001001 I Menambah nilai immediate
unsigned kemudian
menympannya kedalam register
add 000000 100000 R Menjumlah 2 register dan
menyimpan hasilnya diregister
baru
xor 000000 100110 R Melakukan xor pada 2 register dan
menyimpoan haslnya pada
regsister yang baru

Halaman 2 dari 7
bne 000101 I Branch jika 2 register equal
ori 001101 I Melakukan operasi or pada level
bitwise dan menyimpannya
kedalam register
sw 101011 I Nilai dari $t disimpan kedalam
addres tertentu
sltiu 001011 I Jika $s lebih kecil dari unsigned
immediate, $t menjadi 1.
Sebaliknya $t menjadi 0

3.

b)

#include <stdio.h>

int main()
{
int pound, ounce;
printf("Masukkan massa dalam ounces: ");
scanf ("%d", &ounce);
pound = (int)(ounce/16);
printf ("%d puound\n", pound);
printf ("%d ounce\n", ounce-16*pound);
return (0);
}

c)
Hasil assembly

.file "tp.c"
.def ___main; .scl 2; .type 32; .endef
.section .rdata,"dr"
LC0:
.ascii "Masukkan massa dalam ounces: \0"
LC1:
.ascii "%d\0"
LC2:
Praktikum Arsitektur Sistem Komputer (EL3111) | Tahun 2014-2015 | Semester Ganjil
.ascii "%d puound\12\0"
LC3:
.ascii "%d ounce\12\0"
.text
.globl _main
.def _main; .scl 2; .type 32; .endef
_main:
pushl %ebp
movl %esp, %ebp
andl $-16, %esp
subl $32, %esp
call ___main
movl $LC0, (%esp)
call _printf
leal 24(%esp), %eax
movl %eax, 4(%esp)
movl $LC1, (%esp)
call _scanf
movl 24(%esp), %eax
leal 15(%eax), %edx
testl %eax, %eax
cmovs %edx, %eax
sarl $4, %eax
movl %eax, 28(%esp)
movl 28(%esp), %eax
movl %eax, 4(%esp)
movl $LC2, (%esp)
call _printf
movl 28(%esp), %edx
movl $0, %eax
subl %edx, %eax
sall $4, %eax
movl %eax, %edx
movl 24(%esp), %eax
leal (%edx,%eax), %eax
movl %eax, 4(%esp)
movl $LC3, (%esp)
call _printf
movl $0, %eax
leave
ret
.def _printf; .scl 2; .type 32; .endef
.def _scanf; .scl 2; .type 32; .endef

Kode lebih panjang karena assembly juga dilakukan pada library stdio.h

4.

.data
inputliter: .asciiz "Masukan bensin dalam liter :"
inputjarak: .asciiz "Masukan jarak dalam km :"
hasil: .asciiz "Penggunaan bensin rata-rata (liter/km) ="
hasil2: .asciiz "\nJarak yang ditempuh dengan bensin 1 liter (km)= "
.text
.globl main

main:
li $v0,4
la $a0,inputliter
syscall

li $v0,6
syscall
Halaman 4 dari 7
mov.s $f1, $f0
li $v0,4
la $a0,inputjarak
syscall

li $v0,6
syscall
mov.s $f2, $f0

li $v0,4
la $a0,hasil
syscall

div.s $f12, $f1, $f2


li $v0,2
syscall

li $v0,4
la $a0,hasil2
syscall

li.s $f3, 1.0


mov.s $f4, $f12
div.s $f12, $f3, $f4
li $v0,2
syscall

li $v0,10
syscall

Screenshot hasil eksekusi

Kode assembly

.data
literasi: .asciiz "Masukkan jumlah loop: "
hasil: .asciiz "\nHasil literasi :"

.text

main:
li $t0, 0
li $t1, 1
li $v0, 4
la $a0, literasi
syscall
Praktikum Arsitektur Sistem Komputer (EL3111) | Tahun 2014-2015 | Semester Ganjil
li $v0, 5
syscall
move $t2, $v0
j loop

loop:
beq $t0, $t2, exit
mul $t1, $t1, 2
add $t0, $t0, 1

j loop

exit:
li $v0, 4
la $a0, hasil
syscall

move $a0, $t1


li $v0, 1
syscall

li $v0, 10
syscall

Hasil simulasi

Halaman 6 dari 7

Anda mungkin juga menyukai