MODUL KE 7
Sistem Mikroprosesor (3 sks)
7
MATERI KULIAH : Pengertian program sistem mikroprosesor; instruction set (perangkat instruksi); format instruksi secara umum; cara mengurangi panjang instruksi; tujuan addressing methods/addressing modes (metode pengalamatan); pengelompokan addressing methods : direct, indirect, immediate, indexed, relative, register direct, register indirect, dan stack addressing; pengertian secara rinci serta perbandingan direct, indirect, dan immediate addressing, disertai beberapa contoh program pendek menggunakan salah satu dan kombinasi dari ketiga addressing methods tersebut. POKOK BAHASAN :
Perangkat dan format Instruksi, Immediate, Direct, & Indirect Addressing Oleh Ir. INDRAGUNG PRIYAMBODO, MT.
7.1 PERANGKAT DAN FORMAT INSTRUKSI 7.1.1 Program Sistem Mikroprosesor Program untuk sistem mikroprosesor adalah urutan perintah yang disusun menurut suatu aturan tertentu untuk suatu (sistem) mikroprosesor agar mikroprosesor tersebut dapat melaksanakan fungsi atau operasi tertentu. Bahasa Pemrograman :
Bahasa mesin : dalam bilangan biner (atau heksadesimal)
Bahasa assembly (rakitan)
Bahasa tingkat tinggi
7.1.2 Perangkat Instruksi (Instruction Set) adalah seperangkat instruksi-instruksi atau tabel (daftar) keseleruhan perintah (instruksi) yang dikenal oleh suatu mikroprosesor. Tabel tersebut pada umumnya berisi : Sistem Mikroprosesor/Teknik Elektro/FTI/Universitas Jayabaya/Modul ke 7/ Hal 7-1
Perintah/instruksi dalam bahasa assembly;
Perintah/instruksi dalam bahasa mesin (dalam bilangan heksadesimal);
Jenis addresing modes/methods (metode pengalamatan);
Arti perintah (secara singkat) yang menunjukkan fungsi apa yang dapat dilakukan mikroprosesor tersebut;
Keterangan lainnya, misalnya : Instruction time (execution time) Jumlah Byte yang diperlukan Perubahan/pengaruhnya terhadap status register
Contoh : Misalnya pada mikroprosesor Motorola 6800/6802 Addressing Modes Operasi
Mnemonic Immediate
Addition
Extended
OP
OP
ADD A
8B
2
2
BB
4
3
Arti
Status Register H
I
N
Z
V
C
A+MA
↕
•
↕
↕
↕
↕
ORA A
8A
2
2
BA
4
3
A or M A
•
•
↕
↕
R
•
OR inclusive
ORA B
CA 2
2
FA
4
3
B or M A
•
•
↕
↕
R
•
Load Acc.
LDA A
86
2
FA
4
3
MA
•
•
↕
↕
R
•
2
Keterangan : OP
= Operation Code (opcode) = kode operasi
= jumlah machine cycle untuk menghitung execution time (tc )
= jumlah Byte
A
= Register A (Accumulator atau Accumulator A atau sering disingkat Acc.)
•
= tanda bahwa tidak terpengaruh
↕
= tanda bahwa dapat berubah (terpengaruh)
R
= tanda bahwa selalu reset
tc
= execution time (waktu yang dibutuhkan untuk eksekusi atau melaksanakan suatu perintah/instruksi) = perioda clock x jumlah machine cycle misalnya jumlah machine cycle = 2, kemudian frekuensi clock = 10 MHz, berari perioda clock-nya = T = 0,1 μs (mikro detik), sehingga execution time = tc = 2 x 0,1 μs = 0,2 μs. Sistem Mikroprosesor/Teknik Elektro/FTI/Universitas Jayabaya/Modul ke 7/ Hal 7-2
7.1.3 Format Instruksi Suatu instruksi mikroprosesor pada umumnya mempunyai informasi berikut ini. a. Operasi : Bagian dari instruksi yang menjelaskan operasi apa yang harus dilakukan atau menjelaskan cara operasinya Operation Code (opcode) b. Sumber Data atau Alamat Asal : Address Field berisi alamat atau data, misalkan : ADD, SUB instruksi yang membutuhkan 2 operand SHIFT, COMPLEMEN instruksi yang membutuhkan 1 operand saja. c. Tujuan (destination) atau hasil (result) : Tempat/lokasi/alamat tujuan/hasil d. Sumber alamat berikutnya: Asal/sumber (alamat) instruksi berikutnya yang harus dikerjakan mikroprosesor. Format suatu instruksi (yang lengkap) : Address Field Operation Code (opcode)
Alamat operand 1
Alamat operand 2
Alamat Hasil (Address of Result)
Alamat Instruksi Berikutnya (Address of Next Instruction)
Jika opcode-nya : 4
4 bit maka akan mempunyai 2 = 16 kombinasi opcode 8
1 Byte maka akan mempunyai 2 = 256 kombinasi opcode 1 (satu) instruksi lengkap membutuhkan 40 bit, yang terdiri dari (pada umumnya) 4 s/d 8 bit opcode, dan sisanya (32 s/d 36 bit) untuk address field, address of result, dan address of next instruction. Dengan panjangnya 1 (satu) instruksi lengkap tersebut, pembuat/perancang mikroprosesor harus berusaha mengurangi panjang instruksi lengkap tersebut.
7.1.4 Cara Mengurangi “Panjang” Instruksi Dalam mikroprosesor pembatasan panjang instruksi disebabkan oleh :
Keterbatasan word size mikroprosesor;
Keterbatasan jumlah bus dan register dalam mikroprosesor;
Pada umumnya program untuk sistem mikroprosesor disimpan dalam ROM. Sistem Mikroprosesor/Teknik Elektro/FTI/Universitas Jayabaya/Modul ke 7/ Hal 7-3
Sebenarnya dengan harga ROM yang “relatif” semakin murah, maka khusus untuk unsur ini kurang berpengaruh. Cara mengurangi “panjang” instruksi seperti berikut ini. a. Mikroprosesor terkait mempunyai Program Counter (PC) yang digunakan untuk menyimpan alamat instruksi. Selanjutnya mikroprosesor akan menambah isi PC dengan angka 1 (satu) untuk setiap instruksi, atau sering ditulis (PC) + 1 PC , agar mikroprosesor mengambil instruksi alamat berikutnya yang ditunjukkan oleh isi PC. (Kecuali untuk instruksi Jump, Branch, Skip, Halt). b. Membuat alamat asal data (source) dan alamat tujuan (tempat menyimpan hasilnya) bersifat implisit (bukan eksplisit). Alamat implisit tersebut dapat berupa register (misalnya Acc, IX, SP, address register) atau lokasi memori yang dicapai/ melalui register. Dengan kata lain, register atau lokasi memori dialamatkan melalui register. c.
Membuat alamat tujuan sama (atau menjadi satu) dengan salah satu alamat asal, sehingga hasilnya akan menggantikan (menimpa) 1 (satu) operand.
d. Membatasi alamat-alamat menjadi alamat register atau isi register dan bukan merupakan alamat memori yang lengkap (absolut).
7.2 ADDRESSING METHODS (ADDRESSING MODES) Addressing methods/modes (metode/teknik pengalamatan) dibutuhkan bila pembuat program mikroprosesor ingin mendapatkan hal-hal berikut ini. a. Instruksi sesingkat (sependek) mungkin untuk menghemat memori dan waktu penjemputan (fetch) instruksi. b. Mudah melakukan akses ke “seluas mungkin” memori (pada umumnya untuk satu daerah memori tertentu), atau dengan kata lain membuat pengaksesan pada sejumlah memori semudah mungkin. c. Memungkinkan untuk mengubah alamat tanpa harus mengubah instruksi atau program. d. Membuat metode pengalamatan secepat mungkin, dengan kata lain waktu pelaksanaan instruksi sesingkat mungkin. e. Membuat metode pengalamatan semudah atau sesederhana mungkin kemungkinan terjadi kesalahan semakin kecil oleh karena itu agar fleksibilitas meningkat, maka membutuhkan ketersediaan instruksi dalam berbagai jenis metode pengalamatan. Addressing methods/modes (metode pengalamatan atau teknik pengalamatan) yang digunakan pada umumnya seperti berikut ini. 1. Direct addressing 2. Indirect addressing Sistem Mikroprosesor/Teknik Elektro/FTI/Universitas Jayabaya/Modul ke 7/ Hal 7-4
3. 4. 5. 6. 7. 8.
Immediate addressing Indexed addressing Relative addressing Register direct addressing Register indirect addressing Stack addressing
Berikut ini akan dijelaskan satu persatu mengenai masing-masing metode pengalamatan tersebut.
7.2.1 Direct Addressing
Informasi alamat yang sebenarnya atau alamat yang dituju merupakan/menjadi bagian dari instruksi.
Contoh 1 (satu) instruksi : LOAD 50 Yaitu memasukkan/meng-copy isi lokasi memori atau isi alamat 50 ke akumulator (A), atau biasa ditulis : (50) A ; tanda kurung “( )” menunjukkan keterangan “ISI DARI LOKASI” ADD 50 Yaitu menambahkan/menjumlahkan isi lokasi memori atau isi alamat 50 ke isi akumulator (A), dan hasilnya disimpan kembali di akumulator, atau biasa ditulis : (50) + (A) A STORE 50 Yaitu memasukkan/meng-copy/menyimpan isi akumulator (A) ke lokasi memori atau alamat 50, atau biasa ditulis : (A) 50 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 ADD 51 STORE 52 Sistem Mikroprosesor/Teknik Elektro/FTI/Universitas Jayabaya/Modul ke 7/ Hal 7-5
Proses yang terjadi antara mikroprosesor dengan memori seperti berikut ini.
Kondisi awal Alamat 0
LOAD
50
1
ADD
51
2
STORE
52
Alamat
Memori Data
50
23
51
61
52
47
Mikroprosesor 0 Program Counter 0 Accumulator
Setelah instruksi LOAD 50 Alamat
Memori Program
:
Memori Data
50
23
51
61
52
47
Mikroprosesor 1 Program Counter 23 Accumulator
Setelah instruksi ADD 51 Alamat
:
Memori Data
50
23
51
61
52
47
(50) A
(51) + (A) A Mikroprosesor 2 Program Counter 84 Accumulator
61 + 23 = 84
Setelah instruksi STORE 52 Alamat
Memori Data
50
35
51
61
52
84
: (A) 52 Mikroprosesor 3 Program Counter 84 Accumulator
Sistem Mikroprosesor/Teknik Elektro/FTI/Universitas Jayabaya/Modul ke 7/ Hal 7-6
7.2.2 Indirect Addressing Informasi alamat yang dituju disimpan/berada di dalam alamat yang “disebutkan” dalam instruksi, atau dengan kata lain merupakan “alamat dari alamat” yang menjadi bagian instruksi. Diberikan simbol/tanda addressing.
@ , yang merupakan tanda menggunakan indirect
Contoh 1 (satu) instruksi : LOAD @ 50 Yaitu memasukkan/meng-copy “isi dari isi” alamat 100 ke akumulator (A). Jadi bila isi alamat 50 adalah 23, maka yang di-copy adalah isi dari alamat 23, jadi alamat yang dimaksud berada di alamat 50, atau biasa ditulis : ((50)) A ; tanda kurung rangkap “(( ))” menunjukkan “ISI DARI ISI LOKASI” ADD @ 50 Yaitu menambahkan “isi dari isi” lokasi memori atau “isi dari isi” alamat 50 ke isi akumulator (A), dan hasilnya disimpan kembali di akumulator, atau biasa ditulis : ((50)) + (A) A STORE @ 50 Yaitu memasukkan/meng-copy/menyimpan isi akumulator (A) ke alamat yang ada di dalam alamat 50. Jadi bila alamat 50 berisi angka 23, maka isi akumulator dimasukkan/di-copy ke alamat 23, bukan ke alamat 50. Atau biasa ditulis : (A) (50) 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 ADD @ 51 STORE @ 52
Sistem Mikroprosesor/Teknik Elektro/FTI/Universitas Jayabaya/Modul ke 7/ Hal 7-7
Proses yang terjadi antara mikroprosesor dengan memori seperti berikut ini.
Kondisi awal Alamat 0
LOAD
@ 50
1
ADD
@ 51
2
STORE
@ 52
Alamat
Memori Program
Memori Data
23 : 47
53 : 34
: 50
: 23
51
61
52 : 61
47 : 12
Setelah instruksi LOAD @ 50 Alamat
Mikroprosesor 0 Program Counter 0 Accumulator
:
((50)) A
Memori Data
23 : 47
53 : 34
: 50
: 23
51
61
52 : 61
47 : 12
Mikroprosesor 1 Program Counter 53 Accumulator
Sistem Mikroprosesor/Teknik Elektro/FTI/Universitas Jayabaya/Modul ke 7/ Hal 7-8
Setelah instruksi ADD @ 51 Alamat
:
((51)) + (A) A
Memori Data
23 : 47
53 : 34
: 50
: 23
51
61
52 : 61
47 : 12
Mikroprosesor 2 Program Counter 65 Accumulator
12 + 53 = 65
Setelah instruksi STORE @ 52 Alamat
: (A) (52)
Memori Data
23 : 47
53 : 65
: 50
: 23
51
61
52 : 61
47 : 12
Mikroprosesor 3 Program Counter 65 Accumulator
Kerugian Indirect Addressing : Lebih lambat bila dibandingkan dengan direct addressing Keuntungan Indirect Addressing : Lebih fleksibel bila dibandingkan dengan direct addressing, sehingga bila ingin mengubah data dapat langsung diubah dengan tidak mengubah program. Sangat baik untuk subrutin, terutama subrutin yang dipakai pada proses data untuk area memori yang berbeda. Sehingga tidak perlu mengubah subrutinnya, tetapi cukup mengubah datanya saja. Sistem Mikroprosesor/Teknik Elektro/FTI/Universitas Jayabaya/Modul ke 7/ Hal 7-9
7.2.3 Immediate Addressing Data yang sebenarnya atau data yang diolah merupakan bagian dari instruksi. Diberikan simbol/tanda addressing.
# , yang merupakan tanda menggunakan immediate
Contoh 1 (satu) instruksi : LOAD # 50 Yaitu memasukkan data/angka 50 ke akumulator (A), atau biasa ditulis : 50 A ADD # 50 Yaitu menambahkan/menjumlahkan isi akumulator (A) dengan data atau angka 50, dan hasilnya disimpan kembali di akumulator, atau biasa ditulis : 50 + (A) A Kerugian Immediate Addressing : Bila akan mengubah data, maka harus mengubah programnya. Keuntungan Immediate Addressing : Mengeksekusi paling cepat sebab mikroprosesor mengambil data bersamaan dengan instruksi. Paling mudah bagi programmer. Paling fleksibel diantara metode pengalamatan yang lain (selama data dan alamat tetap). Convenient (sangat baik/sesuai/tepat), tetapi tidak untuk hal-hal atau program yang besar. Sebuah contoh program pendek immediate addressing :
yang menggunakan direct, indirect, dan
Kondisi awal Alamat 0 1 2 3 4 5
Memori Program LOAD # 10 ADD 51 ADD @ 52 ADD #8 STORE @ 52 STORE 52
Sistem Mikroprosesor/Teknik Elektro/FTI/Universitas Jayabaya/Modul ke 7/ Hal 7-10
Alamat
47
34
: 50
: 23
51
61
52 : 61
47 : 12
Mikroprosesor 0 Program Counter 0 Accumulator
Setelah instruksi LOAD # 10 Alamat
Memori Data
10 A
Memori Data
47
34
: 50
: 23
51
61
52 : 61
47 : 12
Setelah instruksi ADD 51 Alamat
:
Mikroprosesor 1 Program Counter 10 Accumulator
:
(51) + (A) A
Memori Data
47
34
: 50
: 23
51
61
52 : 61
47 : 12
Mikroprosesor 2 Program Counter 71 Accumulator
61 + 10 = 71
Sistem Mikroprosesor/Teknik Elektro/FTI/Universitas Jayabaya/Modul ke 7/ Hal 7-11
Setelah instruksi ADD @ 51 Alamat
:
((51)) + (A) A
Memori Data
47
34
: 50
: 23
51
61
52 : 61
47 : 12
Mikroprosesor 3 Program Counter 83 Accumulator
12 + 71 = 83
Setelah instruksi ADD # 5 Alamat
:
5 + (A) A
Memori Data
47
34
: 50
: 23
51
61
52 : 61
47 : 12
Mikroprosesor 4 Program Counter 88 Accumulator
5 + 83 = 88
Setelah instruksi STORE @ 52 Alamat
: (A) (52)
Memori Data
47
88
: 50
: 23
51
61
52 : 61
47 : 12
Mikroprosesor 5 Program Counter 88 Accumulator
Sistem Mikroprosesor/Teknik Elektro/FTI/Universitas Jayabaya/Modul ke 7/ Hal 7-12
Setelah instruksi STORE 52 Alamat
: (A) 52
Memori Data
47
88
: 50
: 23
51
11
52 : 61
88 : 12
Mikroprosesor 6 Program Counter 88 Accumulator
Sehingga alamat yang isinya berubah adalah (47) = 88, (52) = 88
SOAL LATIHAN 1. Tentukan alamat yang isinya berubah (dan sebutkan isi alamat yang berubah tersebut) setelah program pendek berikut ini diekskusi. Alamat 0 1 2 3 4 5 6
Memori Program LOAD # 23 LOAD 47 ADD @ 52 ADD 61 STORE @ 52 STORE 52 STORE @ 50
Kondisi awal Alamat
Memori Data
23 : 47
53 : 34
: 50
: 23
51
61
52 : 61
47 : 12
Mikroprosesor 0 Program Counter 0 Accumulator
Sistem Mikroprosesor/Teknik Elektro/FTI/Universitas Jayabaya/Modul ke 7/ Hal 7-13
2. Dengan menggunakan kondisi awal seperti soal latihan nomor 1, maka tentukan alamat yang isinya berubah (dan sebutkan isi alamat yang berubah tersebut) setelah program pendek berikut ini diekskusi. Alamat
Memori Program
0
LOAD
@ 51
1
LOAD
# 13
2
ADD
@ 52
3
STORE
4
ADD
5
STORE @ 50
6
ADD
7
STORE
52 #6 #8 51
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.
Sistem Mikroprosesor/Teknik Elektro/FTI/Universitas Jayabaya/Modul ke 7/ Hal 7-14