Mode dan Format Pengalamatan
Mode dan Format Pengalamatan |
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, indirect addressing, dan immediate addressing.
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.
- Informasi yang disediakan dalam listing program menggunakan beberapa simbol untuk menentukan tipe dari numerik yang digunakan. Simbol khusus ini adalah:Tanpa simbol mengindikasikan numerik desimal. Angka ini akan diterjemahkan menjadi nilai biner sebelum disimpan dalam memori dan digunakan oleh CPU.
- Simbol $ mengindikasikan numerik heksadesimal, seperti $24 adalah 2416 dalam heksadesimal yang bernilai sama dengan 36 desimal.
- Simbol @ mengindikasikan numerik oktal, seperti @10 bernilai sama dengan 8 desimal.
- Simbol % mengindikasikan numerik biner, seperti 0100 bernilai sama dengan 8 desimal.
- Simbol ‘ (apostrof) mengindikasikan karakter ASCII tunggal.
- Simbol # mengindikasikan operand langsung (immediate) dan angka ditemui langsung dalam lokasi memori yang mengikuti kode operasi.
- Mode Pengalamatan INHERENT
- Mode Pengalamatan IMEDIATE
- Mode Pengalamatan DIRECT
- Mode Pengalamatan EXTENDED
- Mode Pengalamatan INDEXED
- Mode Pengalamatan RELATIVE
Mode Pengalamatan INHERENT
Dalam mode pengalamatan inherent, semua informasi yang dibutuhkan untuk operasi telah diketahui otomatis oleh CPU, dan tidak dibutuhkan operan eksternal dari memori atau dari program. Operan yang digunakan hanyalah register internal dari CPU atau data dalam stack. Karena itu operasi ini hanyalah terdiri dari satu byte instruksi.
0200 4C INCA ; increment akumulator
Pertama CPU membaca kode operasi $4C yang menginstruksikan CPU untuk menambah harga dari isi akumulator. Kemudian CPU akan menyimpan harga baru ke dalam akumulator dan mengeset bitflag jika dibutuhkan. Tabel 0.1 menampilkan semua instruksi M68HC05 yang dapat menggunakan mode pengalamatan inherent.
Mode Pengalamatan Immediate
Dalam mode pengalamatan immediate, operan terkandung di dalam byte yang langsung mengikuti kode operasi. Mode ini digunakan saat suatu harga atau konstanta diketahui saat program dibuat dan tidak akan dirubah selama eksekusi program. Operasi dengan mode ini membutuhkan dua byte instruksi, satu untuk kode operasi dan satu lagi untuk data byte.
0200 A6 02 LDA #$02 ; Load konstanta ke akumulator.
Pertama CPU akan membaca kode operasi $A6 yang menginstruksikan CPU untuk me-load akumulator dengan nilai immediate yang mengikuti kode operasi. Kemudian CPU akan membaca dataimmediate $02 dari lokasi memori dengan alamat $0201 ke dalam akumulator. Tabel 0.2 menampilkan semua instruksi keluarga M68HC05 ang dapat menggunakan mode pengalamatan immediate ini.
- Mode ini adalah tidak adanya referensi memori selain dari instruksi yang diperlukan untuk memperoleh operand.
- Menghemat siklus instruksi sehingga proses keseluruhan akan cepat.
- Ukuran bilangan dibatasi oleh ukuran field alamat
Mode Pengalamatan Direct
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 0.3 menampilkan semua instrusi yang bisa dikerjakan dengan mode pengalamatan direct ini.
- 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.
- Keterbatasan field alamat karena panjang field alamat biasanya lebih kecil dibandingkan panjang word.
Mode Pengalamatan Extended
0200 C6 03 65 LDA $0365
Pertama CPU akan membaca kode operasi C6 yang menginstruksikan akumulator untuk menggunakan mode pengalamatan extended. Kemudian CPU akan membaca $03 dari lokasi memori $0201dan diterjemahkan sebagai alamat high-order. Setelah itu CPU membaca $65 dari lokasi $0202 dan diterjemahkan sebagai low-order dari alamat. Terakhir, CPU membangun alamat lengkap $0365 dan meletakkannya dalam bus alamat dan kemudian melakukan operasi read sehingga isi memori dengan alamat $0365 akan tersedia dalam bus data. Tabel 0.4 di bawah ini akam memperlihatkan semua instruksi yang dapat digunakan dalam mode pengalamatan extended.
Mode Pengalamatan Indexed
Dalam mode pengalamatan indexed, alamat efektif adalah variabel dan tergantung pada dua faktor: 1) isi index register saat itu dan 2) nilai offset yang terkandung dari byte yang mengikuti kode operasi. Terdapat tiga jenis pengalamatan indexed yang didukung oleh CPU keluarga M68HC05, yaitu: no-offset, 8-bit offset, dan 16-bit offset. Dalam mode pengalamatan indexed-no offset, alamat efektif dari operan terkandung dalam index register 8-bit. Karena itu, mode pengalamatan ini dapat mengakses 256 lokasi memori (dari $0000 sampai $00FF). Instruksi mode ini membutuhkan satu byte instruksi. Contoh: 0200 F6 LDA 0,X
Pertama CPU akan membaca kode operasi $F6 yang menginstruksikan CPU untuk menggunakan mode pengalamatan indexed-no offset. Kemudian CPU menyusun alamat lengkap dengan menjumlahkan $0000 ke isi dari index register 8-bit (X). Alamat ini kemudian diletakkan dalam bus alamat dan setelah itu dilakukan proses pembacaan data. Tabel 0.5 menampilkan semua instruksi yang dapat menggunakan mode pengalamatan ini.
Dalam mode pengalamatan indexed-8 bit offset, alamat efektif dicapai dengan menambahkan data byte yang mengikuti kode operasi dengan isi dari index register. Harga byte offset yang disediakan dalam instruksi adalah integer tak bertanda 8-bit. Karena itu operasi ini adalah dua byte instruksi di mana offset terkandung dalam byte yang mengikuti kode operasi. Isi dari index register tidak akan dirubah. Contoh: 0200 E6 05 LDA 5,X.
Pertama CPU akan membaca kode operasi $E6 yang menginstruksikan CPU menggunakan mode pengalamatan indexed 8-bit offset. Kemudian CPU akan membaca 8-bit offset ($05) dari alamat $0201. CPU akan menyusun alamat lengkap dengan menambahkan nilai offset $05 ke isi dari index register 8-bit (X). Setelah itu, alamat diletakkan dalam bus alamat dan opersi pembacaan data ke akumulator dikerjakan. Tabel 0.5 menunjukkan semua instruksi yang mampu menggunakan mode pengalamatan ini. Dalam mode pengalamatan indexed-16 bit offset, alamat efektif dari operan suatu instruksi adalah hasil penjumlahan antara isi dari index register 8-bit dengan dua byte alamat yang mengikuti kode operasi. Isi dari kode operasi tidak dirubah. Instruksi ini memakan tiga byte, satu untuk kode operasi dan dua byte untuk offset 16-bit. Contoh: 0200 D6 03 77 LDA $377,X
Pertama CPU akan membaca kode operasi $D6 yang menginstruksikan CPU untuk menggunakan mode pengalamatan indexed –16 bit offset. Kemudian CPU akan membaca high order alamat ($03) dari alamat memori $0201 dan membaca low order alamat ($77) dari alamat $0202. CPU akan menyusun alamat lengkap dengan menambahkan isi dari index register 8-bit dengan 16-bit alamat yang baru saja dibaca. Alamat ini diletakkkan dalam bus alamat dan kemudian operasi pembacaan data dilakukan.
Mode Pengalamatan RELATIVE
Mode pengalamatan relative ini digunakanhanya dalam instruksi percabangan. Instruksi percabangan, selain percabangan instruksi manipulasi bit, membangkitkan dua byte kode mesin: satu untuk kode operasi dan satu untuk offset relatifnya. Karena kemampuannya untuk bercabang ke dua arah, byte offset adalah bilangan bertanda dengan jangkauan –128 sampai +127. Jika kondisi percabangan TRUE, isi dari byte bertanda 8-bit yang mengikuti kode operasi akan ditambahkan dengan isi dari PC untuk membentuk alamat efektif percabangan; jika FALSE maka kontrol program akan terus ke instruksi di bawah instruksi percabangan. Programmer akan menspesifikasikan tujuan dari percabangan sebagai alamat absolute (dengan label atau alamat langsung). Kemudian assembler akan mengkalkulasi offset relatif 8-bit yang akan diletakkan di belakang kode memori dalam memori. Contoh: 0200 27 rr BEQ DEST.
Pertama CPU akan membaca kode operasi $27. Bit CCR Z akan set jika hasil dari operasi aritmatika atau logika sebelumnya adalah nol. CPU kemudian akan membaca harga offset $rr dari alamat $0201. Setelah siklus ini, PC akan menunjukkan ke byte pertama dari instruksi berikutnya ($0202). Jika bit Z nol, maka tidak ada aksi apa-apa. Program akan terus ke instruksi berikutnya pada alamat $0202. Jika bit Z satu, CPU akan menambahkan nilai offset $rr ke isi dari PC sekarang untuk mendapatkan alamat tujuan dari percabangan. Hal ini menyebabkan eksekusi program berlanjut ke alamat baru (DEST). Tabel 0.6 menunjukkan instruksi yang dapat menggunakan mode pengalamatan relative.
Posting Komentar untuk "Mode dan Format Pengalamatan"