Modul 1
Pengenalan Pemrograman Assembly pada MIPS
menggunakan MARS
Mata Kuliah Organisasi dan Arsitektur Komputer
Teknik Informatika
Institut Teknologi Sumatera
1
Modul Praktikum Organisasi dan Arsitektur Komputer
Berikut ini merupakan rangkuman format instruksi MIPS (yang kita pelajari pada
materi mengenai bahasa mesin).
R-Format
RD merupakan register tujuan untuk menympan hasil operasi dari RS dan RT.
Shamt merepresentasikan berapa bit RS di geser (bernilai bukan nol jika operasi
adalah shift)
I-Format
opcode RS RT Immediate
2
Modul Praktikum Organisasi dan Arsitektur Komputer
J-Format
6-bit 26-bit
Target Address merupakan 26-bit alamat dalam program dimana kontrol alur
program akan diteruskan
https://inst.eecs.berkeley.edu/~cs61c/resources/MIPS_Green_Sheet.pdf
Dan
https://www.assemblylanguagetuts.com/mips-instruction-set-opcodes-
reference-sheet/
Untuk referensi mengenai daftar instruksi dasar pada MIPS
C. Program MARS
https://stackoverflow.com/questions/52511778/how-to-install-openjdk-11-
on-windows
Untuk file instalasi openJDK 13 dapat diunduh di halaman berikut:
3
Modul Praktikum Organisasi dan Arsitektur Komputer
https://jdk.java.net/13/
Setelah openJDK berhasil dipasang pada sistem, unduh program MARS pada
alamat berikut:
http://courses.missouristate.edu/kenvollmar/mars/download.htm
Versi termutakhir (per September 23, 2019) dari aplikasi MARS adalah versi
4.5 yang terakhir kali di-update pada Agustus 2014.
Setelah program diunduh (dalam format JAR) dan disimpan pada folder
yang anda inginkan, jalankan program dengan langkah sebagai berikut
(pada Windows 10):
1. Buka lokasi folder dimana file MARS (format JAR) disimpan, misalnya
D:/Data/MARS/
Tekan enter.
4. Jika anda sudah berada pada folder aplikasi MARS, pastikan bahwa file
aplikasi MARS anda ada di dalamnya dengan perintah
dir
Tekan enter. Jika ada entri seperti MARS4_5.jar terdaftar, maka lokasi
folder anda sudah benar.
4
Modul Praktikum Organisasi dan Arsitektur Komputer
D. Antarmuka Program
Bagian A
Merupakan tempat untuk meyunting dan melihat alur eksekusi instruksi program
assembly. Terdapat dua tab pada bagian ini, yaitu tab Edit dan Execute. Tab Edit
digunakan untuk menyunting kode instruksi dalam program. Tab Execute otomatis
akan muncul jika kita telah melakukan proses Assemble (tombol F3) pada source
code program, seperti yang ditunjukkan oleh Gambar 2. Tab ini berguna untuk
melihat data mengenai instruksi mesin dari instruksi assembly (kolom Code), lokasi
dimana instruksi disimpan dalam memori (kolom Address), dan sebagai petunjuk
alur eksekusi program (kolom Basic).
5
Modul Praktikum Organisasi dan Arsitektur Komputer
Bagian B
Menampilkan kondisi register (isi) pada saat eksekusi program. Kondisi register
pada setiap langkah instruksi dapat dilihat pada bagian ini.Perlu dicatat, isi dari
register bernilai bilangan heksadesimal dengan format representasi bilangan two’s
complement.
Bagian C
Merupakan console yang dapat menerima input dari pengguna dan menampilkan
hasil eksekusi program ke pengguna. Console dapat diakses dengan menggunakan
system call pada MIPS. System call pada MIPS dapat dilihat pada tautan berikut:
https://courses.missouristate.edu/KenVollmar/MARS/Help/SyscallHelp.ht
ml
deklarasi data
kode program
Bagian .data merupakan bagian untuk deklarasi data yang digunakan dalam
program seperti string, byte, dll. Nama variabel yang digunakan dalam program
6
Modul Praktikum Organisasi dan Arsitektur Komputer
dapat dideklarasikan pada bagian ini, dimana variabel akan dialokasikan dalam
memori. Tipe data pada MIPS dapat dilihat pada tautan
https://www.assemblylanguagetuts.com/mips-assembly-data-types/
Bagian .text menandakan dimulainya blok kode program/instruksi yang akan
dieksekusi.
Sintaks main: menandakan label main program, dimana kita bisa melakukan
branching ke label ini.
7
Modul Praktikum Organisasi dan Arsitektur Komputer
Tulis program yang ada pada Gambar 3 pada program MARS, kemudian eksekusi
program tersebut. Buat dalam bentuk laporan untuk menjawab instruksi dan
pertanyaan berikut ini:
2. Jika pada baris ke-8 kode diganti menjadi la $a0, msg2. Apakah yang terjadi
pada program?
3. Dimanakah alamat memori data msg dan msg2? Untuk menjawab, silakan
eksplorasi Tab Execute, jelaskan kondisi data pada memori (Data Segment) saat
program dijalankan!
4. Jika salah satu instruksi pada baris ke-7 atau ke-8 dihilangkan, apakah yang
terjadi?
5. Jika kita kembalikan seperti semula instruksi yang dihilangkan dari soal nomor
4, kemudian instruksi pada baris ke-11 dihilangkan, apakah yang terjadi?
6. Jika kita kembalikan seperti semula instruksi yang dihilangkan dari soal nomor
5 dan 4, kemudian operand immediate (konstanta) diganti dengan bilangan 1
sehingga instruksi menjadi li $v0, 1. Apakah yang terjadi dari hasil eksekusi
program?
7. Sampai saat ini anda telah melakukan eksperimen terkait system call pada MIPS.
Jelaskan menurut pendapat anda apakah system call pada MIPS!
8
Modul Praktikum Organisasi dan Arsitektur Komputer
Perhatikan dan pahami program di bawah ini. Untuk memudahkan, anda dapat
mencoba melakukan eksekusi program untuk melihat perilaku program berikut
dengan menggunakan MARS:
.data
.text
.globl main
main:
la $t1, arr
li, $v0, 4
syscall
li, $v0, 5
syscall
li, $s1, 4
li, $v0, 4
syscall
li, $v0, 1
syscall
Tugas
9
Modul Praktikum Organisasi dan Arsitektur Komputer
2. Perhatikan Tab Execute dan jendela Text Segment. Pada saat program akan
dijalankan (setelah proses assemble), kita tidak melihat instruksi baris pertama la
$t1, arr yang digantikan dengan 2 baris kode instruksi lui dan ori. Begitu pula
dengan instruksi pada baris selanjutnya yaitu li, $v0, 4 digantikan dengan
instruksi addiu. Jelaskan maksudnya!
10
Modul Praktikum Organisasi dan Arsitektur Komputer
Referensi
1 http://courses.missouristate.edu/kenvollmar/mars/
2 https://www.assemblylanguagetuts.com/mips-assembly-
programming-tutorials/
3 https://en.wikipedia.org/wiki/MIPS_architecture#Pseudo_instructions
4 http://labdasar.ee.itb.ac.id/lab/Semester%201%202018-
2019/modul/Modul%20EL3111%20Arsikom%202018%20-
%20150%20buku.pdf
11