SET Instruksi
Apa
set instruksi itu?
Set instruksi (instruction set): sekumpulan lengkap instruksi yang
dapat dimengerti oleh sebuah CPU
Disebut juga machine code (bahasa mesin), aslinya juga berbentuk
biner à bahasa assembly
Untuk konsumsi manusia (programmer), biasanya digunakan representasi
yang lebih mudah dimengerti à bahasa yang dapat dimengerti
manusia
Elemen-elemen
Instruksi
Operation code (Op code)
Kerjakan ini
Source Operand reference
Terhadap isi alamat ini
Result Operand reference
Letakkan hasilnya di alamat ini
Next Instruction Reference
Kalau sudah selesai, selanjutnya kerjakan alamat ini
Dalam sebuah instruksi, tidak harus semua
elemen ini dicantumkan, tergantung kebutuhan dan jenis instruksinya
Ke
mana operand disimpan?
Ingat: Semua instruksi dijalankan dalam CPU
Rata-rata operasi hanya membutuhkan register sebagai tempat membaca
/ menyimpan operand
Adakalanya juga register tidak berisi operand tapi menunjuk ke
tempat penyimpanan lainnya (memory, cache, modul I/O
Representasi
Instruksi
Pada bahasa mesin, setiap instruksi berbentuk pola bit biner yang
unik
Agar dapat dimengerti manusia, dibuatlah representasi simbolik
instruksi, biasanya berupa singkatan (disebut mnemonic)
misal ADD, SUB, LOAD
Sedangkan alamat operand direpresentasikan sebagai berikut:
ADD A,B
Ada beberapa jenis representasi instruksi, tergantung dari jumlah
alamat operand yang bisa diolah oleh satu instruksi
Contoh Simbolik Instruksi
ADD: Add (Jumlahkan)
SUB: Subtract (Kurangkan)
MPY/MUL: Multiply (Kalikan)
DIV: Divide (Bagi)
LOAD: Load data dari register/memory
STOR: Simpan data ke register/memory
MOVE: pindahkan data dari satu tempat ke
tempat lain
SHR: shift kanan data
SHL: shift kiri data
Cakupan Jenis Instruksi
Data processing: Aritmetik (ADD, SUB, dsb); Logic (AND, OR, NOT,
SHR, dsb); konversi data
Data storage (memory): Transfer data (STOR, LOAD, MOVE, dsb)
Data movement: Input dan Output ke modul I/O
Program flow control: JUMP, HALT, dsb.
Format Instruksi 3 Alamat
Bentuk umum: [OPCODE] [AH], [AO1], [AO2]
Satu alamat hasil, dua alamat operand
Misal: SUB Y, A, B
-
Bentuk algoritmik: Y à A – B
-
Arti: Kurangkan isi Reg A dengan isi Reg B, kemudian simpan hasilnya di Reg Y.
Bentuk ini tidak umum digunakan di komputer
Mengoperasikan banyak register sekaligus
Program lebih pendek
Format Instruksi 2 Alamat
Bentuk umum: [OPCODE] [AH], [AO]
Satu alamat hasil merangkap operand, satu alamat operand
Misal: SUB Y, B
-
Bentuk algoritmik: Y à Y – B
-
Arti: Kurangkan isi Reg Y dengan isi Reg B,
kemudian simpan hasilnya di Reg Y.
Bentuk ini masih digunakan di komputer sekarang
Mengoperasikan lebih sedikit register, tapi panjang program tidak
bertambah terlalu banyak
Format Instruksi 1 Alamat
Bentuk umum: [OPCODE] [AO]
Satu alamat operand, hasil disimpan di accumulator
Misal: SUB B
-
Bentuk algoritmik: AC ß AC – B
-
Arti: Kurangkan isi Acc. dengan isi Reg B,
kemudian simpan hasilnya di Acc.
Bentuk ini digunakan di komputer jaman dahulu
Hanya mengoperasikan satu register, tapi program menjadi bertambah
panjang
Format Instruksi 0 Alamat
Bentuk umum: [OPCODE]
Semua alamat operand implisit, disimpan dalam bentuk stack. Operasi
yang biasanya membutuhkan 2 operand, akan mengambil isi stack paling atas dan
di bawahnya
Misal: SUB
-
Bentuk algoritmik: S[top] à S[top-1] – S[top]
-
Arti: Kurangkan isi Stack no.2 dari atas dengan isi Stack paling atas,kemudian
simpan hasilnya di Stack paling atas
Ada instruksi khusus Stack: PUSH dan POP
Contoh Format Instr 3 Alamat
A, B, C, D, E, T, Y adalah register
Program: Y = (A – B) / ( C + D × E)
SUB Y, A, B Y
ß A – B
MPY T, D, E T
ß D × E
ADD T, T, C T
ß T + C
DIV Y, Y, T Y
ß Y / T
Contoh Format Instr 2 Alamat
A, B, C, D, E, T, Y adalah register
Program: Y = (A – B) / ( C + D × E)
MOVE Y, A Y ß A
SUB Y, B Y ß Y - B
MOVE T, D T ß D
MPY T, E T ß T × E
ADD T, C T ß T + C
DIV Y, T Y ß Y / T
Contoh Format Instr 1 Alamat
A, B, C, D, E, Y adalah register
Program: Y = (A – B) / ( C + D × E)
LOAD D
AC ß D
MPY E AC ß AC × E
ADD C
AC ß AC + C
STOR Y
Y ß AC
LOAD A
AC ß A
SUB B AC
ß AC – B
DIV Y
AC ß AC / Y
STOR Y
Y ß AC
Contoh Format Instr 0 Alamat
A, B, C, D, E, Y adalah register
Program: Y = (A – B) / ( C + D × E)
PUSH A S[top]
ß A
PUSH B S[top]
ß B
SUB S[top] ß A - B
PUSH C S[top]
ß C
PUSH D S[top]
ß D
PUSH E S[top]
ß E
MPY S[top] ß D × E
ADD S[top] ß C + S[top]
DIV S[top] ß (A - B) / S[top]
POP Y Out
ß S[top]
Yang Perlu Diperhatikan
Semakin banyak register yang diolah dalam satu instruksi à semakin lambat
Semakin banyak baris operasi untuk mengeksekusi sebuah program à juga semakin lambat
Oleh karena itu, CPU masa kini bisa dikatakan menggunakan perpaduan
dari beberapa format instruksi, tergantung konteksnya
Latihan
Kerjakan
X = (A + B × C) / (D – E × F)
X = (A + B × C) *(D – E × F)
X = (A + B × C) +(D – E × F)
X = (A + B × C) - (D – E × F)
Masing-masing dengan:
Format Instruksi 3 Alamat
Format Instruksi 2 Alamat
Format Instruksi 1 Alamat
Format Instruksi 0 Alamat
Salah satu atau
salah dua dari 4 soal Latihan di atas Insya Alloh akan digunakan untuk materi
soal Ujian Tengah Semester. Silahkan gunakan waktu dan kesempatan sebelum UTS
ini untuk mempelajarinya. Ok. J
Tidak ada komentar:
Posting Komentar