Anda di halaman 1dari 31

Belajar Bahasa Mesin

Organisasi dan Arsitektur Komputer


Pertemuan 05-06
Teknik Informatika ITERA
Beberapa Minggu lalu....
• Bahasa assembly
Outline hari ini
• Tipe instruksi MIPS
• Ekivalensi instruksi assembly ke dalam bahasa
mesin
Bahasa Mesin? HOW?
Seperti apa bahasa mesin itu?
Klasifikasi Instruksi MIPS
• R-format (Register format)
• ADD, SUB, AND, OR, NOR, SLT membutuhkan 2 source
registers dan 1 destination register
• SRL, SLL juga termasuk dalam kategori ini
• I-format (Immediate format)
• ADDI, ANDI, ORI, SLTI, LW, SW, BEQ, BNE membutuhkan
1 source register, 1 immediate dan 1 destination register
• J-format (Jump format)
• Instriuksi j membutuhkan operand 1 immediate
R-Format
opcode RS RT RD shamt funct
6-bit 5-bit 5-bit 5-bit 5-bit 6-bit

Opcode (operational code) merupakan representasi bahasa mesin dari instruksi.


RS merupakan register operand (sumber) pertama yang mengandung nilai yang
dioperasikan
RT merupakan register operand (sumber) kedua.
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)
Funct merupakan representasi tambahan dari opcode untuk menentukan operasi
lanjut
Contoh Instruksi R-Format
• ADD $8, $9, $10 (or ADD $t0, $t1, $t2)
• Uraian masing-masing komponen:
• Opcode = 0 (berdasarkan referensi instruksi MIPS)
• Funct = 32 (berdasarkan referensi instruksi MIPS)
• RD = 8 (destinasi)
• RS = 9 (operand pertama)
• RT = 10 (operand kedua)
• Shamt = 0 (bukan shift)
PERHATIAN!
• Perhatikan bahwa untuk setiap field dapat
dipandang sebagai bilangan bulat tak bertanda 5
atau 6 bit
• Bukan sebagai two’s complement.
• Namun, nilai yang disimpan dalam register
merupakan representasi bilangan dalam bentuk
bilangan two’s complement
Contoh: Kode Mesin

Dalam heksadesimal
Latihan
• Ubah instruksi berikut kedalam bentuk kode mesin:
• ADD $10, $7, $5
• SLL $t0, $t1, 4
I-Format
opcode RS RT Immediate
6-bit 5-bit 5-bit 16-bit

Opcode (deskripsi sama dengan R-Format)

RS merupakan register sumber yang mengandung nilai yang dioperasikan

RT merupakan register tujuan tempat menyimpan hasil operasi (catatan:


perhatikan bedanya dengan instruksi R-Format!)

Immediate adalah nilai bilangan konstanta 16-bit dalam representasi two’s


complement
Contoh: Instruksi I-Format
• ADDI $21, $22, -50
• Uraian masing-masing komponen:
• Opcode = 8 (berdasarkan referensi instruksi MIPS)
• RS = 22 (operand nilai register)
• RT = 21 (destinasi)
• Immediate = -50 (secara default dalam format
desimal)
• Apakah bisa dengan representasi heksadesimal?
Contoh: Kode Mesin

Dalam heksadesimal
Latihan
• Ubah instruksi berikut kedalam bentuk kode mesin:
• LW $9, 12($8)
Bagaimana dengan BRANCH?
• Pada komputer MIPS, instruksi disimpan dalam
memori
• Jadi, instruksi juga punya alamat dalam memori!
• Perhatikan bahwa untuk panjang instruksi juga 32-
bit
• Program Counter merupakan register yang berisi
alamat dari sebuah instruksi yang sedang
dikerjakan CPU!
Branch: BNE dan BEQ
• BNE dan BEQ merupakan instruksi I-Format
• RS dan RT menypesifikasikan register yang
dibandingkan
• Apa peran field Immediate-nya?
• Immediate field hanya berukuran 16-bit
• Sedangkan alamat memori berukuran 32-bit
• Jadi, immediate field tidak dapat menyepesifikasikan
keseluruhan alamat branch!
• Kita akan menyatakan branch secara relatif terhadap
instruksi saat ini!
Ilustrasi
• Lompatan dalam If-else, while, atau for biasanya
tidak jauh!

• Jika immediate field berukuran 16-bit seberapa


jauh kita bisa melakukan branch?
Perhitungan alamat relatif
• Cara menghitung alamat branch:
• Jika kita tidak melakukan branch:
• PC = PC + 4 (alamat instruksi selanjutnya)
• Jika kita melakukan branch:
• PC = PC + 4 + (Immediate x 4)
• Perhatikan bahwa term Immediate merupakan
jumlah instruksi yang diloncati!
Contoh
• Berapa nilai immediate instruksi branch pertama?

• Ada berapa instruksi yang dilompati sampai ke label


END?
• Bagaimana representasi kode mesinnya?
Latihan
• Berapa nilai immediate untuk instruksi yang
disorot?
Panduan Jawab
Bagaimana dengan JUMP?
• BEQ dan BNE memiliki keterbatasan jangkauan
dalam lompatan instruksi
• Instruksi JUMP memungkinkan kita untuk
melakukan lompatan ke mana saja pada memori
• Secara ideal, alamat yang dispesifikasikan adalah
32-bit
• Namun kita tidak bisa mendefinisikan nilai
tersebut! Kenapa?
• Mari kita lihat jenis instruksi berikutnya!
J-Format
Opcod Target Address
e
6-bit 26-bit

Opcode (deskripsi sama dengan R-Format)

Target Address merupakan 26-bit alamat dalam program dimana kontrol


alur program akan diteruskan
Lompatan hanya 26-bit?
• Bisa dioptimasi lagi!
• Karena tiap instruksi diawali dengan alamat
berakhiran 00 (perhatikan gambar pada slide
halaman 20) kita bisa mengabaikan 2-bit ini!
• Jadi, maksimal kita bisa lompat sejauh 2^28
instruksi dalam memori. Tapi ini sudah cukup!
• Untuk jenis JUMP lainnya, terdapat instruksi JR
(jump register)!
Kembali ke instruksi J-Format
• Misal, nilai alamat PC yang baru adalah:
• 10101111111111111111111111111100 (32-bit)
• Kita mengambil target address sebagai:
• 11111111111111111111111111
• Dari bit ke-27 sampai bit ke-2 dari alamat target!
Contoh
Jenis Addressing (1)
Jenis Addressing (2)
Jenis Addressing (3)
Akhir Materi

Anda mungkin juga menyukai