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.
- 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
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
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
- 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
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)
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