Wednesday, January 16, 2013

ASSEMBLY atau ASSEMBLER

January 16, 2013 Ade Sudaryana



Bahasa rakitan (bahasa Inggris: assembly language) adalah bahasa pemrograman komputer tingkat rendah. Bahasa assembly merupakan notasi untuk bahasa mesin yang dapat dibaca oleh manusia dan berbeda-beda tergantung dari arsitektur komputer yang digunakan.

Berbeda dengan bahasa pemrograman tingkat tinggi, bahasa assembly atau rakitan biasanya memiliki hubungan 1-1 dengan instruksi bahasa mesin. Misalnya, tiap julukan (mnemonic) yang ditulis di program dengan bahasa rakitan akan diterjemahkan menjadi tepat satu kode operasi yang dapat dimengerti langsung oleh komputer. Pada bahasa tingkat tinggi, satu perintah dapat diterjemahkan menjadi beberapa kode operasi dalam bahasa mesin. Proses pengubahan bahasa rakitan ke bahasa mesin dilakukan oleh assembler, dan proses balikannya dilakukan oleh disassembler.

Setiap arsitektur komputer memiliki bahasa mesin yang berbeda-beda sehingga bahasa rakitannya pun berbeda-beda.(dna)

Kelebihan Bahasa Assembly:
1. Ketika di-compile lebih kecil ukuran
2. Lebih efisien/hemat memori
3. Lebih cepat dieksekusi

Kesulitan Bahasa Assembly:
1. Dalam melakukan suatu pekerjaan, baris program relatif lebih panjang
    dibanding bahasa tingkat tinggi
2. Relatif lebih sulit untuk dipahami terutama jika jumlah baris sudah terlalu banyak
3. Lebih sulit dalam melakukan pekerjaan rumit, misalnya operasi matematis.


ELEMEN-ELEMEN DARI INSTRUKSI MESIN (SET INSTRUKSI)
-  Operation Code(opcode) 
    Menspesifikasikan operasi yang akan dilakukan (misalnya, ADD). Operasi 
    dispesifikasikan oleh kode biner, yang dikenal sebagai kode operasi, atau 
    opcode.
-   Source Operand Reference
    Operasi dapat mencakup satu atau lebih sumber, operand merupakan input 
    bagi operasi.
-   Result Operand Reference
    Operand yang dapat membuat hasil dari operasi.
-   Next instruction Reference
    Berfungsi untuk memberitahu CPU posisi instruksi yang berikutnya yang 
    harus diambil setelah menyelesaikan eksekusi atau instruksi.

FORMAT INSTRUKSI
Suatu instruksi terdiri dari beberapa field yang sesuai dengan elemen dalam instruksi tersebut. Layout dari suatu instruksi sering disebut sebagai Format Instruksi (Instruction Format).


JENIS – JENIS INSTRUKSI
- Data processing: Arithmetic dan  Logic Instructions
- Data storage: Memory instructions
- Data Movement: I/O instructions
- Control: Test and branch instructions

JUMLAH ALAMAT
Salah satu cara tradisional untuk menggambarkan arsitektur prosessor adalah dengan melihat jumlah alamat yang terkandung dalam setiap instruksinya.
Jumlah alamat maksimum yang mungkin diperlukan dalam sebuah instruksi :
1. Empat Alamat ( dua operand, satu hasil, satu   untuk alamat
    instruksi berikutnya)
2. Tiga Alamat (dua operand, satu hasil)
3. Dua Alamat (satu operand merangkap hasil, satunya lagi operand)
4. Satu Alamat (menggunakan accumulator untuk menyimpan 
    operand dan hasilnya)

MACAM-MACAM INSTRUKSI MENURUT JUMLAH OPERASI YANG DISPESIFIKASIKAN :
- O – Address Instruction
- 1 – Addreess Instruction.
- N – Address Instruction
- M + N – Address Instruction

OPERASI-OPERASI SET INSTRUKSI
Operasi set instruksi untuk transfer data :
• MOVE digunakan untuk memindahkan word atau blok dari source ke tujuan
• STORE digunakan untuk memindahkan word dari prosesor ke memori.
• LOAD kebalikan dari store
• EXCHANGE digunakan untuk menukar isi sumber ke tujuan.
• CLEAR / RESET digunakan untuk membersihkan word.
• SET digunakan untuk  memindahkan word 1 ke tujuan.
• PUSH : memindahkan word dari sumber ke bagian paling atas stack.
• POP : memindahkan word dari bagian paling atas sumber.

Operasi set instruksi untuk arithmetic :
• ADD : penjumlahan
• SUBTRACT : pengurangan
• MULTIPLY : perkalian
• DIVIDE : pembagian

 Operasi set instruksi untuk operasi logical :
• AND, OR, NOT, EXOR
• COMPARE untuk melakukan perbandingan logika.
• 3TEST untuk menguji kondisi.
• SHIFT : operand menggeser ke kiri atau kanan
• ROTATE : operand menggeser ke kiri atau ke kanan dengan ujung yang terjalin.

Operasi set instruksi untuk conversi :
• TRANSLATE : menterjemahkan nilai-nilai berdasarkan tabel korespodensi.
• CONVERT : mengkonversi isi suatu word dari suatu bentuk ke bentuk lainnya.

Operasi set instruksi Input / Ouput :
• INPUT : memindahkan data dari perangkat I/O tertentu ke tujuan
• OUTPUT : memindahkan data dari sumber tertentu ke perangkat I/O
• START I/O : memindahkan instruksi ke prosesor I/O untuk mengawali operasi I/O
• TEST I/O : memindahkan informasi dari sistem I/O ke tujuan

Operasi set instruksi untuk transfer control :
• JUMP (cabang) : pemindahan tidak bersyarat.
• JUMP SUBRUTIN : melompat ke alamat tertentu.
• RETURN : mengganti isi PC dan register lainnya yang berasal dari
   lokasi tertentu.
• EXECUTE : mengambil operand dari lokasi tertentu lalu mengeksekusinya
  sebagai instruksi.
• SKIP : menambah PC sehingga melompati instruksi berikutnya.
• SKIP BERSYARAT : melompat atau tidak melakukan apa-apa berdasarkan
   pada persyaratan.
• HALT : menghentikan eksekusi program.
• WAIT (HOLD) : melanjutkan eksekusi pada saat persyaratan dipenuhi.
• NO OPERATION : tidak ada operasi yang dilakukan.

CONTROL SYSTEM :  membaca atau mengubah register kontrol