MODE DAN FORMAT PENGALAMATAN

- Kata Pengantar
Assalamu’alaikum wr.wb
Alhamdulillah kita panjatkan puji syukur kehadirat Allah SWT yang telah memberikan kita berbagai kenikmatan yang telah diberikan kepada kami, salah satunya ialah kenikmatan rahmat dan hidayah sehingga SAYA bisa menyelesaikan makalah yang berjudul "Mode Dan Format Pengalamatan Set Instruksi". Atas dukungan moral dan materi yang diberikan dalam penyusunan makalah ini, maka penulis mengucapkan banyak terima kasih kepada :
1. Yulinda S.Komp 
selaku guru sistem komputer kami, yang memberikan bimbingan dalam menulis makalah ini.
Penulis menyadari bahwa makalah ini belumlah sempurna. Oleh karena itu, saran dan kritik yang membangun dari rekan-rekan sangat dibutuhkan untuk penyempurnaan makalah ini.


Banjarmasin 27 september 2016
Latar Belakang
Makalah ini dibuat untuk menjelaskan tentang mode dan format pengalamatan set instruksi dan untuk memenuhi tugas mata pelajaran Sistem Komputer. Dalam makalah ini juga akan dijelaskan lebih dalam lagi mengenai mode dan format pengalamatan set instruksi.

- Set Instruksi
Set instruksi (instruction set) adalah sekumpulan lengkap instruksi yang dapat di mengerti oleh sebuah CPU, set instruksi sering juga disebut sebagai bahasa mesin (machine code), karna aslinya juga berbentuk biner kemudian dimengerti sebagai bahasa assembly, untuk konsumsi manusia (programmer), biasanya digunakan representasi yang lebih mudah dimengerti oleh manusia. Sebuah instruksi terdiri dari sebuah opcode, biasanya bersama dengan beberapa informasi tambahan seperti darimana asal operand-operand dan kemana hasil-hasil akan ditempatkan. Subyek umum untuk menspesifikasikan di mana operand-operand berada (yaitu, alamat-alamatnya) disebut pengalamatan.
Informasi yang disediakan dalam listing program menggunakan beberapa simbol untuk menentukan tipe dari numerik yang digunakan. Simbol khusus ini adalah:
1.      Tanpa simbol mengindikasikan numerik desimal. Angka ini akan diterjemahkan menjadi nilai biner sebelum disimpan dalam memori dan digunakan oleh CPU.
2.      Simbol $ mengindikasikan numerik heksadesimal, seperti $24 adalah 2416 dalam heksadesimal yang           bernilai sama dengan 36 desimal.
3.      Simbol @ mengindikasikan numerik oktal, seperti @10 bernilai sama dengan 8 desimal.
4.      Simbol % mengindikasikan numerik biner, seperti 0100 bernilai sama dengan 8 desimal.
5.      Simbol ‘ (apostrof) mengindikasikan karakter ASCII tunggal.
6.      Simbol # mengindikasikan operand langsung (immediate) dan angka 

-  Addressing Mode atau Mode Pengalamatan 
Dalam Bahasa Assembly ada yang dinamakan Mode Pengalamatan atau bahasa Inggrisnya adalah Addressing Mode, yaitu Mode pengalamatan berbagai didefinisikan dalam sebuah arsitektur set instruksi yang diberikan menentukan bagaimana instruksi bahasa mesin dalam arsitektur yang mengidentifikasi operan (operand atau) dari setiap instruksi. Sebuah mode pengalamatan menentukan bagaimana menghitung alamat memori efektif operand dengan menggunakan informasi yang dimiliki dalam register dan / atau konstanta yang terkandung dalam instruksi mesin atau tempat lain.
Mode pengalamatan adalah bagaimana cara menunjuk dan  mengalamati suatu lokasi memori pada  sebuah alamat di mana operand akan diambil. Mode pengalamatan diterapkan pada set instruksi, dimana pada umumnya instruksi terdiri dari opcode (kode operasi) dan alamat. Setiap mode pengalamatan memberikan fleksibilitas khusus yang sangat penting. Mode pengalamatan ini meliputi direct addressing dan indirect addressing.

1. Direct Addresing (EA = A)
Dalam mode pengalamatan direct addressing, harga yang akan dipakai diambil langsung dalam alamat memori lain. Contohnya: MOV A,30h. Dalam instruksi ini akan dibaca data dari RAM internal dengan alamat 30h dan kemudian disimpan dalam akumulator. Mode pengalamatan ini cukup cepat, meskipun harga yang didapat tidak langsung seperti immediate, namun cukup cepat karena disimpan dalam RAM internal. Demikian pula akan lebih mudah menggunakan mode ini daripada mode immediate karena harga yang didapat bisa dari lokasi memori yang mungkin variabel.
Kelebihan dan kekurangan dari Direct Addresing antara lain :
  Kelebihan
•         Field alamat berisi efektif address sebuah operand
•         Teknik ini banyak digunakan pada komputer lama dan komputer kecil
•         Hanya memerlukan sebuah referensi memori dan tidak memerlukan kalkulasi khusus.
  Kelemahan
•         Keterbatasan field alamat karena panjang field alamat biasanya lebih    kecil   dibandingkan panjang word.

Mode pengalamatan direct mirip dengan mode pengalamatan extended kecuali bahwa upper byte dari alamat operan selalu dianggap $00. Karena itu, hanya lower-byte dari operan yang diperlukan untuk dimasukkan dalam instruksi. Pengalamatan direct menyebabkan efisiensi alamat dalam 256 byte pertama dalam memori. Area ini dinamakan dengan direct page dan mengandung on-chip RAM dan register I/O. Pengalamatan direct ini efisien bagi memori program dan waktu eksekusi. Dalam mode ini instruksi terdiri dari dua byte, satu untuk kode operasi dan satu lagi untuk alamat operan.Kekuatan utama dari setiap komputer terletak pada kemampuannya dalam mengakses memori. Mode pengalamatan dari CPU menyediakan kemampuan ini. Mode pengalamatan mempunyai pengertian bagaimana suatu instruksi akan mendpatkan data yang diperlukannya dalam eksekusi. Karena ada beberap a macam mode pengalamatan yang berbeda, suatu instruksi dapat mengakses operan dalam satu atau beberapa cara yang berbeda. Setiap variasi mode pengalamatan dari suatu instruksi harus memiliki kode operasi (op-code) yang unik, sehingga 62 instruksi dasar mikrokontroler M68HC05 membutuhkan setidaknya 210 kode operasi dari instruksi-instruksinya.
CPU M68HC05 menggunakan enam mode pengalamatan. Mode pengalamatan ini adalah inherent, immediate, extended, direct, indexed, dan relative. Dalam mikrokontroler M68HC05 yang terkecil, semua variabel program dan register I/O cukup dalam area $0000 sampai $00FF di memori sehingga mode pengalamatan yang digunakan adalah direct addressing mode.
Mode pengalamatan direct mirip dengan mode pengalamatan extended kecuali bahwa upper byte dari alamat operan selalu dianggap $00. Karena itu, hanya lower-byte dari operan yang diperlukan untuk dimasukkan dalam instruksi. Pengalamatan direct menyebabkan efisiensi alamat dalam 256 byte pertama dalam memori. Area ini dinamakan dengan direct page dan mengandung on-chip RAM dan register I/O. Pengalamatan direct ini efisien bagi memori program dan waktu eksekusi. Dalam mode ini instruksi terdiri dari dua byte, satu untuk kode operasi dan satu lagi untuk alamat operan. Contoh: 0200 B6 E0 LDA $E0.
Pertama CPU akan membaca kode operasi $B6 yang menginstruksikan CPU untuk menggunakan mode pengalamatan direct. Kemudian CPU membaca $E0 dari lokasi memori dengan alamat $0201. Harga $E0 ini diterjemahkan sebagai low-order dari alamat dalam direct page ($0000 sampai $00FF). Setelah itu CPU menyusun alamat lengkap $00E0 dengan menganggap high-order byte alamat sebagai $00. Alamat lengkap $00E0 ini kemudian diletakkan dalam bus alamat dan kemudian proses pembacaan data pun dikerjakan. Tabel 5.4 menampilkan semua instrusi yang bisa dikerjakan dengan mode pengalamatan.

ADD ; A tambahkan isi pada lokasi alamat A ke Akumulator

Register Direct Addresing
              Suatu proses penyalinan data (bisa byte atau word) dari register ke register atau ke suatu lokasi memori. Proses tersebut harus menggunakan dua buah operand yang berukuran sama, misalnya AX dan BX, AL dan BH (tapi ada beberapa instruksi tertentu yang dikecualikan, misalnya : SHL DX,CL
Contoh :
MOVAX,BX
untuk operasi 16 bit data (word)
MOV AL,BL
untuk operasi 8 bit data (byte)
Perlu diwaspadai bahwa ada beberapa penyalinan data yang terlarang pada pengalamatan ini. Misalnya instruksi MOV pada register segmen ke register segmen (SS, CS, DS, ES). Untuk memecahkan hal ini, kita bisa menggunakan register general purpose (AX, BX, CX, DX) sebagai perantara. Contoh :
MOV ES,DS
salah, yang benar ada 2 langkah di bawah ini :
MOV AX,DS
disalin dulu ke AX
MOV ES,AX
baru kemudian disalin ke ES. Selain dengan cara di atas, kita juga bisa menggunakan stack sebagai perantara. Contoh :
PUSH DS --->  PUSH (masukkan) nilai DS ke dalam stack
POP   ES  --->   POP (keluarkan) nilai dari dalam stack ke ES

Perhatikan juga bahwa register segmen kode (CS) tidak mungkin diubah oleh instruksi MOV, karena alamat instruksi berikutnya sudah ditentukan oleh IP dan CS (ingat pasangan CS:IP). Jika hanya CS yang diubah, maka alamat instruksi berikutnya tidak dapat diprediksi. Oleh karena itu, pengubahan register CS dengan instruksi MOV tidak diijinkan. Register Addressing dapat juga hanya terdiri atas sebuah register seperti pada perintah INC CX.
CONTOH:
Pengcopyan variabel dari suatu register atau simbol, contohnya  :

2. Indirect Addresing (EA = (A))
Mode pengalamatan indirect addressing sangat berguna karena dapat memberikan fleksibilitas tinggi dalam mengalamati suatu harga. Mode ini pula satu-satunya cara untuk mengakses 128 byte lebih dari RAM internal pada keluarga 8052. Contoh: MOV A,@R0. Dalam instruksi tersebut, 89C51 akan mengambil harga yang berada pada alamat memori yang ditunjukkan oleh isi dari R0 dan kemudian mengisikannya ke akumulator. Mode pengalamatan indirect addressing selalu merujuk pada RAM internal dan tidak pernah merujuk pada SFR. Karena itu, menggunakan mode ini untuk mengalamati alamat lebih dari 7Fh hanya digunakan untuk keluarga 8052 yang memiliki 256 byte spasi RAM internal. Field alamat mengacu pada alamat word di dalam memori, sehingga membuat alamat operand menjadi lebih panjang. Untuk setiap panjang word sebesar N, dapat digunakan sebuah ruang alamat 2N. Sedangkan kerugiannya adalah bahwa eksekusi instruksi memerlukan dua referensi memori untuk mengambil operand, sebuah referensi memori untuk mengambil alamat dan referensi lainnya untuk mendapatkan nilainya. Mode pengalamatan tak langsung dimana field alamat mengacu pada alamat word di dalam memori, yang pada gilirannya akan berisi alamat operand yang panjang
Kelebihan dan kekurangan dari Indirect Addresing antara lain :
  Kelebihan
•         Ruang bagi alamat menjadi besar sehingga semakin banyak alamat yang dapat referensi
  Kekurangan
•     Diperlukan referensi memori ganda dalam satu fetch sehinggamemperlambat preoses operasi

ADD ; A tambahkan isi memory yang ditunjuk oleh ini alamat A ke Akumulator

Register Indirect Addresing
Register indirect addressing ini hampir sama dengan direct addressing, bedanya hanya alamat efektif dari operand tidak disimpan di byte berikut setelah opcode instruksi, tetapi disimpan pada salah satu dari register indeks atau register basis, yaitu BX,BP,SI atau DI. Register Indirect Addressing biasanya digunakan untuk mengakses suatu data yang banyak (misalnya sebuah array atau string) dengan mengambil alamat efektif dari data tersebut. Untuk mendapatkan alamat efektif dari suatu data bisa digunakan perintah LEA (Load Effective Addres) dengan syntax : LEA Register,Data.
Untuk mengakses data yang ditunjukkan oleh Register, setelah didapatkannya alamat efektif harus digunakan tanda kurung siku (‘[]‘). Jika pada perintah pengaksesannya tidak disebutkan segmennya, maka yang digunakan adalah segment default. Seperti bila digunakan register BX, DI, atau SI sebagai penunjuk offset, maka segment DS yang digunakan. Sedangkan bila digunakan register BP sebagai penunjuk offset, maka segment SS yang digunakan.
Contoh :
MOV AX,[BX]
menyalin isi dari lokasi memori yang offsetnya disimpan di dalam register BX (16 bit) pada segmen data (DS) ke register AX. Misalnya BX = 1000h, ketika instruksi di atas dilakukan, isi dari DS (yang berukuran word) pada alamat offset 1000h disalin ke dalam register AX. Perhatikan bahwa isi dari 1000h disalin ke AL dan isi dari 1001h disalin ke AH. LEA SI,String muat offset String (String adalah variable yang berisi kumpulan karakter / string) MOV AL,[SI] menyalin isi dari lokasi memori yang offsetnya disimpan di dalam register SI (8 bit) pada segmen data (DS) ke register AL. Pada direct addressing di atas sudah dikatakan bahwa tidak diijinkan menyalin data langsung antarmemori. Hal tersebut juga berlaku pada Register indirect addressing. Contoh :
MOV [DI],[BX]
salah, menyalin dari memori ke memori tidak diijinkan, kecuali dengan instruksi string.
Pada beberapa kasus, pengalamatan tidak langsung memerlukan ukuran data khusus yang ditetapkan dengan direktif assembler khusus BYTE PTR, WORD PTR, atau DWORD PTR. Direktif ini menunjukkan ukuran data memori yang dialamatkan oleh penunjuk memori (PTR). 
Contoh:
MOV AL,[DI]
jelas merupakan instruksi penyalinan data berukuran byte (tandanya memakai register AL sebagai tujuannya).
MOV [DI],10h
salah, karena instruksi ini tidak jelas, apakah mengalamatkan lokasi memori yang berukuran byte, word, atau dword . Assembler tidak menentukan ukuran 10h tersebut. Yang benar seperti contoh berikut.
MOV BYTE PTR [DI],10h
jelas menentukan lokasi yang dialamatkan oleh DI sebagai lokasi memori yang berukuran byte.

CONTOH:
Mengakses suatu variabel yang banyak dengan mengambil alamat efektifnya, contohnya :



- Penutup
Demikianlah yang dapat kami sampaikan mengenai materi tentang mode dan format pengalamatan set instruksi , tentunya banyak kekurangan dan kelemahan kerena terbatasnya pengetahuan kurangnya rujukan atau referensi yang kami peroleh hubungannya dengan makalah ini Penulis banyak berharap kepada para pembaca yang budiman memberikan kritik saran yang membangun kepada kami demi sempurnanya makalah ini. Semoga makalah ini dapat bermanfaat bagi penulis dan  para pembaca. Amin.

Komentar

Postingan populer dari blog ini

SISTEM OPERASI (DEBIAN)

Keamanan Jaringan

SISTEM OPERASI (Ubuntu)