JENIS OPERAND
Instruksi
mesin melakukan operasi terhadap data. Pada umumnya data dikategorikan ke dalam
angka, karakter dan data logika.
a.
Angka
Setiap
bahasa mesin mengandung tipe data numerik. Umunya terdapat tiga tipe data angka
yang ada pada komputer yaitu:
1.
Binary
integer
2.
Binary
floating point
3.
Desimal
Semua
operasi pada internal komputer berupa data biner, namun user berinteraksi
dengan bilangan desimal. Maka perlu dilakukan konversi dari desimal ke bilangan
biner pada input dan konversi dari biner ke desmimal pada output. Bilangan
desimal direpresentasikan dalam 4 bit kode biner maka 0=0000,
1=0001,...,8=1000, 9=1001. Sedangkan untuk desimal 246 = 0000 0010 0100 0110.
Untuk bilangan negatif direpresentasikan dengan 4 bit yang diletakkan pada awal
atau akhir string. Standar tanda yang digunakan adalah 1100 untuk bilangan
positif dan 1101 untuk tanda bilangan negatif.
b.
Karakter
Umumnya
bentuk data adalah teks atau kumpulan karakter. Sedangkan sistem komputer
didesain untuk data biner. Maka sejumlah kode dalam urutan bit perlu di
tentukan untuk merepresentasikan sebuah karakter. Saat ini standar kode yang
digunakan untuk merepresentasikan karakter adalah American Standart Code for Information Interchange (ASCII). Setiap
karakter pada kode ASCII direpresentasikan dengan 7 bit biner yang unik. Maka
terdapat 128 karakter yang berbeda yang dapat direpresentasikan. Selain itu
juga ada yang menggunakan Extended Binary
Coded Decimal Interchange Code (EBCDIC) yang digunakan oleh IBM mainframe.
c.
Data logika
Pada
umumnya setiap word atau yang lain merupakan satu unit data yang masing masing
unit data memiliki nilai 0 atau 1. Ketika dipandang dengan cara ini, maka data
tersebut dianggap sebagai data logika. Data logika hanya bernilai true “1” atau false “0”.
JENIS OPERASI
Jumlah
opcode dari
sebuah mesin ke mesin lain beragam. Akan tetapi tipe operasi-operasi umum akan
sama untuk semua mesin. Berikut
dikategorikan operasi berdasarkan fungsi dan tipenya:
a. Transfer
data
b. Aritmatikaa
c. Logika
d. Konversi
e. Input/output
f. Kendali
sistem
g. Kendali transfer
Tabel 1. Contoh Instruksi Umum Pada CPU
No
|
Tipe
|
Instruksi
|
|
Nama
|
Aksi
|
||
1
|
Transfer data
|
MOVE
|
Mentransfer
data dari lokasi sumber ke lokasi tujuan
|
LOAD
|
Mentransfer
data dari lokasi memori ke register CPU
|
||
STORE
|
Mentransfer
data dari register CPU ke lokasi memori
|
||
PUSH
|
Mentransfer
data dari sumber ke stack
|
||
POP
|
Mentransfer
data dari stack ke tujuan
|
||
XCHG
|
Saling menukar
isi sumber dan tujuan
|
||
CLEAR
|
Me-reset tujuan
dengan semua bit ‘0’
|
||
SET
|
Mengeset tujuan
dengan semua bit ‘1’
|
||
2
|
Aritmatika
|
ADD
|
Penjumlahan,
hitung jumlah dari 2 operan
|
SUB
|
Pengurangan,
hitung selisih dari 2 operan
|
||
MUL
|
Perkalian,
hitung hasil kali dari 2 operan
|
||
DIV
|
Pembagian,
hitung hasil bagi dari 2 operan
|
||
NEG
|
Negasi, ganti
tanda operan
|
||
INC
|
Tambahkan 1
pada operan
|
||
DEC
|
Kurangkan 1
dari operan
|
||
SHIFT A
|
Geser operan
(kekiri atau kekanan) dengan tanda
|
||
3
|
Logika
|
NOT
|
Komplemenkan
(komplemen 1) operan
|
OR
|
Lakukan operasi
logika OR pada operan
|
||
AND
|
Lakukan operasi
logika AND pada operan
|
||
XOR
|
Lakukan operasi
logika XOR pada operan
|
||
SHIFT
|
Geser operan
(kekiri atau kekanan), isi nilai pada ujung bit
|
||
ROT
|
Geser operan
(kekiri atau kekanan) dengan berputar
|
||
TEST
|
Uji kondisi
yang ditetapkan dan pengaruhi flag yang sesuai
|
||
4
|
Kendali
Transfer
|
JUMP
|
Perpindahan tak
bersyarat, masukkan alamat yang ditetapkan ke PC
|
JUMPIF
|
Perpindahan
bersyarat, masukkan alamat yang ditetapkan ke PC jika kondisi terpenuhi
|
||
JUMPSUB
|
CALL, simpan
‘status program control’ yang sekarang, pindah kealamat yang ditetukan ke PC
|
||
RET
|
RETURN, restore
‘status program control’ dari stack ke PC dan register/flag yang relevan
lainnya
|
||
5
|
Input/Output
|
IN (read)
|
Mentransfer
data dari perangkat atau port i/o yang ditentukan ke tujuan (memori utama
atau register)
|
|
|
OUT (write)
|
Mentransfer
data dari sumber yang ditentukan ke perangkat atau port i/o
|
|
|
START I/O
|
Mentransfer
instruksi ke prosesor i/o untuk menginisiasi operasi i/o
|
|
|
TEST I/O
|
Mentransfer
informasi status dari sistem i/o ke instruksi yang ditentukan
|
6
|
Konversi
|
TRANSLATE
|
Menterjemahkan
nilai-nilai dalam suatu bagian memori berdasarkan tabel korespodensi
|
|
|
CONVERT
|
Mengkonversi
isi suatu word dari suatu bentuk ke bentuk lainnya (contoh decimal ke biner)
|
a. Transfer data
Tipe instruksi
mesin yang paling dasar yaitu instruksi transfer data. Pada instruksi transfer
dataharus ditentukan beberapa hal. Pertama, penentuan lokasi sumber dan tujuan
dari operan.Lokasinya dapat terletak di memori, register atau stack. Kedua,
panjang data yang akan ditransfer harus diketahui. Ketiga, sama untuk semua
instruksi dengan operan, cara pengalamatannya harus ditentukan.
Dari sisi aksi
prosesor, operasi transfer data mungkin merupakan tipe yang paling sederhana.
Jika kedua-duanya baik sumber maupun tujuan adalah register, maka prosesor hanya menyebabkan data dipindahkan
dari satu register ke register lain (operasi internal prosesor). Jika salah
satu atau kedua operan berada dalam memori, maka prosesor harus melakukan
beberapa atau semua tindakan berikut:
1. Menghitung
alamat memori, berdasarkan mode pengalamatan ( dibahas di bagian selanjutnya)
2. Jika
alamat mengacu pada virtual memori, menerjemahkan dari alamat memori virtual ke
alamat memori sebenarnya/fisik.
3. Menentukan
apakah operan yang dituju ada di dalam chace
4. Jika
tidak, berikan perintah ke modul memori.
b. Aritmatika
Kebanyakan
mesin menyediakan operasi aritmatika / perhitungan dasar sepertitambah, kurang,kali dan bagi. Dimana
operasi tersebut disediakan untuk menangani bilanganinteger bertanda
(fixed-point), juga bilangan floating point atau desimal. Berikut contoh lain
operasi yang termasuk jenis instruksi dengan satu operan:
·
Absolute : mengambil nilai absolut/mutlak dari
operan
·
Negate : menegasikan operan
·
Increment: menambahkan 1 nilai ke operan
·
Decrement: mengurangi 1 nilai dari operan
Eksekusi
instruksi aritmatika dapat melibatkan operasi transfer data untuk menempatkan
operan dari input ke ALU, dan untuk mengantarkan output dari ALU.
c. Logika
Kebanyakan
mesin juga menyediakan berbagai operasi untuk memanipulasi setiap bit dari
sebuah word atau unit (yang dapat diberi alamat) lainnya, operasi ini juga di
sebut "bit twiddling". Bit-bit tersebut didasarkan pada operasi
boolean. Beberapa operasi logika dasar dapat dilakukan pada data boolean atau
biner yang ditunjukkan pada tabel berikut.
Tabel 2. Contoh Operasi Logika Dasar
Operasi-operasi
logika dapat diterapkan pada bitwise ke n-bit unit data. Dengan demikian, jika
dua register berisi data
(R1) = 10100101
(R2) = 00001111
Kemudian
(R1) AND (R2) = 0000101
Selain operasi
logika bitwise, kebanyakan mesin menyediakan berbagai fungsi pergeseran dan
perputaran.Operasi yang paling dasar digambarkan pada gambar dibawah.Dengan logika pergeseran, setiap bit dari word akan di
geser ke kiri atau ke kanan. Pada salah satu ujungnya, bit yang bergeser keluar
akan hilang. Pada ujung lainnya, nilai ‘0’ digeser masuk.Pergeseran logis
berguna terutama untuk mengisolasi bagian dalam sebuah word.Nilai ‘0’ yang
digeser kedalam sebuah word menggantikan informasi yang tidak diinginkan yang
digeser dari ujung lainnya.
Gambar 1. Operasi Pergeseran dan Perputaran
Operasi
pergeseran aritmatika menangani data sebagai integer bertanda dan tidak
menggeser bit tanda. Pada pergeseran aritmatika ke kanan, bit tanda disalin
pada bit yang berada dikanannya. Pada pergeseran aritmatika ke kiri, pergeseran
logika kiri dilakukan pada semua bit kecuali bit tanda tetap ditahan. Operasi
ini dapat mempercepat operasi aritmatikaa tertentu.
Rotate, atau
pergeseran memutar, operasi ini menjaga seluruh bit dioperasikan. Salah satu
penggunaan dari rotasi yaitu membawa setiap bit berturut-turut ke bit paling
kiri, dimana itu dapat diidentifikasi dengan menguji tanda dari data
(diperlakukan sebagai angka). Sama dengan operasi aritmatikaa, operasi logika
melibatkan aktifitas ALU dan mungkin melibatkan operasi transfer data.
d. Konversi
Instruksi
konversi adalah instruksi-instruksi yang mengubah format atau beroperasi pada
format data.Contohnya yaitu mengkonversi dari desimal ke biner.
e. Input/Output
Seperti yang
kita ketahui, ada beberapa pendekatan I/O yang bisa diambil, diantaranya
programmed I/O (isolated&memory mapped), DMA, dan penggunaan prosesor I/O. Implementasi
instruksi I/O banyak dilakukan dengan hanya menyediakan beberapa instruksi I/O,
dengan tindakan spesifik yang ditentukan oleh parameter, kode, atau kata
perintah.
f. Kendali Sistem
Instruksi
kendali sistem adalah instruksi yang dapat dieksekusi hanya ketika prosesor
dalam keadaan tertentu atau mengeksekusi program pada area khusus dalam
memori.Biasanya, instruksi ini dipesan untuk digunakan sistem operasi.Berikut
beberapa contoh operasi kendali sistem. Sebuah instruksi kendali sistem boleh
membaca atau mengubah kendali register. Contoh lainnya adalah instruksi untuk
membaca atau memodifikasi penyimpanan protection key, seperti yang digunakan
pada sistem memori EAS/390. Contoh lain adalah akses untuk memproses blok
kontrol dalam sistem multiprogramming.
g. Kendali Transfer
Untuk semua
tipe operasi yang sudah dibahas sejauh ini, instruksi selanjutnya yang akan
dibahas tepat setelah ini, pada memori, adalah kendali transfer. Namun, pecahan
yang signifikan dari instruksi dalam setiap program memiliki fungsi mengubah
urutan eksekusi instruksi. Untuk instruksi ini, operasi yang dilakukan oleh
prosesor
Beberapa hal
yang perlu diperhatikan yaitu:
1. Dalam
praktek penggunaan komputer, sebenarnya kita mengeksekusi tiap instruksi lebih
dari sekali dan mungkin ribuan kali. Ini membutuhkan ribuan atau bahkan jutaan
instruksi untuk mengimplementasikan aplikasi. Hal ini tidak mungkin jika tiap
instruksi harus ditulis secara terpisah. Jika tabel atau daftar item akan
diproses, dibutuhkan program looping. Satu urutan eksekusi akan dieksekusi
berulang kali untuk memproses semua data.
2. Hampir
semua program melibatkan beberapa pembuatan keputusan. Kita setuju komputer
akan melakukan sesuatu jika suatu kondisi terpenuhi, dan melakukan hal lain
jika dalam kondisi lain. Sebagai contoh, sebuah urutan instruksi mengitung akar
kuadrat dari sebuh nilai. Pada awal urutan, tanda dari nilai tersebut diuji.
Jika negatif, komputasi tidah dilakukan, tetapi kondisi eror yang akan
dilaporkan.
3. Untuk
mengubah dengan benar program yang besar atu sedang adalah tugas yang sangat
sulit. Hal ini akan lebih mudah jika ada mekanisme untuk memecah tugas-tugas
tersebut menjadi bagian-bagian kecil yang dapat dikerjakan sekali dalam satu
waktu.
Sekarang
kita akan membahas operasi transfer kendali yang ada pada set instruksi :
seperti branch, skip, dan procedurecall.
Instruksi brach (cabang) sering juga
disebut instruksi jump, memiliki
sebuah operan yang berisi alamat dari instruksi selanjutnya yang akan
dieksekusi. Instruksi ini dapat dibedakan menjadi conditional branchdan unconditional
branch. Instruksi skip digunakan
untuk melewati baris instruksi dan tidak membutuhkan alamat tujuan. Contohnya
intruksi ISZ (increment-skip-if-zero).
Instruksi procedure call digunakan
untuk pemanggilan procedure(subprogram).
Mekanisme procedure terdiri dari 2
instruksi utama : instruksi call yang
berarti melakukan percabangan ke lokasi yang menunjuk ke procedure, dan
instruksi return yang berarti kembali
dari procedure ke lokasi dimana procedure tersebut dipanggil. Kedua
instruksi tersebut menggunakan instruksi percabangan.
Terima Kasih Infonya. Sangat Membantu.
ReplyDeleteblog goblog
ReplyDeletekontol
Deleteanak tolol
Deletehai!
ReplyDeleteMantul
ReplyDelete