Senin, 05 Januari 2015

Mode Pengalamatan



Mode pengalamatan merupakan metode penentuan alamat operand pada instruksi. Operand instruksi diletakan pada memori utama dan register CPU. Tujuan yang mempengaruhi arsitektur komputer ketika memilih mode pengalamatan:
1.       Mengurangi panjang instruksi dengan mempunyai medan yang pendek untuk alamat.
  1. Menyediakan bantuan yang tangguh kepada pemrogram untuk penanganan data kompleks seperti pengindeksan sebuah array, control loop, relokasi program dan sebagainya.
Teknik Pengalamatan terdiri dari:
1.      Pengalamatan Segera
Suatu proses penyalinan data yang berukuran byte atau word langsung ke dalam register tujuan. Data yang dimaksud di sini adalah suatu nilai atau bilangan tertentu atau bisa juga berupa sebuah konstanta (didefinisikan dengan instruksi EQU). Perlu dicatat bahwa data segera merupakan data konstan, sedangkan data yang dipindahkan dari register adalah data berubah (variable).
Contoh :
MOV AL,11h                               menyalin bilangan 11h ke dalam register AL
MOV AX,1234h                           menyalin 1234h ke dalam register AX
A EQU 25h                                   mendefinisikan konstanta A
MOV AX,A                                  menyalin 25h ke dalam register AX

Huruf ‘h’ ditambahkan dibelakang bilangan untuk menunjukkan bahwa itu adalah bilangan heksadesimal (bedakan dengan penulisan angka di debug). Ketika bilangan heksadesimal dimulai dengan suatu huruf, assembler memerlukan data yang dimulai dengan angka ‘0’, jika tidak (diberi angka ‘0’) maka assembler akan menganggap bilangan tersebut sebagai variable, jadi kompiler akan mengeluarkan pesan kesalahan.
Contoh :
MOV AX,FFh                              contoh yang salah
MOV AX,0FFh                            ini yang benar

Untuk karakter atau kode – kode ASCII dapat direpresentasikan dalam bentuk immediate jika data ASCII ditutup dengan tanda apostrof (‘).

Keuntungan menggunakan teknik pengalamatan segera:
1.       Tidak adanya referensi memori selain dari instruksi yang diperlukan untuk memperoleh operand
  1. Menghemat siklus instruksi sehingga proses keseluruhanakan akan cepat
Kekurangan menggunakan pengalamatan segera adalah ukuran bilangan dibatasi oleh ukuran field.


2.      Pengalamatan langsung
Suatu proses penyalinan data pada register dan suatu alamat efektif (Effective Address, Alamat ini disimpan pada byte berikut setelah opcode instruksi).
Contoh :
MOV AX,[100h]                          menyalin data pada alamat 100h ke AX
A DB 89h                                     mendefinisikan variable A
.
.
MOV AL,A                                  direct addressing

Sebenarnya huruf ‘A’ di atas lebih tepat disebut lokasi memori yang memiliki offset A, yaitu 89h, pada segmen data (DS). Jadi ‘A’ di sini bisa dibilang sama dengan sebuah nama variable pada bahasa pemrograman tingkat tinggi (C, C++, Pascal, Basic, dsb), hanya untuk memudahkan dalam pemahaman. Penyalinan data langsung antarmemori tidak diijinkan. Untuk memecahkan hal ini, kita bisa menggunakan register general purpose sebagai perantara.

Kelebihan menggunakan pengalamatan langsung adalah Field alamat berisi efektif address sebuah operand sedangkan kekurangannya adalah Keterbatasan field alamat karena panjang field alamat biasanya lebih kecil dibandingkan panjang word.
3.      Pengalamatan register
Pengalamatan Register dibagi menjadi dua yaitu:
a.       Register Direct Addressing
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.

b.      Register Indirect Addressing
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.


4.      Pengalamatan relative

Teknik ini menjadikan atribut kunci sebagai alamat memorinya, jadi, data dari NIM dijadikan bertipe numeric(integer) dan dijadikan alamat dari record yang bersangkutan. Cara ini memang sangat efektif untuk menemukan kembali record yang sudah disimpan, tetapi sangat boros penggunaan memorinya. Tentu alamat memori mulai dari 1 hingga alamat ke sekian juta tidak digunakan karena nilai dari NIM tidak ada yang kecil. Pelajari keuntungan dan kerugian lainnya.Teknik ini termasuk dalam katagori address space dependent.

Sumber

Tidak ada komentar:

Posting Komentar