INSTRUKSI
KOMPUTER
A.
Karakteristik Instruksi Mesin
Instruction
set atau set instruksi merupakan kumpulan berbagai jenis instruksi dari CPU
tertentu. Sedangkan elemen instruksi mesin merupakan setiap instruksi harus
berisi informasi
yang
dibutuhkan oleh CPU untuk eksekusi. Elemen instruksi biasanya terdiri atas :
• Kode operasi berfungsi sebagai penentu
operasi
• Sumber operan sebagai referensi data
• Hasil operand sebagai referensi data
• Instruksi selanjutnya yang akan dieksekusi (bisa diberikan
dalam instruksi saat ini atau secara
implisit diberikan - instruksi
selanjutnya setelah instruksi saat ini).
Operan
sumber dan operan hasil dapat berada di tiga bagian yaitu memori utama atau
memori virtual yang merupakan alamat yang harus diberikan ketika sebuah
instruksi dibuat. Selanjutnya yang kedua adalah register CPU baik register
eksplisit maupun implisit. Termasuk jenis
register eksplisit adalah
pada penggunaan dua
atau tiga register,
sedangkan instruksi dengan satu
register (satu instruksi operan), kemungkinan besar yang dilibatkan adalah
register implisit (biasanya untuk operasi aritmatika) akumulator secara
implisit dihubungkan sebagai
operan
hasil. Jenis operan sumber dan hasil yang kettika adalah perangkat I/O yangdigunakan
untuk instruksi I/O. Instruksi
harus menentukan perangkat I/O atau modul yang digunakan, atau pada kasus memory-mapped
I/O maka operan tujuan adalah lokasi memori lain.Sementara itu,
seperti yang dipelajari
pada mesin IAS,
instruksi biasanya diwakilidengan pernytaan-pernyataan yang
sifatnya mudah dipahami atau mudah diingat oleh manusia (mnemonik). Beberapa
contoh instruksi adalah sebagai berikut :
ADD artinya
“tambahkan”
SUB artinya “kurangkan”
DIV artinya “bagi”
MUL artinya “kalikan”
ADD R,Y, artinya tambahkan data R (operan pertama)
dan Y (operan kedua)
B.
Tipe Instruksi dan Jumlah Alamat
Tipe-tipe instruksi
pada mesin komputer
terbagi atas empat
jenis yang meliputi instruksi untuk
pengolahan data aritmatika
dan instruksi l ogika,
penyimpanan data yang merupakan instruksi memori, pergerakan
Data dari dan menuju I/O atau biasa disebut sebagai instruksi I/O,
Kontrol atau pengendalian
yang merupakan instruksi
engujian dan instruksi cabang serta aritmatika yang mampu memberikan
kemampuan komputasi. Jumlah alamat
pada instruksi menunjukkan jumlah operan
yang dapat dilibatkan dalam operasi tertentu: bisa jadi satu, dua atau tiga,
atau bahkan nol (stack machine).
Contoh
Instruction Set pada mesin DLX (Hennessy & Patterson) adalah ADD R1, R2, R3
(instruksi RR) atau ADD R1, R2, A (instrruksi RX). Kemudian, contoh lain
untuk instruksi yang melibatkan tiga alamat operan adalah sebagai
berikut. Buatlah set instruksi atau program untuk mengeksekusi persamaan Y = (A-B) / (C + D * E) dengan menggunakan tiga alamat instruksi:
Program aritmatika
diatas hanya terdiri
atas empat set
instruksi, dalam program
ini terlihat bahwa word
length untuk alamat operan
lebih panjang ketika
menggunka tiga alamat
yang terlibat sekaligus dalam setiap instruksi mesin. Sedangkan
instruksi yang melibatkan dua buah alamat untuk permasalahan yang sama yaitu Y=
(A-B) / (C + D * E) dapat dilihat pada contoh di bawah ini.
Dalam
program dengan dua alamat tersebut diatas tampak bahwa program terdiri atas
enam instruksi, dimana pada saat jumlah
alamat yang terlibat berkurang (dua
alamat, dibandingkan contoh sebelumnya tiga alamat) maka instruksi semakin
panjang. Penyelesaian persamaan Y = (A-B)/(C+D*E) dengan menggunakan satu
alamat instruksi dapat dilihat pada contoh program di bawah ini
Semakin
sedikit alamat instruksi maka program semakin panjang, tampak pada contoh di
atas dibutukan delapan baris set instruksi untuk menyeesaikan satu persoalan
yang sama dengan dua contoh sebelumnya.
Selanjutnya, persamaan Y = (A-B)/(C+D*E)
dapat diselesaikan dengan
menggunakan instruksi zero address seperti berikut.
Jumlah
set isntruksi dengan zero address paling banyak dibandingkan dengan satu, dua
atau tiga alamat. Hal
ang perlu diperhatikan
ketika membat program
dengan zero address instruction adalah
bahwa data yang
pertama di input
mauk ke stack terlebih dahulu
diikuti dengan
instruksi-instruksi
selanjutnya, sehingga ketika
peletakan instruksi tidak
pas akan mengakibatkan program
tidak berjalan sebagaimana kebutuhan.
C.
Desain set instruksi
Fakta
tentang sesain set instruksi ternyata
masih dalam perselisihan. Masalah desain yang mendasari
perselisihan tesebut meliputi
operation repertoire yang
menyangkut pembahasan
tentang sejauh mana tingkat kerumitan
sebuah instruksi, tipe
data yang menyangkut
pertanyaan apakah orang membutuhkan
semua jenis data, format instruksi yang
berkaitan dengan format
jenis tetap atau
variabel kemudian ukuran
panjang instruksi serta jumlah operan yang teribat. Dua
pembahasan yang menjadi perselisihan selanjutnya berkaitan dengan register dan pengalamatan. Pada register ukuran seerta
tujuan pemanfaatanya masih diperdebatkan termasuk
pada pengalamatan tentang
berapa banyak pengalamatan
yang dibutuhkan beserta mode pengalamatannya. Sementara itu hal lain
yang perlu diperhatikan dalam desain instruksi adalah tipe-tipe operan
yang terlibat pada sebuah set instruksi. Instruksi mesin bekerja
pada data dengan
kategori data yang
paling penting adalah
alamat, angka, karakter serta
data logika. Angka yang ada pada set
instruksi mesin bisa dalam bentuk integer, fixed point
atau floating point
maupun des imal . Sedangkan
karakter yang biasa
digunakandalam pengolahan data bisa dalam bentuk karakter ASCII atau
EBCDIC tergantung mesinnya
D. Format dan Mode Pengalamatan
Instruksi
dirancang untuk dapat merujuk ke berbagai lokasi di memori utama. Berbagai
teknik pengalamatan telah digunakan untuk mencapai akses tersebut. Pertukaran antara rentang alamat dan / atau
kompleksitas perhitungan alamat sangat
perlu diperhatikan. Jenis-jenis teknik pengalamatan instruksi meliputi
pengalamatan segera, langsung, tidak langsung, daftar, daftar tidak langsung,
perpindahan, tumpukan (stack). Sementara permasalahan yang ada terdiri atas flexibilty lokasi
operan, trade off
antara fleksibilitas lokasi
dan kecepatan pemrosesan. Diagram untuk berbagai mode
pengalamatan tampak pada gambar berikut.
Contoh
penulisan dari mode pengalamatan atau addressing mode adalah sebagai berikut.
• Immediate :
ADD #100 ; add 100 to Accum.
• Direct:
ADD A ; add content of addr. A to accumulator
• Indirect :
ADD @A ; content of location A is
address of operand. add content
of
loc. with that address to accum.
• Register Direct: ADD
R1 ; add content of R1 to
accumulator
• Reg. Indirect : ADD
(R1) ; add content of mem.
Location whose addr.
is
in R1 to acc.
Pengaksesan alamat
dengan displacement merupakan
metode yang "langka", namun
masih mungkin terjadi sebagaimana
contoh ini. ADD 1050 (R1) dimana alamat
dasar (asal) adalah berada di
R1 dan displacement-nya adalah
1050. Dimana dalam
instruksi dua alamat
(two address instruction), akan
terlihat seperti ADD 1050 (R1), R2 yang
artinya tambahkan data di R2 dengan data yang alamat dasarnya ada di R1 dan
displacement-nya 1050. Tiga displacement addressing yang
umum meliputi pengalamatan
relative (relative addressing),
pengalamatan register dasar (base register addressing) serta
pengindeksan (indexing). Pada pengalamatan relative, alamat operan merupakan
jumlah alamat dalam instruksi ditambah isi dari program counter (PC). Pada
pengalamatan register dasar, isi base-register ditambahkan ke alamat operan
dalam instruksi. Sedangkan pada skema pengindeksan, bidang alamat instruksi
ditambahkan ke isi register indeks untuk mendapatkan alamat memori yang tepat
(dari operan). Tiga skema alamat tersebut
membuat register untuk menunjuk
ke beberapa segmen memori tertentu dan menggunakan alamat operan dalam
instruksi sebagai displacement.