MODUL KE
8
Sistem Mikroprosesor (3 sks)
MATERI KULIAH :Pengertian dan perbandingan indexed, relative, register direct, dan register indirect addressing; beberapa contoh program pendek menggunakan salah satu addressing methods tersebut; beberapa contoh menggunakan kombinasi beberapa addressing methods (termasuk menggunakan direct, indirect, dan immediate addressing).
POKOK BAHASAN :
Indexed, Relative, Register Direct,
dan Register Indirect Addressing
Oleh Ir. INDRAGUNG PRIYAMBODO, MT.
8.1
Pendahuluan
Telah dijelaskan pada modul sebelumnya bahwa addressing methods/modes (teknik atau metode pengalamatan) yang digunakan pada umumnya seperti berikut ini.
1. Direct addressing
2. Indirect addressing
3. Immediate addressing
4. Indexed addressing
5. Relative addressing
6. Register direct addressing
7. Register indirect addressing
8. Stack addressing
Pada modul sebelumnya juga telah dijelaskan mengenai direct, indirect, dan immediate addressing. Pada modul ini akan dijelaskan satu persatu mengenai metode pengalamatan lainnya (dari nomor 3 s/d 7) tersebut, sedangkan mengenai stack addressing (nomor 8) dijelaskan pada modul berikutnya.
8.2
Indexed Addressing
Pada umumnya digunakan untuk program yang membutuhkan array dan/atau tabel.
Mikroprosesor menambahkan isi index register ke alamat pada instruksi tersebut (offset), atau dengan kata lain bahwa alamat yang dituju (= alamat efektif) merupakan hasil penjumlahan dari isi index register dengan offset, jadi :
Alamat efektif = isi index register (IX) + offset (alamat pada instruksi
Ini berarti bahwa isi index register (yang digunakan sebagai referensi) harus ditentukan terlebih dulu.
Diberikan tanda “X” , yang merupakan isi dari index register
Contoh 1 (satu) instruksi :
LOAD 50, X tanda X adalah indexing atau isi index register
Mikroprosesor menghitung alamat efektif terlebih dahulu (alamat yang dituju), yaitu 50 ditambah dengan isi index register. Dengan instruksi LOAD berarti memasukkan/meng-copy isi alamat efektif tersebut ke akumulator (A), atau biasa ditulis :
(50 + (IX)) A ; tanda (IX) menunjukkan isi index register yang ditambahkan ke offset (dalam hal ini offset-nya adalah 50)
Misalnya isi index register = 23, maka menjadi : (50 + 23) A atau
(73) A ; berarti isi alamat 73 dimasukkan/di-copy ke akumulator atau sama dengan instruksi LOAD 73
ADD 50, X
Yaitu menambahkan/menjumlahkan isi alamat efektif (yaitu alamat 50 + isi index register) ke isi akumulator (A), dan hasilnya disimpan kembali di akumulator, atau biasa ditulis :
(50 + (IX)) + (A) A
STORE 50, X
Yaitu memasukkan/meng-copy/menyimpan isi akumulator (A) ke lokasi memori atau alamat efektif (yaitu alamat 50 + (IX)), atau biasa ditulis :
(A) 50 + (IX)
Contoh dalam program pendek :
1. Misalnya program berikut ini LOAD # 35
LOAD INDEXREG # 1900 STORE 65, X
Hasil dari eksekusi program ini seperti berikut ini.
Setelah instruksi LOAD # 35 : data 35 A
Maka data/angka 35 dimasukkan ke Akumulator, sehingga Akumulator berisi data 35.
Setelah instruksi LOAD INDEXREG # 1900 : data 1900 IX
IX adalah Index Register, berarti data/angka 1900 dimasukkan ke index register, sehingga index register berisi data 1900.
Setelah instruksi STORE 65, X : (A) 65 + (IX)
Maka isi akumulator dimasukkan ke alamat 65 + (IX) yaitu alamat 65 + 1900 (isi index register), berarti dimasukkan/di-copy-kan ke alamat 1965, sehingga alamat 1965 berisi data 35.
Setelah seluruh instruksi dilaksanakan maka kondisil akhir adalah :
(A) = 35 : isi akumulator = 35 (IX) = 1900 : isi index register = 1900
(1965) = 35 : isi lokasi memori atau alamat 1965 adalah 35
2. Misalnya akan mengkuadratkan bilangan pada index register. Tabel kuadrat tersebut disimpan pada lokasi memori atau alamat 50 s/d 59.
Kondisi awal
Alamat Memori Data
0 LOAD 50, X : : 50 0 51 1 Mikroprosesor 52 4 53 9 0 Program Counter 54 16 55 25 0 Accumulator : : 59 81 3 Index Register
Setelah instruksi LOAD 50, X : (50 + 3) A
Alamat efektif = 50 + 3 = 53, berarti isi alamat 53 dimasukkan/di-copy-kan ke akumulator, sehingga kondisi setelah eksekusi seperti berikut ini.
Alamat Memori Data 0 LOAD 50, X : : 50 0 51 1 Mikroprosesor 52 4 53 9 1 Program Counter 54 16 55 25 9 Accumulator : : 59 81 3 Index Register
Akumulator sekarang berisi kuadrat dari bilangan pada index register.
Keuntungan Pengalamatan Berindeks (
Indexed Addressing
) :
Isi index register dapat ditambah dengan 1 (increment) atau dikurangi 1 (decrement).
Dapat dituju suatu daerah alamat yang cukup lebar dengan menambah atau mengurangi isi index register.
8.3
Relative Addressing
Mikroprosesor menambahkan isi program counter (PC) ke alamat pada instruksi tersebut (offset), atau dengan kata lain bahwa alama t yang dituju (= alamat efektif) merupakan hasil penjumlahan dari isi PC dengan offset, jadi :
Alamat efektif = isi program counter (PC) + offset (alamat pada instruksi
Diberikan tanda atau $ , yang merupakan isi dari PC
Contoh 1 (satu) instruksi :
LOAD + 50 tanda adalah isi PC (Program Counter)
Mikroprosesor menghitung alamat efektif terlebih dahulu (alamat yang dituju), yaitu 50 ditambah dengan isi PC. Dengan instruksi LOAD berarti memasukkan/meng-copy isi alamat efektif tersebut ke akumulator (A), atau biasa ditulis :
(50 + (PC)) A ; tanda (PC) menunjukkan isi PC yang ditambahkan ke offset
Misalnya isi PC = 34, maka menjadi : (50 + 34) A atau
(84) A ; berarti isi alamat 84 dimasukkan/di-copy ke akumulator atau sama dengan instruksi LOAD 84
ADD + 50
Yaitu menambahkan/menjumlahkan isi alamat efektif (yaitu alamat 50 + isi PC ke isi akumulator (A), dan hasilnya disimpan kembali di akumulator, atau biasa ditulis :
(50 + (PC)) + (A) A
STORE + 50
Yaitu memasukkan/meng-copy/menyimpan isi akumulator (A) ke lokasi memori atau alamat efektif (yaitu alamat 50 + (PC)), atau biasa ditulis :
(A) 50 + (PC)
Contoh Aplikasi :
Misalnya instruksi ADD + 50
Kondisi awal
Alamat Memori Data Mikroprosesor
31 ADD + 50 31 Program Counter
: :
81 20 25 Accumulator
Setelah instruksi ADD + 50 :
Alamat efektif = 50 + (PC) = 50 + 31 = 81, jadi alamat efektifnya 81, maka instruksi di atas sama dengan instruksi :
ADD 81 ; berarti (81) + (A) A, maka 20 + 25 = 45 A atau (A) = 45
Alamat Memori Data Mikroprosesor
31 ADD + 50 31 Program Counter
: :
Jika posisi program dipindah sejauh 400 lokasi dari alamat semula, maka kondisi awalnya sbb :
Alamat Memori Data Mikroprosesor
431 ADD + 50 431 Program Counter
: :
481 20 25 Accumulator
Maka hasil pelaksanaan instruksi ADD + 50 :
Alamat efektif = 50 + (PC) = 50 + 431 = 481, jadi alamat efektifnya 481, maka instruksi di atas sama dengan instruksi :
ADD 481 ; berarti (481) + (A) A, maka 20 + 25 = 45 A atau (A) = 45
Alamat Memori Data Mikroprosesor
431 ADD + 50 431 Program Counter
: :
481 25 45 Accumulator
Keuntungan Pengalamatan Relatif (
Relative Addressing)
:
Relocatable bahwa program yang menggunakan pengalamatan relatif dapat ditempatkan dalam daerah/lokasi memori yang mana pun dengan tanpa
mempengaruhi proses pengolahan data.
Instruksi lebih pendek bila alamat efektif letaknya “dekat” dengan alamat instruksi tersebut (current instruction).
8.4
Register Direct Addressing
Serupa dengan direct addressing, perbedaannya hanya pada alamat yang dituju bukan di memori tetapi di register yang merupakan bagian dari instruksi. Jadi data yang dimaksud ada dalam register tersebut, bukan di memori. Hal ini berarti datanya ada di dalam mikroprosesor.
Contoh 1 (satu) instruksi :
LOAD R1, 23
Yaitu memasukkan/meng-copy isi alamat 23 ke general purpose register 1, atau biasa ditulis :
MOVE A, R1
Yaitu memasukkan/meng-copy isi general purpose register 1 ke akumulator, atau biasa ditulis :
(A) R1
ADD R1
Yaitu menambahkan/menjumlahkan isi general purpose register 1 ke isi akumulator (A), dan hasilnya disimpan kembali di akumulator, atau biasa ditulis : (R1) + (A) A
Contoh sebuah program pendek :
Program untuk menjumlahkan isi dari lokasi memori (alamat) 50 dengan isi alamat 51, kemudian hasil penjumlahan tersebut disimpan di lokasi memori 52. Bila ditulis secara singkat seperti berikut ini.
(50) + (51) 52 Maka programnya : LOAD 50 LOAD R1, 51 ADD R1 STORE 52
Proses yang terjadi antara mikroprosesor dengan memori seperti berikut ini.
Kondisi awal
Alamat Memori Program 4 5 6 7 LOAD 50 LOAD R1, 51 ADD R1 STORE 52
Alamat Memori Data Mikroprosesor
50 23 4 Program Counter
51 61 0 Accumulator
Setelah instruksi LOAD 50 : (50) A
Alamat Memori Data Mikroprosesor
50 23 5 Program Counter
51 61 23 Accumulator
52 47 0 Register 1
Setelah instruksi LOAD R1, 51 : (51) R1 Alamat Memori Data Mikroprosesor
50 23 6 Program Counter
51 61 23 Accumulator
52 47 61 Register 1
Setelah instruksi ADD R1 : (R1) + (A) A Alamat Memori Data Mikroprosesor
50 23 7 Program Counter
51 61 84 Accumulator
52 47 61 Register 1
61 + 23 A
Setelah instruksi STORE 52 : (A) 52 Alamat Memori Data Mikroprosesor
50 23 8 Program Counter
51 61 84 Accumulator
Keuntungan dan Kerugian
Register Direct Addressing
dibanding-kan
Direct Addressings
:
Untuk sebuah instruksi, register direct addressing jumlah Byte-nya lebih kecil dan waktu eksekusinya lebih cepat dibandingkan direct addressing.
Register direct addressing banyak dimanfaatkan untuk program yang membutuhkan proses looping, karena lebih mudah dalam pembuatan programnya dan lebih cepat eksekusinya.
Untuk program yang sederhana, pada umumnya lebih mudah menggunakan
direct addressing serta waktu eksekusinya dapat lebih cepat dibandingkan
register direct addressing,
8.5
Register Indirect Addressing
Serupa dengan Indirect addressing, perbedaannya hanya pada informasi alamat yang dituju tidak disimpan di dalam memori, tetapi disimpan dalam register yang merupakan bagian dari instruksi. Jadi alamat tempat data yang dimaksud ada dalam register tersebut.
Juga diberikan simbol/tanda @
Contoh 1 (satu) instruksi :
ADD @ R1
Yaitu menambahkan/menjumlahkan isi dari alamat yang ada dalam general purpose register 1 ke isi akumulator (A), dan hasilnya disimpan kembali di akumulator, atau biasa ditulis :
((R1)) + (A) A
Contoh sebuah program pendek :
Program untuk menjumlahkan “isi dari isi” alamat 50 dengan “isi dari isi” alamat 51, kemudian hasil penjumlahan tersebut disimpan di lokasi memori yang ada di dalam alamat 52. Bila ditulis secara singkat seperti berikut ini.
((50)) + ((51)) (52) Maka programnya : LOAD @ 50 LOAD R1, 51 ADD @ R1 STORE 52
Kondisi awal
Alamat Memori Program 6 7 8 9 LOAD @ 50 LOAD R1, 51 ADD @ R1 STORE 52
Alamat Memori Data
23 53 : : 47 34 Mikroprosesor : : 50 23 6 Program Counter 51 61 52 47 0 Accumulator : : 61 12 0 Register 1
Setelah instruksi LOAD @ 50 : ((50)) A
Alamat Memori Data
23 53 : : 47 34 Mikroprosesor : : 50 23 7 Program Counter 51 61 52 47 53 Accumulator : : 61 12 0 Register 1
Setelah instruksi LOAD R1, 51 : (51) R1
Alamat Memori Data
23 53 : : 47 34 Mikroprosesor : : 50 23 8 Program Counter 51 61 52 47 53 Accumulator : : 61 12 61 Register 1
Setelah instruksi ADD @ R1 : ((R1)) + (A) A
Alamat Memori Data
23 53 : : 47 34 Mikroprosesor : : 50 23 9 Program Counter 51 61 52 47 65 Accumulator : : 61 12 61 Register 1 12 + 53 = 65
Setelah instruksi STORE @ 52 : (A) (52)
Alamat Memori Data
23 53 : : 47 65 Mikroprosesor : : 50 23 10 Program Counter 51 61 52 47 65 Accumulator : : 61 12
Keuntungan dan Kerugian
Register Indirect Addressing
dibanding-kan
Indrect Addressing
:
Untuk sebuah instruksi, register indirect addressing jumlah Byte-nya lebih kecil dan waktu eksekusinya lebih cepat dibandingkan indirect addressing.
Register indirect addressing banyak dimanfaatkan untuk program yang membutuhkan proses looping, karena lebih mudah dalam pembuatan programnya dan lebih cepat eksekusinya.
Untuk program yang sederhana, pada umumnya lebih mudah menggunakan
indirect addressing serta waktu eksekusinya dapat lebih cepat dibandingkan
register indirect addressing,
DAFTAR PUSTAKA
[1] Lance A. Leventhal, Introduction to Microprocessors : Software, Hardware, Programming, Prentice Hall,1978.
[2] Pasahow, Edward, J. , Microprocessor and Microcomputer Interfacing for Electronics Technicians, McGraw-Hill, New York, 1981.
[3] Chris H. Pappas dan Willian H. Murray III, 80386 Mikroprocessor Handbook, Osborne McGraw-Hill, 1988
[4] Avtar Singh dan Walter A. Triebel, The 8088 Microprocessor : Programmnig, Interfacing, Software, Hardware, and Applications, Prentice Hall, International Editions, 1989
[5] Charles M.Gilmore , Microprocessors:Principles and Applications, Glencoe/McGraw-Hill, 2nd International Ed. , 1995
[6] Rodnay Azks (alih bahasa : S.H. Nasution), From Chips to Systems : An
Introduction to Microprocessors ( Dari Chip ke Sistem : Pengantar Mikroprosesor), Sybec Inc., 1981 (Penerbit Erlangga, 1986).
[7] Harry Garland (alih bahasa : M. Barmawi dan M.O. Tjia), Introduction to Microprocessor System Design ( Pengantar Desain Sistem Mikroprosesor), McGraw-Hill Inc., 1979 (Penerbit Erlangga, 1984).
[8] Barry B. Brey , Microprocessors and Peripherals : Hardware,Software,Interfacing, and Applications, Merrill Publishing Company, 1988.