Set instruksi (instruction set) adalah sekumpulan
lengkap instruksi yang dapat di mengerti oleh sebuah CPU, set instruksi sering
juga disebut sebagai bahasa mesin (machine code), karna aslinya juga berbentuk
biner kemudian dimengerti sebagai bahasa assembly, untuk konsumsi manusia
(programmer), biasanya digunakan representasi yang lebih mudah dimengerti oleh
manusia.
Sebuah instruksi terdiri dari sebuah
opcode, biasanya bersama dengan beberapa informasi tambahan seperti darimana
asal operand-operand dan kemana hasil-hasil akan ditempatkan. Subyek umum untuk
menspesifikasikan di mana operand-operand berada (yaitu, alamat-alamatnya)
disebut pengalamatan
Pada beberapa mesin, semua instruksi memiliki panjang
yang sama, pada mesin-mesin yang lain mungkin terdapat banyak panjang berbeda.
Instruksi-instruksi mungkin lebih pendek dari, memiliki panjang yang sama
seperti, atau lebih panjang dari panjang word. Membuat semua instruksi memiliki
panjang yang sama lebih muda dilakukan dan membuat pengkodean lebih mudah
tetapi sering memboroskan ruang, karena semua instruksi dengan demikian harus
sama panjang seperti instruksi yang paling panjang.
Di dalam sebuah instruksi terdapat beberapa
elemen-elemen instruksi:
- Operation code (op code)
- Source operand reference
- Result operand reference
- Xext instruction preference
Format instruksi (biner):
Missal instruksi dengan 2 alamat operand : ADD A,B A
dan B adalah suatu alamat register.
Beberapa 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 .dan lain-lain
Cakupan jenis instruksi:
Data processing : Aritmetik (ADD, SUB, dsb); Logic (AND, OR, NOT, SHR, dsb); konversidata
Data storage (memory)
: Transfer data (STOR, LOAD, MOVE, dsb)
Data movement : Input dan Output ke modul I/O
Program flow control : JUMP, HALT, dsb.
Bentuk instruksi:
-
Format
instruksi 3 alamat
Mempunyai
bentuk umum seperti : [OPCODE][AH],[AO1],[AO2]. Terdiri dari satu alamt hasil,
dan dua alamat operand, misal SUB Y,A,B Yang mempunyai arti dalam bentuk
algoritmik : Y := A – B dan arti dalam bentuk penjelasan : kurangkan isi reg a
dengan isi reg B, kemudian simpan hasilnya di reg Y. bentuk bentuk pada format
ini tidak umum digunakan di dalam computer, tetapi tidak dimungkinkan ada
pengunaanya, dalam peongoprasianya banyak register sekaligus dan program lebih
pendek.
Contoh:
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
Memerlukan 4 operasi
-
Format
instruksi 2 alamat
Mempunyai bentuk umum :
[OPCODE][AH],[AO]. Terdiri dari satu alamat hasil merangkap operand, satu
alamat operand, missal : SUB Y,B yang mempunyai arti dalam algoritmik : Y:= Y –
B dan arti dalam bentuk penjelasan : kurangkan isi reg Y dengan isi reg B,
kemudian simpan hasillnya di reg Y. bentuk bentuk format ini masih digunakan di
computer sekarang, untuk mengoprasikan lebih sedikit register, tapi panjang
program tidak bertambah terlalu banyak.
Contoh :
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
Memerlukan 6 operasi
-
Format
instruksi 1 alamat
Mempunyai bentuk umum : [OPCODE][AO]. Terdiri dari satu alamat operand,
hasil disimpan di accumulator, missal : SUB B yang mempunyai arti dalam
algoritmik : AC:= AC – B dan arti dalam bentuk penjelasan : kurangkan isi Acc
dengan isi reg B, kemudian simpan hasillnya di reg Acc. bentuk bentuk format
ini masih digunakan di computer jaman dahulu, untuk mengoprasikan di perlukan
satu register, tapi panjang program
semakin bertambah.
Contoh :
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
Memerlukan 8 operasi
-
Format
instruksi
0
alamat
Mempunyai bentuk
umum : [OPCODE]. Terdiri dari semua alamat operand implicit, disimpan dalam
bentuk stack. Operasi yang biasanya membutuhkan 2 operand, akan mengambil isi
stack paling atas dan dibawahnya missal : SUB yang mempunyai arti dalam
algoritmik : S[top]:=S[top-1]-S[top] dan
arti dalam bentuk penjelasan : kurangkan isi stack no2 dari atas dengan isi
stack paling atas, kemudian simpan hasilnya di stack paling atas, untuk
mengoprasikan ada beberapa instruksi khusus stack PUSH dan POP.
Contoh :
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]
Memerlukan 10 operasi
Set instruksi
pada CISC:
Berikut ini
merupakan karakteristik set instruksi yang digunakan pada beberapa computer
yang memiliki arsitektur CISC
Perbandingan set instruksi
Beberapa computer CISC (Complex Instruction Set
Computer) menggunakan cara implist dalam menentukan mode addressing pada setiap
set instruksinya. Penentuan mode addressing dengan cara implicit memiliki arti
bahwa pada set instruksi tidak di ada bagian yang menyatakan tipe dari mode
addressing yang digunakan, deklarasi dari mode addressing itu berada menyatu
dengan opcode. Lain hal nya dengan cara imsplisit, cara eksplisit sengaja
menyediakan tempat pada set instruksi untuk mendeklarasikan tipe mode
addressing. Pada cara eksplisit deklarasi opcode dan mode addressing berada
terpisah.
Data pada tempat deklarasi mode addressing diperoleh
dari logaritma basis dua jumlah mode addressing. Jika deklarasi mode addressing
dilakukan secara implicit akan menghemat tempat dalam set instruksi paling
tidak satu bit untuk IBM 3090 dan 6 bit untuk MC68040. Perubahan satu bit pada
set instruksi akan memberikan jangkauan alamat memori lebih luas mengingat
range memori dinyatakan oleh bilangan berpangkat dua.
Implementasi
hardware
Setiap set instruksi yang berbeda membutuhkan
perangkat hardware yang berbeda pula. Hal ini terjadi karena set instruksi yang
berbeda menyimpan informasi yang berbeda sehingga dibutuuhkan hardware yang
berbeda untuk mengubah set instruksi tersebut ke bentuk sinyal-sinyal control.
Untuk mendapatkan opcode berikutnya prosesor harus
mengetahui letak dari opcode tersebut secara pasti pada memory. Karena tipe
dari mode addressing sangat mempengaruhi posisi dari operand, maka secara tidak
langsung mode addressing mempengaruhi letak opcode selanjutnya. Sehingga dapat
disimpulkan kedua cara pendeklarasian mode addressing tersebut turut
mempengaruhi arsitektur hardware dari computer.
Pengalamatan
Program biasanya ditulis dalam bahasa tingkat tinggi,
yang memunkinkan program untuk menggunakan konstanta, variable local dan
global, pointer, dan array. Pada saat mentranslasi program bahsa tingkat tinggi
menjadi bahsa assembly, compiler harus mampu mengimplimentasi konstruksi ini
menggunakan fasilitas yang disediakan dalam set instruksi computer dimana
program akan dijalankan. cara yang berbeda dalam menentukan lokasi suatu
operand ditetapkan dalam suatu instruksi yang disebut sebagai mode
pengalamatan.
Implementasi
variable dan konstanta
Variable dan konstanta adalah tipe data yang paling
sederhana dan terdapat dalam hampir setiap program computer. Dalam bahasa
assembley, suatu variable dinyatakan dengan mengalokasikan suatu register atau
lokasi memori untuk menyimpan nilainya. Sehingga nilai tersebut dapat diubah
seperlunya menggunakan instruksi sesuai.
Kita mengakses operand dengan menetapkan nama register
atau alamat lokasi memori tempat operand berada. Definisi yang presisi dari dua
mode tersebut adalah:
a) Mode register operand adalah isi register prosesor,
nama alamat register dinyatakan dalam instruksi tersebut.
b) Mode absolute
operand adalah lokasi memori, alamat lokasi dinyatakan secara eksplisit didalam
instruksi tersebut. (pada bebrapa bahasa assembly, mode ini disebut direct).
c) Mode immediate operand dinyatakan secara eksplisit
dalam instruksi, misalnya, instruksi Move 200 immediete, RO.
Indirection dan pointer
Pada mode
pengalamatan berikutnya, instruksi tidak menyatakana operand atau alamatnya
secara eksplisit. Sebaliknya, instruksi menyediakan informasi dari nama alamat
memori suatu operand dapat ditetapkan. Kita menyebut alamat ini sebagai
effective address (EA) suatu operand.
Selain
kesederhanaanya yang tampak jelas, pengalamatan indirect melalui memori telah
terbukti memiliki keterbatasan pengunaan sebagai mode pengalamatan, dan jarang
di gunakan dalam computer modern, pengalamatan indirect melalui register
digunakan secara luas. Maka pengalamatan indirect melalui register memungkinkan
untuk mengakses variable global dengan terlebih dahulu me-load alamat operand
dalam suatu register.
Secara umum teknik
addressing yang sering dilakukan adalah:
1. Immediate addressing
Operand (data yang akan dikomputasi) berada langsung pada set instruksi.
2. Direct Addressing
Operand berada pada memori, set instruksi memegang alamat lokasi memori dimana
operand tersebut berada.
3. Indirect Addresing
Operand berada pada memori, untuk mendapatkan operand ini CPU harus melakukan
penelusuran dua kali yaitu dari data alamat memori yang ada pada set instruksi
serta alamat yang ditunjuk oleh alamat memori yang diperoleh dari set instruksi
tadi.
4. Register addressing
Operand berada pada register, cara kerjanya mirip dengan direct addressing
hanya saja CPU mengakses alamat register bukan alamat memori.
5. Register Indirect Addressing
Operand berada pada memori, untuk mendapatkan operand CPU harus mengakses
register terlebih dahulu karena informasi lokasi operand berada pada register.
6. Displacement
Operand berada pada memori, cara kerjanya merupakan gabungan dari teknik direct
addressing dan register indirect addressing.
7. Stack
Operand berada pada stack, operand
secara berkala dimasukan ke stack sehingga ketika
operand dibutuhkan maka
operand sudah berada pada “top of the stack”.
Teknik pengalamatan tersebut harus dapat memenuhi
kebutuhan komputasi yang dilakukan oleh computer yang secara garis besar dapat
dibagi kedalam tiga kategori yaitu:
- Operasi load (memasukan
data).
- Operasi branch
(percabangan).
- Operasi aritmatik dan logika.
Referensi
: http://www.4shared.com/office/KVurIFSK/SET_INSTRUKSI_MODUS_PENGALAMAT.html