Jumat, 06 Januari 2017

Jenis Operasi pada asembler





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 branchskip, 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.

 

Tidak ada komentar:

Posting Komentar