Elemen Instruksi Mesin
- Operation code (opcode) : menspesifikasikan operasi yang akan dilakukan, kode operasi berbentuk kode biner.
- Source operand reference : operasi dapat berasal lebih dari satu sumber, operan adalah input operasi.
- Result operand reference : hasil atau keluaran operasi
- Next instruction reference : menginformasikan kepada CPU posisi instruksi berikutnya yang harus diambil dan dieksekusi.
Representasi Instruksi
Instruksi komputer direpresentasikan oleh sekumpulan bit. Instruksi dibagi menjadi beberapa field. Field-field tersebut diisi oleh elemen-elemen instruksi yang membawa informasi bagi operasi CPU. Layout instruksi dikenal dengan format instruksi.
Perancangan set instruksi banyak berpengaruh pada aspek lain dalam arsitektur komputer. Set instruksi merupakan alat bagi programmer untuk mengontrol kerja CPU serta menentukan banyak fungsi yang harus dilakukan CPU.
Format Instruksi
Kode operasi (opcode) direpresentasikan dengan singkatan-singkatan, yang disebut mnemonic. Mnemonic mengindikasikan suatu operasi bagi CPU. Contoh mnemonic :
ADD = penambahan
SUB = pengurangan
LOAD = muatkan data ke memori
Operand dari Operasi
Berdasarkan sumbernya, operand suatu operasi dapat berada pada salah satu dari ketiga daerah berikut :
- Memori utama atau memori virtual
- Register CPU
- Perangkat I/O
Contoh representasi operand secara simbolik (bahasa mesin) :
ADD X, Y artinya : tambahkan nilai yang berada pada lokasi Y ke isi register X, dan simpan hasilnya di register X.
Setiap opcode simbolik memiliki representasi biner yang tetap dan programmer dapat menetapkan lokasi masing-masing operand.
Contoh suatu ekspresi bilangan :
X = X + Y;
X dan Y berkorespondensi dengan lokasi 210 dan 211
Pernyataan dalam bahasa tingkat tinggi tersebut menginstruksikan komputer untuk melakukan langkah berikut :
1. Muatkan sebuah register dengan isi lokasi memori 210
2. Tambahkan isi lokasi memori 211 ke register
3. Simpan isi register ke lokasi memori 210
Terlihat hubungan antara ekspresi bahasa tingkat tinggi dengan bahasa mesin. Dalam bahasa tingkat tinggi, operasi dinyatakan dalam bentuk aljabar singkat menggunakan variabel. Dalam bahasa mesin hal tersebut diekspresikan dalam operasi perpindahan antar register.
Kumpulan Set Instruksi
1. Pengolahan Data (Data Processing)
Meliputi operasi-operasi aritmatika (komputasi untuk pengolahan data numerik) dan logika (beroperasi terhadap bit-bit).
2. Perpindahan Data (Data Movement)
Berisi instruksi perpindahan data antar register maupun modul I/O. Untuk dapat diolah oleh CPU maka diperlukan instruksi-instruksi yang bertugas memindahkan data operand yang diperlukan.
3. Penyimpanan Data (Data Storage)
Berisi instruksi penyimpanan ke memori. Data yang disimpan akan digunakan untuk operasi berikutnya, minimal untuk ditampilkan pada layar harus diadakan penyimpanan walaupun sementara.
4. Kontrol Aliran Program (Program Flow Control)
Berisi instruksi pengontrolan operasi dan pencabangan. Instruksi ini berguna untuk pengontrolan status dan mengoperasikan pencabangan ke set instruksi lain.
Jumlah Alamat
Jumlah register atau alamat yang digunakan dalam operasi CPU tergantung format operasi masing-masing CPU.
Contoh penggunaan set instruksi dengan alamat 1, 2, dan 3 untuk menyelesaikan operasi hitungan :
Y = (A - B) / (C + D * E)
Instruksi 3 alamat :
Instruksi
|
Komentar
|
|
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
|
Instruksi 2 alamat :
Instruksi
|
Komentar
|
|
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
|
Instruksi 1 alamat :
Menggunakan register akumulator (AC).
Instruksi
|
Komentar
|
|
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
|
Instruksi 0 alamat :
Instruksi
|
Keterangan
|
Isi Stack
|
PUSH
|
B
|
B
|
PUSH
|
A
|
B, A
|
SUB
|
A - B
|
(A - B)
|
PUSH
|
E
|
(A - B), E
|
PUSH
|
D
|
(A - B), E, D
|
MPY
|
D * E
|
(A - B), (D * E)
|
PUSH
|
C
|
(A - B), (D * E), C
|
ADD
|
C + (D * E)
|
(A - B), (C + D * E)
|
DIV
|
(A - B) / (C + (D * E))
|
(A - B) / (C + (D * E))
|
Operasi Set Instruksi Secara Umum
Jenis
|
Nama
Operasi
|
Keterangan
|
Pemindahan Data
|
Move
|
Memindahkan word atau blok dari sumber ke tujuan
|
Store
|
Memindahkan word dari prosesor ke memori
|
|
Load
|
Memindahkan word dari memori ke prosesor
|
|
Exchange
|
Menukar isi sumber dengan tujuan
|
|
Clear (reset)
|
Memindahkan word 0 ke tujuan
|
|
Set
|
Memindahkan word 1 ke tujuan
|
|
Push
|
Memindahkan word dari sumber ke bagian paling atas stack
|
|
Pop
|
Memindahkan word dari stack teratas ke tujuan
|
|
Logika
|
AND
|
Melakukan operasi logika tertentu terhadap bit
|
OR
|
||
NOT
|
||
Exclusive-OR
|
||
Test
|
Menguji kondisi tertentu
|
|
Compare
|
Membandingkan 2 operand (secara logika maupun aritmatika)
|
|
Set Variabel Kontrol
|
Menyetel kontrol bagi keperluan proteksi, interrupt, kontrol timer
|
|
Shift
|
Melakukan penggeseran bit-bit operand
|
|
Rotate
|
Melakukan pemutaran nit-bit operand
|
|
Pemindahan Kontrol
|
Jump (cabang)
|
Perpindahan tidak bersyarat, memuatkan PC dengan alamat tertentu
|
Jump bersyarat
|
Menguji persyaratan tertentu, melakukan aktivitas berdasarkan
persyaratannya
|
|
Jump ke subrutin
|
Menempatkan informasi data kontrol program saat itu di lokasi yang
ditentukan, melompat ke alamat tertentu
|
|
Return
|
Mengganti isi PC dan register lainnya yang berasal dari lokasi
tertentu
|
|
Execute
|
Mengambil operand dari lokasi tertentu dan mengeksekusinya sebagai
instruksi
|
|
Skip
|
Menambah PC sehingga melompati instruksi berikutnya
|
|
Skip bersyarat
|
Melompat berdasarkan syarat tertentu
|
|
Halt
|
Menghentikan eksekusi program
|
|
Wait (hold)
|
Menghentikan eksekusi program dan menguji persyaratan
|
|
No operation
|
Tidak ada operasi yang dilakukan, namun eksekusi program dilanjutkan
|
|
Input/Output
|
Input (read)
|
Memindahkan data dari port I/O ke tujuan
|
Output (write)
|
Memindahkan data dari prosesor ke port atau modul I/O
|
|
Start I/O
|
Memindahkan instruksi ke prosesor I/O untuk memulai proses I/O
|
|
Test I/O
|
Memindahkan informasi status dari sistem I/O ke tujuan
|
|
Konversi
|
Translate
|
Menerjemahkan nilai-nilai dalam suatu bagian memori berdasarkan tebel
korespondensi
|
Convert
|
Mengkonversi isi word ke bentuk lain
|
No comments:
Post a Comment