Diktat Mikroprosesor Dan Antarmuka

113
HalamanJudul Diktat MK Mikroprosesor dan Antarmuka Disusun oleh : Raditiana Patmasari Inung Wijayanto Ramdhan Nugraha Fakultas Teknik Elektro Universitas Telkom Bandung 2014

description

Diktat Mikroprosesor Dan Antarmuka

Transcript of Diktat Mikroprosesor Dan Antarmuka

Page 1: Diktat Mikroprosesor Dan Antarmuka

HalamanJudul

Diktat MK Mikroprosesor dan Antarmuka

Disusun oleh :

Raditiana Patmasari

Inung Wijayanto

Ramdhan Nugraha

Fakultas Teknik Elektro

Universitas Telkom

Bandung

2014

Page 2: Diktat Mikroprosesor Dan Antarmuka
Page 3: Diktat Mikroprosesor Dan Antarmuka

Halaman Pengesahan

Diktat Mata Kuliah Mikroprosesor dan Antarmuka

Diktat Mata Kuliah Mikroprosesor dan Antarmuka telah selesai disusun dan telah disahkan untuk

segera dapat digunakan

Bandung, Oktober 2014

Page 4: Diktat Mikroprosesor Dan Antarmuka

Prakata

Mata kuliah Mikroprosesor dan Antarmuka adalah mata kuliah wajib pada Fakultas Teknik

Elektro, yang ditempuh mahasiswa pada semester 4. Pada Kurikulum 2012 tergolong pada

kelompok mata kuliah MKB ( Matakuliah Keahlian berkarya ), yang merupakan kelompok

bahan kajian dan pelajaran yang bertujuan menghasilkan tenaga ahli dengan kekaryaan

berdasarkan dasar ilmu dan ketrampilan yang dikuasai.

Berdasarkan silabus yang telah disusun, kompetensi yang ingin dicapai dari matakuliah ini

adalah mahasiswa mengetahui proses yang terjadi didalam mikroprosesor bila suatu instruksi

dijalankan, baik aliran data antara mikroprosesor, memori dan I/O, perpindahan data antar

register, proses aritmatik dan logika. Mahasiswa mampu merancang sistem mikroprosesor untuk

keperluan sederhana, baik perangkat lunak maupun perangkat kerasnya, pemilihan antarmuka

yang sesuai serta interkoneksinya. Mahasiswa mempunyai wawasan mengenai perkembangan

mikroprosesor dan sistemnya sampai saat ini serta aplikasinya.

Susunan materi pada diktat ini meliputi review konsep bilangan, pengenalan mikroprosesor,

arsitektur Mikroprosesor 8088, struktur memori, set instruksi pada Mikroprosesor 8088,

komponen penunjang antarmuka Mikroprosesor 8088, antarmuka denga memori, antarmuka

dengan perangkat I/O, dan interrupt.

Diharapkan melalui Diktat Ajar Mikroprosesor dan Antarmuka, mahasiswa dapat terbantu

dalam memahami dan mempelajari matakuliah ini sesuai dengan silabus dan kompetensi yang

telah ditetapkan. Tentunya masih banyak kekurangan dalam penyusunan diktat, kami mohon

maaf sebesar-besarnya dan semoga dapat memberikan manfaat untuk perkuliahan Mikroprosesor

dan Antarmuka.

Bandung, Oktober 2014

Tim Penyusun

Page 5: Diktat Mikroprosesor Dan Antarmuka

Daftar Isi

HalamanJudul ................................................................................................................................. 1

Halaman Pengesahan ...................................................................................................................... 3

Prakata............................................................................................................................................. 4

Daftar Isi ......................................................................................................................................... 5

Bab I ................................................................................................................................................ 9

Sistem Bilangan .............................................................................................................................. 9

1. Sistem Bilangan Puluhan ..................................................................................................... 9

2. Bilangan Biner, Oktal dan Heksadesimal .......................................................................... 11

2.1. Bilangan Biner ............................................................................................................ 11

2.2. Bilangan Oktal ............................................................................................................ 14

2.3. Bilangan Heksadesimal .............................................................................................. 15

3. Konversi Bilangan ............................................................................................................. 17

3.1. Konversi Desimal Biner ......................................................................................... 17

3.2. Konversi BinerOktal dan Heksadesimal ................................................................. 19

3.3. Konversi Desimal Oktal dan Heksadesimal. ......................................................... 20

Bab II ............................................................................................................................................ 22

Pengenalan Mikroprosesor............................................................................................................ 22

1. Organisasi Komputer ......................................................................................................... 22

1.1. Sistem Mikroprosesor ................................................................................................. 23

1.2. Sistem Memori ........................................................................................................... 23

1.3. Sistem Input Output .................................................................................................... 24

1.4. Sistem bus ................................................................................................................... 24

2. Interaksi Mikroprosesor dan Memori ................................................................................ 25

3. Proses Kerja Instruksi ........................................................................................................ 26

Bab III ........................................................................................................................................... 27

Mikroprosesor Intel 8088 .............................................................................................................. 27

1. Model Arsitektur Mikroprosesor 8088/8086 ..................................................................... 27

1.1. EU ( Execution Unit ) ................................................................................................. 29

1.2. BIU ( Bus Interface Unit ) .......................................................................................... 29

2. Register .............................................................................................................................. 30

Page 6: Diktat Mikroprosesor Dan Antarmuka

Bab IV ........................................................................................................................................... 35

Struktur Memori............................................................................................................................ 35

1. Peta Memori dan Pengalamatannya ................................................................................... 35

2. Segmentasi ......................................................................................................................... 36

3. Alamat Fisik ....................................................................................................................... 38

Bab V ............................................................................................................................................ 40

Pengenalan Instruksi ..................................................................................................................... 40

1. Proses Kerja (Bagaimana uP8088 mengerjakan instruksi) ................................................ 41

2. Jenis Instruksi..................................................................................................................... 43

2.1. Transfer Data .............................................................................................................. 43

2.2. Aritmatika ................................................................................................................... 44

2.3. Manipulasi bit ............................................................................................................. 44

2.4. Instruksi String ........................................................................................................... 45

2.5. Transfer Program ........................................................................................................ 45

2.6. Kontrol Prosesor ......................................................................................................... 46

3. Mode Pengalamatan ........................................................................................................... 46

4. Instruksi MOV ................................................................................................................... 47

5. Instruksi PUSH & POP ...................................................................................................... 50

5.1. Stack ........................................................................................................................... 50

6. 8086/8088 Instruction Set Summary ................................................................................. 54

6.1. Data Transfer .............................................................................................................. 54

6.2. Arithmetic ................................................................................................................... 55

6.3. Logic ........................................................................................................................... 56

6.4. Control Transfer ......................................................................................................... 56

7. Encoding Instruksi Mesin .................................................................................................. 59

Bab VI ........................................................................................................................................... 62

Komponen Penunjang Antarmuka 8088 ....................................................................................... 62

1. Decoder .............................................................................................................................. 63

2. Three State Buffer .............................................................................................................. 63

Bab VII.......................................................................................................................................... 65

Interface 8088 dan Memori ........................................................................................................... 65

1. Pengenalan Hubungan Mikroprosesor 8088 dan Memori ................................................. 65

Page 7: Diktat Mikroprosesor Dan Antarmuka

1.1. Hubungan Pin Memori ............................................................................................... 67

1.2. ROM Memori ............................................................................................................. 65

1.3. RAM Memori ............................................................................................................ 66

2. Interfacing memori pada Mikroprosesor 8088 .................................................................. 70

3. Timing Diagram ................................................................................................................. 76

Bab VIII ........................................................................................................................................ 80

Interface 8088 dan I/O .................................................................................................................. 80

1. Pengenalan Perangkat IO ................................................................................................... 80

1.1. Interface Input Utama ................................................................................................. 80

1.2. Interface Output Utama .............................................................................................. 81

1.3. Handshaking ............................................................................................................... 81

2. Jenis-jenis Pemetaan Perangkat IO .................................................................................... 82

2.1. Berdasarkan port / nomor port yang digunakan ......................................................... 82

2.2. Berdasarkan peta alamatnya ....................................................................................... 83

Memory-mapped I/O ...................................................................................................... 83

3. PPI 8255 ............................................................................................................................. 86

3.1. Blok Diagram dan Port-Port pada PPI 8255. .............................................................. 86

4. Antarmuka PPI 8255 dan I/O (Switch,LED, 7 seg) ........................................................... 95

4.1. Antarmuka Masukan Dasar ........................................................................................ 95

4.2. Antarmuka Keluaran Dasar ........................................................................................ 96

5. Pemrograman pada PPI 8255 ............................................................................................. 98

Bab IX ......................................................................................................................................... 100

Interupsi ...................................................................................................................................... 100

1. Jenis-jenis Interupsi ......................................................................................................... 100

2. Interrupt Vector ................................................................................................................ 104

3. Interrupt Service Routine ................................................................................................. 104

4. Emulator 8086 : Eksekusi program Interrupt .................................................................. 105

5. Interupsi BIOS dan DOS ................................................................................................. 107

5.1. Sistem DOS .............................................................................................................. 107

5.2. Pengaturan Memori .................................................................................................. 107

5.3. Pengaturan I/O dan Perangkat .................................................................................. 108

5.4. Pemrograman DOS ................................................................................................... 108

Page 8: Diktat Mikroprosesor Dan Antarmuka

5.5. Program-program DOS............................................................................................. 111

DaftarPustaka .............................................................................................................................. 113

Page 9: Diktat Mikroprosesor Dan Antarmuka

Bab I

Sistem Bilangan

Bilangan dalam kamus besar bahasa indonesia diartikan sebagai satuan dalam sistem

matematis yang abstrak dan dapat diunitkan, ditambah atau dikalikan. Sistem bilangan adalah

sebuah cara yang digunakan untuk mewakili besaran dari sebuah item fisik. Banyak sistem

bilangan yang biasa digunakan dalam perhitungan matematis, beberapa diantaranya sudah jarang

dipakai bahkan tidak dipakai lagi sama sekali dan ada pula sistem bilangan yang hanya dipakai

pada hal-hal tertentu saja. Seperti bilangan limaan (quinary) dahulu dipergunakan oleh orang

Eskimo dan orang Indian di Amerika Utara. Sistem bilangan Romawi yang dahulu sangat umum

dipakai, kini hanya terbatas pada pemberian nomor urut seperti I untuk pertama, II untuk kedua,

dst. Sistem bilangan yang banyak dipergunakan oleh manusia adalah sistem bilangan desimal,

yaitu sistem bilangan yang menggunakan sepuluh macam simbol untuk mewakili suatu besaran.

Sistem ini banyak digunakan karena manusia mempunyai sepuluh jari untuk dapat membantu

perhitungan.

Lain halnya dengan komputer, komputer menggunakan komponen-komponen digital yang

bersifat saklar (switch). Logika di komputer diwakili oleh dua bentuk keadaan, yaitu tidak ada

arus (off) dan ada arus (on). Melihat sifat tersebut, sistem bilangan yang sesuai adalah sistem

bilangan biner. Kesederhanaan perubahan nilai bilangan biner ke bilangan oktal atau

heksadesimal membuat bilangan oktal dan heksadesimal juga sering digunakan di dalam dunia

komputer.

1. Sistem Bilangan Puluhan

Sistem bilangan puluhan atau sering disebut sistem bilangan desimal adalah sistem bilangan

yang biasa digunakan oleh manusia sehari hari. Sistem bilangan ini tersusun oleh sepuluh buah

simbol yang mempunyai nilai berbeda satu sama lain yaitu: ‘0’, ‘1’, ‘2’, ‘3’, ‘4’, ‘5’, ‘6’, ‘7’, ‘8’,

‘9’. Dasar/basis/akar (base, radix) dari sistem bilangan ini adalah 10. Nilai yang terkandung di

dalam setiap simbil disebut nilai mutlak (absolute value). Bentuk nilai ini dapat berupa integer,

desimal atau pecahan. Nilai yang terkandung oleh setiap angka di dalam suatu bilangan

ditentukan oleh peletakan angka tersebut didalam deretan disamping oleh nilai mutlaknya

(positional value system). Angka yang berada paling kanan dari suatu bilangan bulat tanpa

Page 10: Diktat Mikroprosesor Dan Antarmuka

bagian pecahan disebut berada pada letak ke 0 dan yang di sebelah kirinya adalah letak ke 1, ke 2

dan seterusnya sampai dengan (n-1). Nilai letak dari kedudukan ke 0 adalah terkecil, yaitu 100 =

1, nilai letak kedudukan ke 2 101 = 10; 102 = 100 dan seterusnya sampai dengan letak

kedudukan 𝑛 − 1 adalah 10𝑛−1.

Untuk bilangan yang mengandung bagian pecahan, bagian bulat dan pecahannya dipisahkan

oleh tanda koma (tanda titik di Inggris, Amerika, dll). Angka di kanan tanda koma puluhan

(decimal point) disebut pada kedudukan negatif, yaitu letak kedudukan ke -1, ke -2 dan

seterusnya dan nilai letaknya adalah 10−1, 10−2, … , 10−𝑚 , untuk kedudukan ke (−𝑚) di kanan

koma puluhan

Nilai yang diberikan oleh suatu angka pada suatu bilangan adalah hasil kali dari pada nilai

mutlak dan nilai letaknya. Jadi, nilai yang diberikan oleh angka 3 pada bilangan 1234,567adalah

3× 101 = 30 dan yang diberikan oleh angka 6 adalah 6 × 10−2 = 0.06

Secara umum, suatu bilangan puluhan yang terdiri atas 𝑛 angka di kiri tanda koma dan 𝑚

angka di kanan tanda koma dapat dinyatakan kedalam bentuk:

mnn aaaaaaaaN ...,... 2101221 (1.1)

Bentuk umum penentuan harga dari bilangan puluhan dapat dinyatakan dalam bentuk:

m

m

n

n

n

n

aaa

aaaaaN

10...1010

...101010...1010

2

2

1

1

1

1

0

0

1

1

2

2

1

1

(1.2)

Contoh:

Bilangan 1234 dapat diartikan:

Absolute

Value Operasi

Position

Value/Place

Value

Hasil

1 x 103 1000

2 x 102 200

3 x 101 30

4 x 100 4

Jumlah 1234

Absolute value merupakan nilai untuk masing-masing digit bilangan. Position value adalah

merupakan penimbang atau bobot dari masing-masing digit tergantung dari letak posisinya, yaitu

nernilai basis dipangkatkan dengan urutan posisinya. Untuk bilangan pecahan desimal dapat

dilihat dari contoh berikut:

Page 11: Diktat Mikroprosesor Dan Antarmuka

Contoh:

Bilangan 1234,567 dapat diartikan:

Absolute

Value Operasi

Position

Value/Place

Value

Hasil

1 x 103 1000

2 x 102 200

3 x 101 30

4 x 100 4

5 x 10-1 0,5

6 x 10-2 0,06

7 x 10-3 0,007

Jumlah 1234,567

2. Bilangan Biner, Oktal dan Heksadesimal

Semua sistem digital bekerja dengan menggunakan sistem bilangan biner. Sehingga dengan

kata lain sistem bilangan biner merupakan sistem bilangan yang paling penting dalam sistem

digital. Selain sistem bilangan biner, sistem yang sering dipakai dalam pengkodean instruksi oleh

sistem digital adalah sistem bilangan oktal dan heksadesimal.

Harga dalam puluhan (desimal) yang dinyatakan oleh suatu bilangan biner, oktal, heksadesimal

atau yang lainnya yang bukan desimal dapat dihitung dengan menggunakan:

m

m

n

n

n

nmnn RaRaRaRaRaRaaaaaaaa

............ 1

1

0

0

1

1

2

2

1

1210121 (1.3)

1na = Angka paling kiri

R = Angka Dasar dari sistem bilangan

n = Cacah angka yang menunjukan bilangan bulat

m = Cacah angka yang menunjukan bilangan pecahan

2.1. Bilangan Biner

Sistem bilangan biner mempunyai hanya dua buah simbol angka, yaitu 0 dan 1. Dasar dari

sistem bilangan ini adalah dua. Harga yang ditunjukkan oleh bilangan biner dalam puluhan dapat

dihitung dengan menggunakan persamaan 1.2 di atas dengan memasukkan R=2 ke dalamnya.

Harga bilangan biner 110,10 adalah 5,62021202121 21012

Page 12: Diktat Mikroprosesor Dan Antarmuka

Untuk membedakan penggunaan suatu bilangan kita harus mencantumkan dasar bilangan

yang digunakan.Sebagai contoh, untuk penulisan bilangan biner dapat dilakukan dengan

menambahakn angka ‘2’ di belakang deretan bilangan.

2)110( atau 21101

2.1.1. Operasi Aritmatika pada Bilangan Biner

a. Penjumlahan

Dasar penjumlahan bilangan biner adalah:

Tabel 1 tabel penjumlahan bilangan biner

Penjumlahan

Biner Hasil Keterangan

0 + 0 0

0 + 1 1

1 + 0 1

1 + 1 0 Terdapat carry of 1

Pada penjumlahan 1 + 1 terdapat carry of sebesar 1. Jika di dalam bilangan desimal,

1+1=2, karena di dalam bilangan biner, nilai terbesarnya adalah 1, maka harus dikurangi

dengan 2 (basis).

Contoh:

11101010 +11000

111 Carry of

b. Pengurangan

Pengurangan bilangan biner dilakukan dengan cara yang sama dengan pengurangan

bilangan desimal. Dasar pengurangan untuk masing-masing digit bilangan biner adalah:

Tabel 2 tabel pengurangan bilangan biner

Pengurangan

Biner Hasil Keterangan

0 – 0 0

1 – 0 1

1 – 1 0

0 – 1 1 Dengan borrow of 1

Page 13: Diktat Mikroprosesor Dan Antarmuka

Contoh:

1101111011110

-

11 Borrow of

c. Perkalian

Perkalian bilangan biner dilakukan dengan cara yang sama dengan cara perkalian pada

bilangandesimal. Dasar perkalian untuk bilangan biner adalah:

Tabel 3 tabel perkalian bilangan biner

Perkalian

Biner Hasil

0 x 0 0

1 x 0 0

1 x 1 0

0 x 1 1

Contoh:

110101 x110

00011011110

+

d. Pembagian

Pembagian bilangan biner dilakukan dengan cara yang sama dengan bilangan desimal.

Pembagian biner 0 tidak mampunyai arti. Dasar pembagian untuk bilangan biner adalah

Tabel 4 tabel pembagian bilangan biner

Pembagian

Biner Hasil

0 ÷ 1 0

1 ÷ 1 1

Contoh:

1111101101101

-101101

0101101

-

-0

11001

Page 14: Diktat Mikroprosesor Dan Antarmuka

2.2. Bilangan Oktal

Dasar dari bilangan oktal adalah delapan, oleh karena itu bilangan oktal mempunyai delapan

simbol angka yaitu: 0, 1, 2, 3, 4, 5, 6, 7. Harga desimal yang dinyatakan oleh sebuah bilangan

oktal diperoleh dengan memasukan R=8 kedalam persamaan 1.3.

10

1012

8 )125,83(84838281)4,123(

2.2.1. Operasi Aritmatika pada Bilangan Oktal

a. Penjumlahan

Langkah-langkah penjumlahan octal :

- Tambahkan masing-masing kolom seperti penjumlahan secara desimal.

- Yang perlu diingat adalah nilai maksimal bilangan oktal adalah 7.

- Jika hasil penjumlahan lebih dari 7 maka akan menghasilkan carry of untuk

penjumlahan kolom selanjutnya.

Contoh:

55126

+203

11 Carry of

b. Pengurangan

Pengurangan bilanganoktal dapat dilaukan secara sama dengan pengurangan bilangan

desimal.

Contoh:

154127

-25

Borrow of11

c. Perkalian

Langkah langkah perkalian bilangan oktal:

- kalikan masing-masing kolom secara desimal

- rubah dari hasil desimal ke octal

Page 15: Diktat Mikroprosesor Dan Antarmuka

- tuliskan hasil dari digit paling kanan dari hasil octal

- kalau hasil perkalian tiap kolol terdiri dari 2 digit, maka digit paling kiri

merupakan carry of untuk ditambahkan pada hasil perkalian kolom selanjutnya.

Contoh:

1614 x70

16+

250

410x610=2410=308

410x110x310=710=78110x610=610=68

110x110=110=18

d. Pembagian

Pembagian bilangan oktal dapat dilakukan dengan prinsip yang sama dengan pembagian

bilangan desimal

Contoh:

2501414

-110110

16

-0

2.3. Bilangan Heksadesimal

Sistem bilangan desimal menggunakan 16 macam simbol bilangan berbasis 16 digit angka

yaitu:

FEDCBA ,,,,,,9,8,7,6,5,4,3,2,1,0 dimana A=10, B=11, C=12, D=13, E=14 dan F=15.

Position value system bilangan desimal adalah perpangkatan dari nilai 16. Contoh:

)10()16( ....7 C

1991927

19216

7167

1

0

C

Jadi hasilnya adalah 199(10)

2.3.1. Operasi Aritmatika Pada Bilangan Heksadesimal

a. Penjumlahan

Penjumlahan bilangan heksadesimal dapat dilakukan secara sama dengan penjumlahan

bilangan octal, dengan langkah-langkah sebagai berikut :

Page 16: Diktat Mikroprosesor Dan Antarmuka

Langkah-langkah penjumlahan heksadesimal :

tambahkan masing-masing kolom secara desimal

rubah dari hasil desimal ke heksadesimal

tuliskan hasil dari digit paling kanan dari hasil heksadesimal

kalau hasil penjumlahan tiap-tiap kolom terdiri dari dua digit, maka digit paling kiri

merupakan carry of untuk penjumlahan kolom selanjutnya.

Contoh:

BAD431

+FDE

D16+116=1310+110=E16

A16+316=1010+310=D16

B16+416=1110+410=F16

b. Pengurangan

Pengurangan bilangan heksadesimal dapat dilakukan secara sama dengan pengurangan

bilangan desimal.

Contoh:

12E1627

-CBA 16 10 (pinjam) + 1 10 - 710 = 10 10 = A 16

14 10 - 7 10 - - 1 10 (dipinjam) = 11 10 =B 16

1610 (pinjam) + 2 10 - 610 = 12 10 = C 16

1 10 – 1 10 (dipinjam) 0 10 = 0 16

c. Perkalian

Langkah – langkah :

kalikan masing-masing kolom secara desimal

rubah dari hasil desimal ke octal

tuliskan hasil dari digit paling kanan dari hasil octal

kalau hasil perkalian tiap kolol terdiri dari 2 digit, maka digit paling kiri merupakan

carry of untuk ditambahkan pada hasil perkalian kolom selanjutnya.

Contoh:

Page 17: Diktat Mikroprosesor Dan Antarmuka

AC1B

x764AC

C16xB16=1210x1110=8416

A16xB16+816=1010x1110+810=7616

C16x116=1210x110=1210=C16

A16x116=1010x110=1010=A 16

+1224

d. Pembagian

Pembagian bilangan heksadesimal dapat dilakukan dengan prinsip yang sama dengan

pembagian bilangan desimal

Contoh:

1B 1214

10E 1B16xA16 = 2710x1010=27010= 10E16

144

144 1B 16 x C16 = 2710 x 10 10 = 3240 10=14416

0

-

-

AC

3. Konversi Bilangan

Konversi bilangan desimal ke sistem biner diperlukan dalam menerjemahkan keinginan

manusia kedalam kode-kode yang dikenal oleh sistem digital, terutama komputer digital.

Konversi dari biner ke desimal diperlukan untuk menterjemahkan kode hasil pengolahan sistem

digital ke informasi yang dikenal oleh manusia. Pengubahan (konversi) dari biner ke oktal dan

heksadesimal dan sebaliknya merupakan pengantara konversi dari/ke biner ke/dari desimal.

Konversi ini banyak dilakukan karena disamping cacah angka biner yang disebut juga "bit",

singkatan dari "binary digit", jauh lebih besar dibandingkan dengan angka-angka pada sistem

oktal dan heksadesimal, juga karena konversi itu sangat mudah. Konversi sebaliknya akan

diterangkan dalam sub-sub bab berikut ini.

3.1. Konversi Desimal Biner

Kalau kita perhatikan konversi dari biner ke desimal dengan memakai pers.(1.3), maka dapat

dilihat bahwa untuk bagian bulat (di kiri tanda koma) kita peroleh dengan melakukan perkalian

dengan 2 setiap kita bergerak ke kiri. Untuk bagian pecahan, kita melakukan pembagian dengan

Page 18: Diktat Mikroprosesor Dan Antarmuka

2 setiap kita bergerak ke kanan. Untuk melakukan konversi dari desimal ke biner kita melakukan

sebaliknya, yaitu untuk bagian bulat bilangan desimal kita bagi dengan 2 secara berturut-turut

dan sisa pembagian pertama sampai yang terakhir merupakan angka-angka biner paling kanan ke

paling kiri. Untuk bagian pecahan, bilangan desimal dikalikan 2 secara berturut-turut dan angka

di kiri koma desimal hasil setiap perkalian merupakan angka biner yang dicari, berturut-turut dari

kiri ke kanan.

Contoh 1:

Tentukanlah bilangan biner yang berharga sama dengan bilangan desimal 118.

Solusi:

Pembagian secara berturut-turut akan menghasilkan:

118 : 2 = 59 sisa 0

59 : 2 = 29 sisa 1

29 : 2 = 14 sisa 1

14 : 2 = 7 sisa 0

7 : 2 = 3 sisa 1

3 : 2 = 1 sisa 1

1 : 2 = 0 sisa 1

0 : 2 = 0 sisa 0

Jadi 118(10)=01110110(2)

Perhatikan bahwa walaupun pembagian diteruskan, hasil berikutnya akantetap 0 dan sisanya juga

tetap 0. Ini benar karena penambahan angka 0 di kiri bilangantidakmengubahharganya.

Contoh 2.

Tentukanlah bilangan biner yang berharga sama dengan bilangan desimal 0,8125.

Solusi

Pengalian secara berturut-turut akan menghasilkan :

0.8125 x 2 = 1,625 0,500 x 2 = 1,000

0,625 x 2 = 1,250 0,000 x 2 = 0,000

0,250 x 2 = 0,500

Jadi, 0,8125(10) = 0,11010(2)

Perhatikan bahwa angka-angka biner yang dicari adalah angka yang di kiri tanda koma, dan yang

paling kiri dalam bilangan biner adalah angka di kiri koma hasil perkalian pertama. Juga

Page 19: Diktat Mikroprosesor Dan Antarmuka

perhatikan bahwa walaupun pengalian diteruskan hasil perkalian akan tetap 0 dan ini benar

karena penambahan angka 0 ke kanan tidak akan mengubah harganya.

Contoh 3.

Ubahlah bilangan desimal 457,65 ke bilangan biner.

Solusi

Untuk melakukan konversi ini, dilakukan pembagian untuk bagian bulatnya dan pengalian untuk

bagian pecahannya seperti yang dilakukan pada kedua contoh sebelumnya, dengan hasil sebagai

berikut ini:

457 : 2 sisa 1

0,65 x 2 = 1,3

228 : 2 sisa 0

0,30 x 2 = 0,6

114 : 2 sisa 0

0,60 x 2 = 1,2

57 : 2 sisa 1

0,20 x 2 = 0,4

28 : 2 sisa 0

0,40 x 2 = 0,8

14 : 2 sisa 0

0,80 x 2 = 1,6

7 : 2 sisa 1

0,60 x 2 = 1,2

3 : 2 sisa 1

0,20 x 2 = 0,4

1 : 2 sisa 1

0,40 x 2 = 0,8

0,80 x 2 = 1,6

Jadi 457,65(10)=111001001,1010011001 … (2)

Dari contoh terakhir ini dapat dilihat bahwa untuk bagian pecahan, pengalian dengan 2 akan

berulang-ulang menghasilkan deretan 1,6; 1,2; 0,4; 0,8 yang berarti bahwa deretan angka biner

11001100 akan berulang terus. Ini berarti bahwa ada bilangan pecahan puluhan yang tak dapat

disajikan dalam biner dengan ketelitian 100 %. Kesalahan atau ralat konversi itu semakin kecil

bila cacah angka biner (bit) yang dipergunakan lebih besar. Bagaimanapun juga, cacah bit dalam

setiap sistem digital sudah tertentu

3.2. Konversi BinerOktal dan Heksadesimal

Kemudahan konversi biner-oktal-heksadesimal secara timbal balik terletak pada kenyataan

bahwa 3 bit tepat dapat menyatakan angka terbesar dalam oktal, yaitu 7, dan 4 bit tepat dapat

menyatakan angka terbesar dalam heksadesimal, yaitu F=15(10). Ini berarti bahwa untuk

Page 20: Diktat Mikroprosesor Dan Antarmuka

mengubah bilangan biner ke oktal, bilangan biner dapat dikelompokkan atas 3 bit setiap

kelompok dan untuk mengubah biner ke heksadesimal, bilangan biner dikelompokkan atas 4 bit

setiap kelompok. Pengelompokan harus dimulai dari kanan bergerak ke kiri. Sebagai contoh,

untuk memperoleh setara dalam oktal dan heksadesimal, bilangan biner 1011001111 dapat

dikelompokkan sebagai berikut:

1 011 001 111 Desimal

1 3 1 7 Oktal

10 1100 1111 Desimal

2 C F Heksadesimal

Konversi sebaliknya, dari oktal dan heksadesimal ke biner juga dapat dilakukan dengan mudah

dengan menggantikan setiap angka dalam oktal dan heksadesimal dengan setaranya dalam biner.

Contoh 1

3456(8)=011 100 101 110(2)

72E(16)=0111 0010 11110(2)

Dari contoh ini dapat dilihat bahwa konversi dari oktal ke heksadesimal dan sebaliknya akan

lebih mudah dilakukan dengan mengubahnya terlebih dahulu ke biner.

Contoh 2

3257(8) = 011 010 101 111(2) 0110 1010 1111(2) = 6AF(16)

Perhatikan bahwa bilangan biner dalam konversi oktal biner dan konversi biner-heksadesimal

hanyalah berbeda dalam pengelompokannya saja.

3.3. Konversi Desimal Oktal dan Heksadesimal.

Konversi desimal ke oktal dan desimal ke heksadesimal dapat dilakukan dengan melakukan

pembagian berulang-ulang untuk bagian bulat dan perkalianberulang-ulang untuk bagian

pecahan seperti yang dilakukan pada konversi desimal-binerdi bagian depan. Sebenarnya cara ini

berlaku untuk semua dasarsistem bilangan.

Contoh

Page 21: Diktat Mikroprosesor Dan Antarmuka

Konversi untuk 205,05(10)

Oktal

Heksadesimal

205 : 8 = 25 sisa 5

205 : 16 = 12 sisa 13 = D

25 : 8 = 3 sisa 1

12 : 16 = 12 sisa 12 = C

3 : 8 = 0 sisa 3

0,05 x 8 = 0,4

0,05 x 16 = 0,8

0,40 x 8 = 3,2

0,80 x 16 = 12,8 = C

0,20 x 8 = 1,6

0,80 x 16 = 12,8 = C

0,60 x 8 = 4,8

0,80 x 8 = 6,4

0,40 x 8 = 3,2

0,20 x 8 = 1,6

Jadi 205,05(10) = 315,031463146…(8) = CD,0CCCC…(10)

Page 22: Diktat Mikroprosesor Dan Antarmuka

Bab II

Pengenalan Mikroprosesor

Pada bab ini akan dikenalkan tentang dasar mikroprosesor yang meliputi penjelasan

mengenai organisasi komputer, arsitektur dasar mikroprosesor beserta fungsinya, interaksi

mikroprosesor dengan memori, dan proses kerja eksekusi instruksi oleh mikroprosesor. Untuk

menjelaskan beberapa hal tersebut akan dilengkapi dengan gambar blok-blok diagram

mikroprosesor.

1. Organisasi Komputer

Sistem komputer telah banyak mengalami perubahan. Semula mesin dengan area yang luas

telah diubah menjadi sistem komputer desktop kecil karena mikroprosesor. Gambar dibawah ini

menunjukkan struktur sistem komputer berbasis mikroprosesor. Sistem dibawah ini juga berlaku

untuk sistem komputer dari generasi awal sampai ke generasi terbaru.

Memory system microprocessor I/O system

Buses

Dynamic RAM

(DRAM)

Static RAM (SRAM)

Cache

Read-Only (ROM)

Flash memory

EEPROM

8086

8088

80186

80188

80286

80386

80486

Pentium

Pentium Pro

Printer

Serial

communications

Floppy disk drive

Hard disk drive

Mouse

CD-ROM drive

Plotter

Keyboard

Monitor

Tape backup

Scanner

Gambar 1 Struktur Sistem Komputer Pribadi berbasis Mikroprosesor

Blok diagram diatas terdiri dari 3 komponen yaitu mikroprosesor, memori dan sistem

perangkat input output, yang saling terkoneksi dengan jalur-jalur bus ( sebuah bus terdiri dari

Page 23: Diktat Mikroprosesor Dan Antarmuka

beberapa koneksi yang membawa satu jenis informasi, misalnya address bus yang berisi 20 atau

lebih koneksi untuk membawa alamat ke memori ).

1.1. Sistem Mikroprosesor

Sistem mikroprosesor adalah sistem mikroelektronika yang menggunakan mikroprosesor

sebagai unit pemroses sentralnya. Sedangkan mikroprosesor adalah suatu komponen LSI

(Large Scale Integration) yang melaksanakan hampir semua fungsi sebuah prosesor

tradisional (fungsi pemrosesan) pada sebuah serpih, layaknya prosesor atau yang sering

disebut dengan istilah CPU (Central Processing Unit) pada komputer-komputer generasi

sekarang. Fungsi dasar CPU atau prosesor, yaitu :

1. Dapat mengenali lokasi memori tempat instruksi atau data berada

2. Melakukan proses pengambilan instruksi atau data

3. Dapat menyimpan sementara instruksi atau data sampai instruksi dan data tersbut

dieksekusi

4. Mengenali, mengerti, dan dapat menterjemahkan setiap instruksi

5. Dapat mengeksekusi instruksi

6. Dapat mengkoordinasikan semua proses sehingga dilakukan dalam urutan

langkah yang benar

7. Mengulangi semua urutan proses selama masih ada instruksi yang harus

dieksekusi.

Untuk melakukan beberapa buah fungsi dasar tersebut, sebuah prosesor dibangung

dengan komponen-komponen dasar, yaitu ALU (Arithmetic Logic Unit), sistem bus

internal, Control Unit (CU), dan beberapa buah register internal.

1.2. Sistem Memori

Ada 2 jenis memori, yaitu :

1. Memori internal prosesor, adalah jenis memori yang terdapat di dalam prosesor

yang merupakan sekumpulan register berkecepatan tinggi berfungsi sebagai

tempat penyimpanan sementara dari instruksi dan data selama proses didalam

prosesor

2. Memori utama atau memori primer, merupakan jenis memori dengan kecepatan

relatif tinggi untuk menyimpan instruksi dan data selama operaso komputer. Pada

memori utama ini instruksi dan data akan disimpan dalam suatu lokasi dengan

Page 24: Diktat Mikroprosesor Dan Antarmuka

alamat tertentu yang dapat dikenali dan dapat diakses secara langsung dan cepat

oleh set instruksi dari prosesor.

1.3. Sistem Input Output

Merupakan suatu unit perantara yang memungkinkan suatu sistem mikroprosesor dapat

berkomunikasi atau saling mengirim informasi dengan dunia luar. Unit input berfungsi

untuk menyediakan datan atau informasi yang akan diolah bagi ALU atau memori.

Perangkat input dapat berupa sensor, seperti sensor suhu, sensor tegangan, dan lain-lain.

Sedangkan unit output bertugas untuk menyajikan data hasil pemrosesan atau

melaksanakan perintah-perintah. Perangkat keluaran dapat berupa lampu, LED, motor,

dan lain-lain.

1.4. Sistem bus

Gambar 2 Blok Diagram Sistem Komputer dengan struktur bus data, bus alamat dan bus

control[1]

Gambar diatas menunjukkan tentang interkoneksi antara bus dengan komponen-komponen

dalam sistem komputer. Terdapat 3 jenis bus, yaitu bus data, bus alamat, dan bus control.

Dimana ketiganya berfungsi sebagai penghubung antara mikroprosesor dengan memori dan

perangkat input output. Bus- bus ini dapat bersifat dua arah ataupun satu arah.

Bus alamat, berfungsi untuk membawa alamat-alamat memori atau perangkat I/O menuju ke

perangkat-perangkat yang dituju. Alamat-alamat tersebut terdiri dari 16 bit alamat dari

0000H-FFFFH, yang memungkinkan pengiriman sampai 64 KB (2MB).

Page 25: Diktat Mikroprosesor Dan Antarmuka

Bus data, berfungsi untuk membawa atau mengirim data dari dan ke berbagai komponen

pada sistem. Misalnya, bus data membawa data sepanjang 16 bit dari register akumulator

(mikroprosesor) menuju ke sebuah alamat pada memori.

Bus control atau pengendali, berfungsi untuk membawa sinyal-sinyal kendali antara

mikroprosesor dan semua alat yang dihubungkan kepada bus-bus. Contoh sinyalnya antara

lain sinyal 𝑊𝑅 untuk perintah write atau tulis, sinyal 𝑅𝐷 untuk perintah read atau baca, dan

lain-lain.

2. Interaksi Mikroprosesor dan Memori

Secara umum terdapat 2 jenis interaksi antara mikroprosesor dan memori, yaitu operasi

membaca (mengambil) informasi dari memori dan operasi menulis (menyimpan) informasi

ke memori.

µP

alamat

data

memoriread

µP

alamat

data memori

write

(a) (b)

Gambar 3. (a) Proses Baca, (b) Proses Tulis antar Mikroprosesor dan memori[3]

Proses baca/ mengambil informasi dari memori oleh mikroprosesor :

1. Mikroprosesor mempersiapkan alamat lokasi dari data yang akan dibaca, biasanya

melalui register BX yang fungsinya identik untuk menyimpan alamat memori

2. Mikroprosesor mengirimkan sinyal read ke memori yang menandakan bahwa

aktivitas yang ingin dilakukan oleh mikroprosesor dari memori adalah membaca atau

mengambil data.

Page 26: Diktat Mikroprosesor Dan Antarmuka

3. Setelah menerima sinyal read, memori mencari data yang diinginkan oleh

mikroprosesor sesuai dengan alamat yang diberikan sebelumnya

4. Setelah data ditemukan, data dikirimkan oleh memori ke mikroprosesor.

Proses tulis/ menyimpan data dari mikroprosesor ke memori :

1. Mikroprosesor mempersiapkan alamat lokasi dimana data akan ditulis atau disimpan

2. Mikroprosesor mempersiapkan data yang akan ditulis

3. Mikroprosesor mengirimkan sinyal write ke memori sebagai tanda bahwa aktivitas

yang akan dilakukan adalah aktivitas penyimpanan data dari mikroprosesor ke

memori

4. Setelah menerima sinyal write, memori membaca data yang ingin disimpan dan

meletakkannya pada alamat lokasi yang ditentukan.

3. Proses Kerja Instruksi

Di dalam menjalankan suatu instruksi, mikroprosesor melakukan 3 langkah, yaitu :

1. Instruction fetch atau pengambilan instruksi, yaitu proses pengambilan instruksi dari

suatu lokasi alamat tertentu pada memori utama

2. Instruction decode atau decoding instruksi, yaitu proses menterjemahkan instruksi untuk

mengetahui maksud dari instruksi tersebut.

3. Execution atau eksekusi, yaitu proses eksekusi dari instruksi yang telah

Page 27: Diktat Mikroprosesor Dan Antarmuka

Bab III

Mikroprosesor Intel 8088

Pada bab ini akan lebih spesifik dijelaskan mengenai model arsitektur mikroprosesor 8088

beserta fungsi komponen-komponen internal pendukungnya, dan lebih rinci lagi dijelaskan

tentang register-register yang digunakan.

1. Model Arsitektur Mikroprosesor 8088/8086

Mikroprosesor 8086 dan 8088 merupakan perluasan dari seri mikroprosesor 8080 dari Intel.

Pin keluaran untuk 8086 dan 8088 sebanyak 40 pin. Perbedaan pokok antara 8086 dan 8088

terletak pada banyaknya saluran data yang dikeluarkan bus. Chip 8086 memiliki 16 saluran data

(16 bit) pada busnya, dan chip 8088 hanya memiliki 8 saluran data (8 bit).

8088

1

5432

910

876

11121314151617181920 21

22232425262728293031323334353637383940GND

GND

VccA14A13A12A11A10A9A8

AD7

A15A16

AD6AD5AD4AD3AD2AD1AD0

A17A18A19

clock

read

write

reset

ALE

Gambar 4. Konfigurasi Pin-Pin Mikroprosesor 8088[3]

Gambar diatas menunjukkan konfigurasi pin-pin pada IC mikroprosesor 8088. Pin 9-16

adalah pin alamat dan data, dimana untuk mikroprosesor 8088 memiliki 8 saluran data yaitu

Page 28: Diktat Mikroprosesor Dan Antarmuka

AD7 – AD0. Sedangkan saluran alamat ditunjukkan oleh pin 2 – 16 dan 25 – 39, yaitu pada

pin A19 – A0, sepanjang 20 saluran alamat. Dan beberapa fungsi yang lain ditunjukkan oleh

pin yang berbeda, misalnya untuk fungsi baca memori dengan sinyal read / 𝑅𝐷̅̅ ̅̅ , fungsi tulis

ke memori dengan sinyal write / 𝑊𝑅̅̅ ̅̅ ̅, dan fungsi-fungsi pin yang lain.

Selanjutnya akan dijelaskan tentang struktur internal mikroprosesor 8088 beserta fungsi

dari register-register yang ada.

ES

CS

SS

DS

4

3

2

1

CONTROL

SYSTEM

AH AL

BH BL

CH CL

DH DL

SP

BP

SI

DI

OPERAND

FLAGS

C-BUS

IP

ALU

INSTRUCTION

STREAM

BYTE

QUEUE

A- BUS

BIU

EU

Gambar 5. Blok diagram arsitektur mikroprosesor 8088

Fungsi dasar mikroprosesor sesuai gambar diatas, terdiri dari 2 fungsi yaitu EU / Execution

Unit dan BIU / Bus Interface Unit.

Page 29: Diktat Mikroprosesor Dan Antarmuka

1.1. EU ( Execution Unit )

Berfungsi untuk menterjemahkan instruksi, menjalankan instruksi dan mengirimkan informasi ke

BIU untuk mengambil data/instruksi. Pada gambar terlihat bahwa EU tersusun oleh beberapa

register, yaitu :

a. General Purpose Register

Merupakan register 16 bit yang terdiri dari register AX, BX, CX, dan DX. Masing-

masing register ini bisa berfungsi secara terpisah sepanjang 8 bit yaitu bagian tertinggi

AH, BH, CH, DH atau bagian terendah AL, BL, CL, DL.

b. Pointer Register

Terdiri dari register dengan panjang 16 bit yang secara umum berfungsi untuk mengakses

memori operand, yaitu register SP, BP, SI, DI

c. Flag Register

Operasi-operasi atau instruksi yang dijalankan mikroprosesor dapat menghasilkan status

flag tertentu. Berikut ini adalah beberapa jenis flag pada mikroprosesor 8086/8088, CF

(Carry Flag), PF (Parity Flag), AF (Auxiliary Flag), ZF (Zero Flag), SF (Sign Flag), OF

(Overflow Flag), dan lain-lain.

d. ALU (Aritmathic and Logic Unit) pada EU memiliki fungsi sebagai pelaksanan operasi

aritmatika dan logika dari data-data yang disimpan dalam register.

1.2. BIU ( Bus Interface Unit )

BIU adalah unit pada mikroprosesor yang mempunyai tugas utama sebagai antarmuka antara

mikroprosesor dengan peripheral diluar mikroprosesor. Selain itu tugasnya adalah bertanggung

jawab terhadap semua operasi bus eksternal yaitu instruction fetch, operasi baca-tulis memori

atau I/O, antrian instruksi dan perhitungan alamat fisik (PA). Register-register yang terdapat

pada BIU adalah :

Register IP ( Instruction Pointer ) yaitu register utama untuk menunjukkan baris perintah

program

Register segment yang berfungsi untuk menyimpan alamat segment, yang terdiri dari CS

( Code Segment ), DS ( Data Segment ), SS ( Stack Segment ), dan ES ( Extra Segment ).

Sama halnya dengan EU, pada BIU juga terdapat ALU. Disini ALU berfungsi untuk

penghitungan alamat fisik atau Physical Address ( PA ).

Page 30: Diktat Mikroprosesor Dan Antarmuka

2. Register

Dari gambar blok diagram arsitektur Mikroprosesor 8088 terlihat bahwa terdapat beberapa

jenis register yang mendukung kerja mikroprosesor sesuai dengan kategori fungsinya masing-

masing. Berikut akan dijelaskan lebih rinci untuk setiap register-register tersebut.

Tabel 5. Jenis-jenis register

Kategori Bit Nama Register

General 16 AX, BX, CX, DX

8 AH, AL, BH, BL, CH, CL, DH, DL

Segment 16 CS, DS, SS, ES

Index 16 SI, DI

Pointer 16 SP, BP, IP

Flag 16 FR

1. General Purpose Register

Register AX atau akumulator berfungsi sebagai akumulator dan berhubungan dengan

jenis-jenis operasi khusus seperti operasi aritmatika dan logika.

Register BX atau base register, digunakan untuk mereferensikan alamat memori.

Register CX atau counter register, digunakan sebagai pencacah implicit dengan

instruksi tertentu.

Register DX atau register data, digunakan untuk menyimpan alamat port I/O selama

operasi input dan output, digunakan juga dalam operasi perkalian untuk menyimpan

sebagian dari hasil kali 32 bit atau dalam operasi pembagian untuk menyimpan suatu

nilai sisa.

2. Segment register

Merupakan register tambahan dengan panjang 16 bit atau terbatas sampai 64K byte. yang

berfungsi men-generate alamat memori ketika dikombinasikan dengan register lain. Terdiri

dari 4 atau 6 jenis register segment pada beberapa variasi versi mikroprosesor, berikut 4

diantaranya yang digunakan pada arsitektur mikroprosesor 8088 :

Register CS ( Code Segment ), digunakan untuk mencatat alamat segment dari kode

program atau instruksi.

Register DS ( Data Segment ), digunakan untuk menyimpan alamat segment dari

letak data.

Page 31: Diktat Mikroprosesor Dan Antarmuka

Register SS ( Stack Segment ), digunakan untuk menyimpan alamat segment memori

yang dipergunakan menjadi Stack (tumpukan).

Register ES ( Extra Segment ), digunakan untuk meyimpang alamat segment

tambahan, misalnya alamat display, alamat sistem operasi, dan lain-lain.

3. Register Index

Terdiri dari 2 register yaitu register DI ( Destination Index ), dan register SI ( Source

Index ). Register index digunakan untuk menyimpan nilai-nilai offset dalam segment data

memori pada saat bersangkutan, biasanya digunakan untuk string instructions.

4. Register Pointer

Register IP ( Instruction Pointer ), merupakan register pasangan CS yang digunakan

untuk menunjukkan baris perintah program. Pada saat program dijalankan, IP akan

langsung menunjuk pada awal program, dan seterusnya sampai instruksi selesai

dieksekusi.

Register SP ( Stack Pointer ), digunakan untuk operasi stack. Secara implisit, register

ini digunakan secara khusus oleh instruksi PUSH dan POP yang menyimpan dan

mendapatkan kembali data dari stack.

Register BP ( Base Pointer ), digunakan untuk penunjuk base dalam stack yang

disediakan sebagai daerah penyimpanan data.

5. Flag Register

Flag merupakan status yang diakibatkan dari hasil eksekusi instruksi aritmatika dan

logika. Pada mikroprosesor 8088 mempunyai status flag 1 bit dan 3 kontrol flag yang

dikonfigurasikan dalam register sepanjang 16 bit, seperti dijelaskan pada gambar

dibawah ini :

15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0

* * * * OF DF IF TF SF ZF * AF * PF * CF

Page 32: Diktat Mikroprosesor Dan Antarmuka

Keterangan dari status flag sebagai berikut :

a. CF ( Carry Flag ), status flag untuk carry atau borrow dari hasil aritmatika

b. PF ( Parity Flag ), status untuk hasil instruksi aritmatika dengan angka angka ganjil atau

genap

c. AF ( Auxiliary Flag ), digunakan untuk instruksi pengaturan decimal

d. ZF ( Zero Flag ), status untuk hasil instruksi aritmatika sama dengan nol

e. SF ( Sign Flag ), status untuk hasil instruksi aritmatika dengan tanda – atau +

f. OF ( Overflow Flag ), menunjukkan sebuah operasi secara tidak benar yaitu merubah

hasil daripada tanda bit.

g. IF ( Interrupt-enable flag ), tanda untuk dapat atau tidak dapat sebuah instruksi

melakukan interupsi

h. DF ( Direction Flag ), dipergunakan untuk mengontrol arah dari operasi string.

i. TF ( Trap Flag ), dimana ditempatkan dalam single step mode untuk keperluan debug.

Nilai dari masing-masing bit penanda status tersebut dapat berupa logika “1” atau “0”,

dimana masing-masing logika memiliki arti sendiri, berikut penjelasan sederhananya

melalui tabel.

Tabel 6. Nilai flag register

Flag Register Nilai bit 0 Nilai bit 1

CF NC ( Not Carry ) CY ( Carry )

PF PO ( Odd Parity ) PE ( Even Parity )

AF AC ( Carry ) NA ( Not Carry )

ZF NZ ( Not Zero ) ZR ( Zero )

SF PL ( Plus ) NG ( Negative )

IF DI ( Disable ) EI ( Enable )

DF UP ( Increment ) DN ( Decrement )

OF NV ( Not Overflow ) OV ( Overflow )

Contoh operasi menghasilkan flag :

1.

1 1 0 0 1 1 0 0

1 1 0 0 1 1 0 0 xor

0 0 0 0 0 0 0 0

Hasil dari operasi diatas adalah = 00h, sehingga ZF =1

Page 33: Diktat Mikroprosesor Dan Antarmuka

2.

1 1 1 1

1 1 0 0 1 1 0 0 FE

1 1 0 0 1 1 0 0 + FE +

1 0 0 1 1 0 0 0 1 FC

3. Operasi dibawah ini menunjukkan contoh 2 buah bilangan bertanda (signed) positif yang

dijumlahkan hasilnya berubah tanda negatif overflow (OF = 1)

1 1 1

0 1 0 0 1 1 0 0 + 76

0 1 0 0 0 1 0 0 + + 68 +

1 0 0 1 1 0 0 0 + 144

Register internal pada mikroprosesor 8088 memiliki lebar 16 bit, sehingga setiap register

dapat berharga 0000H – FFFFH, atau sebanyak 216 = 65536 kombinasi harga. Gambar

dibawah menunjukkan isi register pada kondisi inisialisasi awal atau kondisi saat belum

ada instruksi yang dieksekusi.

Gambar 6. Gambar inisialisasi awal pada program debug

Soal – soal Latihan :

1. Jelaskan perbedaan fungsi ALU pada BIU dan ALU pada EU? Mengapa?

2. Isikan bit flag yang tepat saat operasi berikut selesai dieksekusi !

a. FFh + 01h (signed) = ………………….. OF = ……. ZF = …….. CF = ………

b. 0567h + 1234h(unsigned) = …………… OF=……… ZF=…… CF=………

Flag

Carry bit

Tanda negatif

Page 34: Diktat Mikroprosesor Dan Antarmuka

c. FFh – 01h (signed) = ……………… OF=…….. ZF=…… CF=………

Page 35: Diktat Mikroprosesor Dan Antarmuka

Bab IV

Struktur Memori

Pada bab ini dijelaskan tentang pengalamatan yang digunakan oleh mikroprosesor 8088 melalui

segmentasi dan penghitungan alamat fisik yaitu format alamat yang digunakan untuk akses

memori.

1. Peta Memori dan Pengalamatannya

Memori utama terdiri dari sejumlah sel yang masing-masing dapat meyimpan informasi

sebesar 1 byte ( 8 bit ). Masing-masing sel memori diberi suatu alamat ( address ), sehingga letak

lokasi memori dapat dihubungi. Pada mikroprosesor 8088 memiliki jalur atau saluran alamat

sebanyak 20 ( A0-A19 ), sehingga memori dapat mencapai 1 Mbyte atau 1048576 byte.

Sedangkan kapasitas register alamat adalah 2 byte, maka jumlah sel memori yang dapat disimpan

alamatnya adalah 216 = 65536 sel memori, dengan demikian register alamat mikroprosesor 8088

dapat mengakses ( membaca/menulis ) memori berkapasitas 65536 byte = 64Kbyte.

Contoh :

alamat data yg disimpan pada alamat tsb

FFFF 1 0 0 0 1 0 1 0 = 8A

8000 1 1 1 0 1 0 0 0 = E8

0002 1 0 1 1 1 1 0 0 = BC

0001 0 0 0 0 1 1 0 1 = 0D

0000 1 1 1 1 1 1 1 0 = FE

Gambar diatas menunjukkan bentuk peta memori pada mikroprosesor 8088. Dimana pada

alamat tertentu (dalam bilangan hexa), misalnya adalah alamat 8000 menyimpan data sepanjang

1 byte ( 8 bit ) yaitu data E8h (11101000b).

Page 36: Diktat Mikroprosesor Dan Antarmuka

Alamat data (Hexa)

137F:0100

137F:0110

137F:0120

137F:0130

0E E8 DC FC 89 46 FA 89-56 FC 0B D0 75 04 33 C0

C9 C3 8B 46 F8 FF 5E FA-89 46 FE 8B 34 00 8B 0D

C8 08 00 00 C7 46 FE 00-00 C7 46 F8 40 00 0E E8

AE FC 89 46 FA 89 56 FC-0B D0 75 04 33 C0 C9 C3

Data diatas menunjukkan contoh hasil “dumping” dengan menggunakan Debug, untuk melihat

isi memori dari setiap blok memori. Terlihat bahwa dalam satu alamat tertentu misalnya alamat

137F:0100 berisi data OE, pada alamat 137F:0101 berisi data E8, dan seterusnya.

2. Segmentasi

Mikroprosesor harus dapat mengakses semua sel memori dari alamat terendah sampai alamat

tertinggi. Alamat tersebut akan disimpan didalam register alamat. Secara fisik mikroprosesor

8088 memilik 20 jalur alamat untuk menyediakan informasi alamat selebar 20 bit yaitu dari

00000h – FFFFFh. Berkaitan dengan hal tersebut, masalah muncul karena register yang akan

digunakan untuk meyimpan alamat memori hanya memilik kapasitas 16 bit, sehingga masih ada

kekurangan lagi sebesar 4 bit untuk menampung suatu alamat memori.

Untuk mengatasi hal ini, Intel menggunakan 2 buah register untuk pengalamatan. Satu

register akan digunakan untuk menyimpan alamat segment ( suatu area memori seluas 64 Kbyte

), dan satu register yang akan digunakan untuk menyimpan alamat offset ( menentukan byte

mana di dalam segment tersebut yang akan diakses ).

Seperti yang dijelaskan pada bab sebelumnya, mikroprosesor 8088 menyediakan 4 segment

untuk menjalankan suatu program, yaitu :

1. Segment untuk program (CS)

2. Segment untuk Data (DS)

3. Segment untuk Stack (SS)

4. Extra Segment (ES)

Suatu program dapat memakai 4 segment yang berbeda-beda atau hanya menggunakan

sebuah segment saja untuk menampung program, data, stack, dan extra. Contoh Debug dibawah

ini menunjukkan penggunaan segment yang sama untuk DS, CS, SS dan ES yaitu 137F.

Page 37: Diktat Mikroprosesor Dan Antarmuka

Gambar 7. Gambar isi register pada program Debug

Gambar dibawah ini memberikan ilustrasi tentang skema pengalamatan mode real pada

memori, yang menggunakan alamat segment dan offset.

00000

10000

1F000

1FFFF

FFFFF

Real Mode Memory

1 0 0 0

Segment Register

Offset = F000

Gambar 8. Gambar Skema Real Mode Memory Addressing

Register segment pada gambar 4.2 berisi alamat segment 1000h, tetapi alamat segment

berawal dari lokasi 10000h. Pada mode real pengalamatan memori, menyesuaikan dengan skema

pengalamatan memori 20 bit, maka alamat segment tersebut ditambahkan dengan 0h pada digit

paling kanan (LSB). Karena mode real dari segment pada memori adalah seluas 64 Kbyte, jika

alamat awal diketahui, maka alamat akhirnya diperoleh dengan menambah FFFFh sebagai

Page 38: Diktat Mikroprosesor Dan Antarmuka

alamat offset. Sehingga, terlihat dari contoh skema diatas alamat awal segment 10000h dan

alamat akhirnya 1FFFFh. Contoh lainnya diperlihatkan pada tabel dibawah ini.

Tabel 7. Tabel contoh alamat segment

Register Segment Alamat Awal Segment Alamat Akhir Segment

2000h 20000h 2FFFFh

2001h 20010h 3000Fh

2100h 21000h 30FFFh

AB00h AB000h BAFFFh

1234h 12340h 2233Fh

Sesuai penjelasan diatas, Mikroprosesor 8088 memiliki format mode pengalamatan dimana

antara segment dan offset ditulis dengan dipisahkan tanda titik dua ( : ) seperti berikut ini :

Segment : Offset

Dan masing-masing register segment memilik pasangan register offset-nya masing-masing,

dijelaskan melalui tabel dibawah ini.

Tabel 8. Tabel kombinasi Segment dan Offset pada Mikroprosesor 8088

Segment Offset Keterangan

CS IP Alamat instruksi

SS SP atau BP Alamat stack

DS BX, DI, SI, data 8 atau 16 bit Alamat data

ES DI untuk instruksi string Alamat string

3. Alamat Fisik

Sesuai penjelasan tentang mode real pengalamatan yang digunakan Mikroprosesor 8088,

selanjutnya akan dijelaskan cara penghitungan alamat tersebut yang disebut dengan Alamat Fisik

(Physical Address/ PA), dengan format 20 bit. Sedangkan cara pengalamatan memori yang biasa

dilakukan oleh komputer sering disebut dengan pengalamatan relatif ( relative address ).

Contoh : alamat yang ditulis dengan format 137F : 0100 yang berarti alamat segment adalah

137Fh dan alamat offset adalah 0100h, maka cara penghitungan alamat fisiknya adalah sebagai

berikut :

Segment : 137F0

Offset : 0100

138F0

+

Page 39: Diktat Mikroprosesor Dan Antarmuka

Sehingga alamat 138F0h yang digunakan untuk mengakses memori. Atau dapat juga diartikan,

untuk menjumlahkan alamat segment dan offset, dengan cara sebelumnya menggeser satu digit

kekiri alamat segment. Contoh lainnya adalah :

Untuk alamat program CS : IP

Untuk alamat Data DS : EA (Effective Address)

Soal – soal Latihan :

1. Jelaskan apa yang dimaksud dengan segmentasi pada mikroporsesor 8088! dan mengapa

diperlukan segmentasi ?

2. Jika diketahui beberapa isi register : DS = 0FF0, CS = 13F0, SS= 0110, IP = 01B0, SP =

1232, BX = A0B0. Tentukan alamat fisik sesuai format alamat segment:offset dibawah

ini:

a. DS : [BX+01h]

b. CS : IP

c. SS : SP

d. DS : [2400]

IP = 95F3

CS = 2500 0

Adder Physical address A0-A19 = 2E5F3

EA = 2845

CS = FB00 0

Adder Physical address A0-A19 = 37F50

Page 40: Diktat Mikroprosesor Dan Antarmuka

Bab V

Pengenalan Instruksi

Instruksi merupakan suatu arahan dalama proses mikroprosesor, sehingga prosesor dapat

berjalan sesuai instruksi yang dimasukkan. CPU (Central Processing Unit) adalah otak atau

sumber dari komputer yang mengatur dan memproses seluruh kerja komputer. Fungsi utama

CPU adalah menjalankan program-program yang disimpan di memori utama. Hal ini dilakukan

dengan cara mengambil instruksi-instruksi dari memori utama dan mengeksekusinya satu persatu

sesuai dengan alur perintah.

Saat data dan/atau instruksi dimasukkan ke processing-devices, pertama sekali diletakkan di

MAA (melalui Input-storage); apabila berbentuk instruksi ditampung oleh Control Unit di

Program-storage, namun apabila berbentuk data ditampung di Working-storage). Jika register

siap untuk menerima pengerjaan eksekusi, maka Control Unit akan mengambil instruksi dari

Program-storage untuk ditampungkan ke Instruction Register, sedangkan alamat memori yang

berisikan instruksi tersebut ditampung di Program Counter. Sedangkan data diambil oleh Control

Unit dari Working-storage untuk ditampung di General-purpose register (dalam hal ini di

Operand-register). Jika berdasar instruksi pengerjaan yang dilakukan adalah arithmatika dan

logika, maka ALU akan mengambil alih operasi untuk mengerjakan berdasar instruksi yang

ditetapkan. Hasilnya ditampung di Akumulator. Apabila hasil pengolahan telah selesai, maka

Control Unit akan mengambil hasil pengolahan di Accumulator untuk ditampung kembali ke

Working-storage. Jika pengerjaan keseluruhan telah selesai, maka Control Unit akan menjemput

hasil pengolahan dari Working-storage untuk ditampung ke Output-storage. Lalu selanjutnya

dari Output-storage, hasil pengolahan akan ditampilkan ke output-devices.

CPU dalam mengeksekusi suatu instruksi dilakukan dalam dua tahapan yaitu membaca instruksi

(fetch) dan melaksanakan instruksi tersebut (execute). Proses membaca dan melaksanakan ini

dilakukan berulang-ulang sampai semua instruksi yang terdapat di memori utama dijalankan atau

komputer dimatikan. Proses ini dikenal juga sebagai siklus fetch-eksekusi.

Siklus Intruksi :

1. Instruction Addess Calculation (IAC), yaitu mengkalkulasi atau menentukan alamat

instruksi berikutnya yang akan dieksekusi. Biasanya melibatkan penambahan bilangan

Page 41: Diktat Mikroprosesor Dan Antarmuka

tetap ke alamat instruksi sebelumnya. Misalnya, bila panjang setiap instruksi 16 bit

padahal memori memiliki panjang 8 bit, maka tambahkan 2 ke alamat sebelumnya.

2. Instruction Fetch (IF), yaitu membaca atau pengambil instruksi dari lokasi memorinya ke

CPU.

3. Instruction Operation Decoding (IOD), yaitu menganalisa instruksi untuk menentukan

jenis operasi yang akan dibentuk dan operand yang akan digunakan.

4. Operand Address Calculation (OAC), yaitu menentukan alamat operand, hal ini

dilakukan apabila melibatkan referensi operand pada memori.

5. Operand Fetch (OF), adalah mengambil operand dari memori atau dari modul I/O.

6. Data Operation (DO), yaitu membentuk operasi yang diperintahkan dalam instruksi.

7. Operand store (OS), yaitu menyimpan hasil eksekusi ke dalam memori

Aksi – Aksi CPU

8. CPU Memori, perpindahan data dari CPU ke memori dan sebaliknya

9. CPU – I/0, perpindahan data dari CPU ke modul I/0 dan sebaliknya

10. Pengolahan Data, CPU membentuk sejumlah operasi aritmatika dan logika terhadap data

11. Kontrol, merupakan instruksi untuk pengontrolan fungsi atau kerja. Misalnya instruksi

pengubahan urusan eksekusi

1. Proses Kerja (Bagaimana uP8088 mengerjakan instruksi)

Didalam menjalankan suatu instruksi, uP 8088 melakukan 3 tahap pengerjaan sbb :

1. Penjemputan Instruksi (IF = Instruction Fetch)

IR [CS+IP]. Proses kerja dimulai dengan penjemputan instruksi baru dari memori ke IR.

CU menerjemahkan isi register CS dan IP untuk menentukan letak dari instruksi baru

tersebut di memori.

Hasil terjemahan isi CS dan IP ini dikirim CU ke memori melalui bus alamat,

CU mengirim sinyal MemREAD untuk memberitahukan memori bahwa CU ingin

membaca data

Memori setelah mendapat sinyal MemREAD, akan melihat isi dari bus alamat. Kemudian

isi dari cell memori yang sesuai dengan alamat tersebut diletakkan di bus data (selebar 1

byte)

Page 42: Diktat Mikroprosesor Dan Antarmuka

Beberapa saat setelah mengirim sinyal MemREAD, CU membaca isi dari bus data dan

meletakkannya di IR.

2. Dekoding Instruksi (ID = Instruction Decode).

Isi baru dari IR tersebut kemudian diterjemahkan oleh CU untuk mengetahui apa saja yang

diinginkan oleh instruksi baru tersebut. Untuk tugas penterjemahan ini, CU menggunakan

bantuan tabel instruksi yang ada di Instruction Decoder untuk dapat memahami maksud dari

instruksi tersebut.

3. Eksekusi Instruksi (EX = Execution)

Tergantung dari hasil penterjemahan instruksi diatas, CU akan melaksanakan satu dari tiga

fungsi, yaitu :

Operasi Aritmetika atau Logika

Data transfer

Control

Arsitektur x86 (contoh: uP8088) menggunakan Variable Length Instruction (VLI) dimana

instruksi yang berbeda memiliki panjang instruksi yang berbeda pula (bervariasi dari 1 byte

sampai 4 byte).

Karena pada saat IF yg dijemput hanya 1 byte, maka kemungkinan besar setelah proses ID,

CU harus menjemput beberapa byte lagi dari memori agar instruksinya menjadi lengkap.

Byte pertama dari instruksi yg dijemput disebut dgn op-code (operation code) karena dari

penterjemahan op-code tersebut, didapatkan panjang isntruksi sebenarnya.

Contoh : untuk instruksi B8 34 12 (MOV AX,1234) CU pertama akan mengambil byte “B8”

untuk mengetahui bahwa instruksi tsb adalah MOV AX,xx yy sehingga CU harus mengambil 2

byte setelahnya untuk dapat mengeksekusi instruksi tsb.

Kelebihan dari VLI :

hemat space

dimana jumlah byte yang dibutuhkan untuk merepresentasikan suatu instruksi merupakan

jumlah byte minimumnya.

Sementara kekurangannya :

lebih lambat karena ada suatu tenggang waktu tertentu dimana uP harus menjemput instruksi

selengkapnya dari memori setelah dekoding (kekurangan ini diperbaiki melalui Prefetching)

Page 43: Diktat Mikroprosesor Dan Antarmuka

Instruksi 1 byte (contoh: PUSH & POP) Instruksi >1 byte (contoh: MOV,

ADD, JMP)

proses: IF – DE – EX proses: IF – DE – IF – DE – EX

2. Jenis Instruksi

Set instruksi 8086/8088 mencakup ekuivalen dengan instruksi yang digunakan dalam 8085 atau

hampir semua mikroprosesor 8-bit ditambah dengan beberapa operasi baru. Kategor instruksi

yang dapat digunakan mencakup: transfer data, aritmatika, manipulasi bit, string, transfer

program dan kontrol prosesor

2.1. Transfer Data

Set intstruksi 8086/808 mencakup 14 instruksi transfer data yang menggerakan byte atau kata

data antara memori dan register serta akumulator dan port I/O. Instruks-instruksi tersebut dapat

dilihat pada tabel berikut:

Tabel 9. Operasi Transfer Data

Opcode Fungsi

MOV moves byte or word

PUSH pushes word onto stack

PUSHF pushes flags onto stack

LAHF moves flags into AH

SHAF loads flags from AH

POP pops word from stack

POPF pops flags from stack

IN inputs data to accumulator from I/O device

OUT outputs data from accumulator to I/O device

XCHG exchanges bytes or words

XLAT translates table lookup instruction

LEA load effective address

LDS loads DS and the operand with a 32-bit address

LES loads ES and the operand with a 32-bit address

IF

DE

EX IF

DE

EX

Page 44: Diktat Mikroprosesor Dan Antarmuka

2.2. Aritmatika

8086/8088 mampu melakkan penambahan, pengurangan, perkalian dan pembagian data serta

bytes.

Tabel 10. Instruksi Aritmatika

Opcode Fungsi

ADD adds bytes or words

ADC adds bytes or words plus carry flag

AAA adjust ASCII after addition

DAA adjust BCD after addition

INC adds 1 to bytes or word

SUB subtracts bytes or word

SBB subtracts bytes or word minus carry flag

NEG change sign of byte or word (two's complement)

CMP compares bytes or words

AAS adjust ASCII after subtraction

DAS adjust BCD after subtraction

DEC subtracts 1 from byte or word

MUL multiples unsigned byte or word

IMUL multiples signed byte or word

AAM adjust ASCII after multiplication

DIV divides unsigned byte or word

IDIV divides signed byte or word

CBW converts byte to word

CWD converts word to double word

AAD addust ASCII before division

2.3. Manipulasi bit

Terdapat 12 instruksi yang memberi kemampuan untuk memanipulasi bit biner pada

mikroprosesor 8086/8088. Instruksi ini mencakup operasi logika, shift dan rotasi.

Tabel 11. Instruksi Manipulasi Bit

Opcode Fungsi

AND ANDs bytes or words

OR ORs bytes or words

XOR XORs bytes or words

NOT inverts bytes or words

TEST TESTs bytes or words (AND)

SHL/SAL shfit logical/aritmatic left

SHR shift logical right

Page 45: Diktat Mikroprosesor Dan Antarmuka

SAR shift arithmetic right

ROL rotates bytes or words left

RCL rotates bytes or word rleft through carry

ROR rotates bytes or words right

RCR rotates bytes or word right through carry

2.4. Instruksi String

Instruksi string digunakan untuk memanipulasi string data dalam memor. Setiap string tersusun

baik dari bytes maupun kata dan hingga mencapai panjang 64KB. Instruksi string menggunakan

register SI dan DI untuk menangani data. Register CX digunakan untuk menghitung jumlah

bytes atau kata yang beroperasi. Instruksi string hanya muncul sekali, jika diawali dengan kata

REP, REPE/REPZ atau REPNE/REPNZ maka instruksi akan diulangi hingga jumlah waktu yang

tercatat di register CX.

Tabel 12. Instruksi String

Opcode Fungsi

MOVS moves bytes or words

CMPS compares bytes or words

SCAS scans for byte or word

LODS loads AL or AX with byte or word

STOS stores AL or AX in byte or word

2.5. Transfer Program

Instruksi transfer program mencakup jump, call, return serta beberapa instruksi tambahan yang

membentuk loop.

Tabel 13. Instruksi transfer program

Opcode Function

CALL

RET

JMP

INT3

INTO

IRET

JA/JNE

JAE/JNB

JB/JNAE

JBE/JNA

JC

Calls subroutine

Returns from subroutine

Jumps to another part of program

Type 3 interrupt

Interrupts on overflow

Interrupt return

Jumps above/jumps not below or equal to

Jumps above or equal to/jumps not below

Jumps below/jumps not above or equal to

Jumps below or equal to/jumps not above

Jumps carry set

Page 46: Diktat Mikroprosesor Dan Antarmuka

JE/JZ

JG/JNLE

JGE/JNL

JL/JNGE

JLE/JNG

JNC

JNE/JNZ

JNO

JNP/JPO

JNS

JO

JP/JPE

JS

LOOP

LOOPE/LOOPZ

LOOPNE/LOOPNZ

JCXZ

Jumps equal/jumps 0

Jumps greater/jumps not less than or equal to

Jumps greater than or equal to/jumps not less

than

Jumps less than/jumps not greater than or equal

to

Jumps less than or equal to/jumps not greater

than

Jumps no carry

Jumps not equal to/jumps not 0

Jumps no overflow

Jumps no parity/jumps parity odd

Jumps no sign (positive)

Jumps on overflow

Jumps panty/jumps parity even

Jumps sign (negative)

Loops CX times

Loops while equal to/loops while 0

Loops while not equal to/loop while not 0

Jumps if CX = 0

2.6. Kontrol Prosesor

Instruksi kontrol prosesor memungkinkan dan tidak memungkinkan terjadinya interupsi,

memodifikasi bit flag dan sinkronisasi kejadian eksternal.

Tabel 11. Instruksi Kontrol Prosesor

Opcode Fungsi

STC sets carry

CLC clears carry

CMC complements carry

STD selects auto decrement mode

CLD selects auto increment mode

STI enables interrupts

CLI disables interrupts

HLT halts until a reset or an interrupt

WAIT wait for TEST pin =0

ESC provides escape to coprocessors

LOCK locks the bus during the next instruction

NOP performs no operation

3. Mode Pengalamatan

Ketika 8088 mengerjakan instruksi, maka harus menampilkan fungsi yang spesifik pada data.

Ini biasa disebut operands atau perintah. Dan bisa menjadi bagian dari instruksi. Untuk

Page 47: Diktat Mikroprosesor Dan Antarmuka

mengakses tipe-tipe perbedaan dari perintah 8088 membaginya berdasarkan variasi mode dari

pengalamatan, yaitu

1. Register direct : mov ax,bx

2. Register Indirect : mov ax,[bx]

3. Direct / absolut : mov ax,[001d]

4. Immediate : mov ax,001d

5. Displacement : mov ax,[bx+1]

4. Instruksi MOV

1. Register Data

(contoh: MOV AX,1234 mengisi AX dgn data 1234)

2. Register Register

(contoh: MOV AX,BX memindahkan isi BX ke AX)

3. Register Memory

(contoh: MOV AX,[BX] memindahkan isi memori ke AX, alamat dari datanya ada di BX)

4. Memory Register

(contoh: MOV [BX],AX memindahkan isi AX ke memori, datanya akan ditulis di memori

pada alamat yg ada di BX))

Contoh instruksi MOV untuk transfer antar register dan pengisian langsung

-a

0F6C:0100 mov bx,abcd mengisi reg. AX dgn data ABCDH

0F6C:0103 mov ah,56 mengisi reg. AH dgn data 56H

0F6C:0105 mov bl,ah mengcopy isi reg. AH ke reg. BL

0F6C:0107 mov ax,bx mengcopy isi reg. BX ke reg. AX

0F6C:0109

-r

AX=0000 BX=0000 CX=0000 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000

DS=0F6C ES=0F6C SS=0F6C CS=0F6C IP=0100 NV UP EI PL NZ NA PO NC

0F6C:0100 BBCDAB MOV BX,ABCD

-t

Page 48: Diktat Mikroprosesor Dan Antarmuka

AX=0000 BX=ABCD CX=0000 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000

DS=0F6C ES=0F6C SS=0F6C CS=0F6C IP=0103 NV UP EI PL NZ NA PO NC

0F6C:0103 B456 MOV AH,56

-t

AX=5600 BX=ABCD CX=0000 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000

DS=0F6C ES=0F6C SS=0F6C CS=0F6C IP=0105 NV UP EI PL NZ NA PO NC

0F6C:0105 88E3 MOV BL,AH

-t

AX=5600 BX=AB56 CX=0000 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000

DS=0F6C ES=0F6C SS=0F6C CS=0F6C IP=0107 NV UP EI PL NZ NA PO NC

0F6C:0107 89D8 MOV AX,BX

-t

AX=AB56 BX=AB56 CX=0000 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000

DS=0F6C ES=0F6C SS=0F6C CS=0F6C IP=0109 NV UP EI PL NZ NA PO NC

Instruksi berikut akan menimbulkan Error :

MOV CH,5678 : tidak bisa karena CH = 1 byte dan datanya 2 byte

MOV DL,AX : tidak bisa karena AX = 2 byte dan DL = 1 byte

MOV DX,AL : tidak bisa karena AL = 1 byte dan DX = 2 byte

Contoh instruksi MOV untuk :

1. transfer Register Memory (membaca data dari memori)

2. transfer Memory Register (menulis data ke memori)

-a

0F6C:0100 mov bx,0002 mengisi reg. BX dgn data 0002H

0F6C:0103 mov ah,[bx] membaca memori pada alamat BX sebanyak 1 byte (AH)

0F6C:0105 mov ax,[bx] membaca memori pada alamat BX sebanyak 2 byte (AX)

0F6C:0107 mov ax,[bx+1] membaca memori pada alamat BX+1 sebanyak 2 byte (AX)

0F6C:010A mov [bx],ax menulis isi reg. AX ke memori pada alamat BX

0F6C:010C

-d

0F6C:0000 00 01 02 03 04 05 06 07-08 09 0A 0B 0C 0D 0E 0F ................

0F6C:0010 10 11 12 13 14 15 16 17-18 19 1A 1B 1C 1D 1E 1F ................

Page 49: Diktat Mikroprosesor Dan Antarmuka

0F6C:0020 20 21 22 23 24 25 26 27-28 29 2A 2B 2C 2D 2E 2F !"#$%&'()*+,-./

0F6C:0030 30 31 32 33 34 35 36 37-38 39 3A 3B 3C 3D 3E 3F 0123456789:;<=>?

0F6C:0040 40 41 42 43 44 45 46 47-48 49 4A 4B 4C 4D 4E 4F @ABCDEFGHIJKLMNO

0F6C:0050 50 51 52 53 54 55 56 57-58 59 5A 5B 5C 5D 5E 5F PQRSTUVWXYZ[\]^_

0F6C:0060 60 61 62 63 64 65 66 67-68 69 6A 6B 6C 6D 6E 6F `abcdefghijklmno

0F6C:0070 70 71 72 73 74 75 76 77-78 79 7A 7B 7C 7D 7E 7F pqrstuvwxyz{|}~.

-r

AX=0000 BX=0000 CX=0000 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000

DS=0F6C ES=0F6C SS=0F6C CS=0F6C IP=0100 NV UP EI PL NZ NA PO NC

0F6C:0100 BB0200 MOV BX,0002

-t

AX=0000 BX=0002 CX=0000 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000

DS=0F6C ES=0F6C SS=0F6C CS=0F6C IP=0103 NV UP EI PL NZ NA PO NC

0F6C:0103 8A27 MOV AH,[BX] DS:0002=02

-t

AX=0200 BX=0002 CX=0000 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000

DS=0F6C ES=0F6C SS=0F6C CS=0F6C IP=0105 NV UP EI PL NZ NA PO NC

0F6C:0105 8B07 MOV AX,[BX] DS:0002=0302

-t

AX=0302 BX=0002 CX=0000 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000

DS=0F6C ES=0F6C SS=0F6C CS=0F6C IP=0107 NV UP EI PL NZ NA PO NC

0F6C:0107 8B4701 MOV AX,[BX+01] DS:0003=0403

-t

AX=0403 BX=0002 CX=0000 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000

DS=0F6C ES=0F6C SS=0F6C CS=0F6C IP=010A NV UP EI PL NZ NA PO NC

0F6C:010A 8907 MOV [BX],AX DS:0002=0302

-t

AX=00A0 BX=0002 CX=0000 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000

DS=0F6C ES=0F6C SS=0F6C CS=0F6C IP=010C NV UP EI PL NZ NA PO NC

0F6C:010C 90 NOP

-d

Page 50: Diktat Mikroprosesor Dan Antarmuka

0F6C:0000 00 01 03 04 04 05 06 07-08 09 0A 0B 0C 0D 0E 0F ................

0F6C:0010 10 11 12 13 14 15 16 17-18 19 1A 1B 1C 1D 1E 1F ................

0F6C:0020 20 21 22 23 24 25 26 27-28 29 2A 2B 2C 2D 2E 2F !"#$%&'()*+,-./

0F6C:0030 30 31 32 33 34 35 36 37-38 39 3A 3B 3C 3D 3E 3F 0123456789:;<=>?

0F6C:0040 40 41 42 43 44 45 46 47-48 49 4A 4B 4C 4D 4E 4F @ABCDEFGHIJKLMNO

0F6C:0050 50 51 52 53 54 55 56 57-58 59 5A 5B 5C 5D 5E 5F PQRSTUVWXYZ[\]^_

0F6C:0060 60 61 62 63 64 65 66 67-68 69 6A 6B 6C 6D 6E 6F `abcdefghijklmno

0F6C:0070 70 71 72 73 74 75 76 77-78 79 7A 7B 7C 7D 7E 7F pqrstuvwxyz{|}~.

Instruksi berikut akan menimbulkan Error :

MOV [BX],[BX+1] : transfer data dari memori ke memori secara langsung

MOV [BX],12 : transfer data langsung ke memori

kesimpulan : semua transfer yg melibatkan memori harus via register

MOV AH,[BL] : register alamat harus digunakan dalam format 2 byte

MOV [AX],BX : reg. AX bukan register alamat

MOV [CX],BX : reg. CX bukan register alamat

MOV [DX],BX : reg. DX bukan register alamat

5. Instruksi PUSH & POP

Sebelum membahas tentang instruksi PUSH dan POP, kita harus mempelajari terlebih dahulu

mengenai STACK

5.1. Stack

Karena jumlah register data terbatas (hanya 4 buah : AX, BX, CX, DX), maka diperlukan

suatu lokasi penyimpanan data untuk sementara yang disebut stack. Kelebihan stack adalah dari

kesederhanaannya didalam menyimpan dan mengembalikan kembali data yg telah tersimpan

dibandingkan dengan penyimpanan ke memori.

Dari arti katanya stack adalah tumpukan. Ini berarti jika kita akan menyimpan data di stack,

data tersebut akan ditumpuk berdasarkan urutan siapa yang terakhir datang. Oleh karenanya,

sistem akses data di stack disebut LIFO (Last In First Out) dimana data yang akan diambil adalah

data yang ditumpuk terakhir.

Penumpukan data di stack dilakukan dari bawah.

FFFF 5E

Page 51: Diktat Mikroprosesor Dan Antarmuka

FFFE CD tumpukan terakhir

tumpukan baru

Untuk mengidentifikasi tumpukan data terakhir (paling bawah), digunakan register SP (Stack

Pointer). Jadi SP akan ‘menunjuk’ ke tumpukan terendah dari stack. Setiap kali ada data yang

ditumpuk, isi SP akan berkurang (counting down). Instruksi yang digunakan untuk operasi stack

adalah PUSH dan POP.

PUSH akan ‘mendorong’ data ke stack dan POP akan ‘mengeluarkan’ data dari stack.

-a

0EA0:0100 mov ax,1234

0EA0:0103 mov bx,5678

0EA0:0106 push ax

0EA0:0107 push bx

0EA0:0108 pop ax

0EA0:0109 pop bx SP=FFEE

-d ffe0

0EA0:FFE0 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 isi stack

-t

AX=1234 BX=0000 CX=0000 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000

DS=0EA0 ES=0EA0 SS=0EA0 CS=0EA0 IP=0103 NV UP EI PL NZ NA PO NC

0EA0:0103 BB7856 MOV BX,5678

-t

AX=1234 BX=5678 CX=0000 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000

DS=0EA0 ES=0EA0 SS=0EA0 CS=0EA0 IP=0106 NV UP EI PL NZ NA PO NC

0EA0:0106 50 PUSH AX

-t

AX=1234 BX=5678 CX=0000 DX=0000 SP=FFEC BP=0000 SI=0000 DI=0000

DS=0EA0 ES=0EA0 SS=0EA0 CS=0EA0 IP=0107 NV UP EI PL NZ NA PO NC

0EA0:0107 53 PUSH BX

-d ffe0

0EA0:FFE0 00 00 00 00 00 00 00 00-00 00 00 00 34 12 00 00 AX ada di stack

Page 52: Diktat Mikroprosesor Dan Antarmuka

-t

AX=1234 BX=5678 CX=0000 DX=0000 SP=FFEA BP=0000 SI=0000 DI=0000

DS=0EA0 ES=0EA0 SS=0EA0 CS=0EA0 IP=0108 NV UP EI PL NZ NA PO NC

0EA0:0108 58 POP AX

-d ffe0

0EA0:FFE0 00 00 00 00 00 00 00 00-00 00 78 56 34 12 00 00 BX ada di stack

-t

AX=5678 BX=5678 CX=0000 DX=0000 SP=FFEC BP=0000 SI=0000 DI=0000

DS=0EA0 ES=0EA0 SS=0EA0 CS=0EA0 IP=0109 NV UP EI PL NZ NA PO NC

0EA0:0109 5B POP BX

-t

AX=5678 BX=1234 CX=0000 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000

DS=0EA0 ES=0EA0 SS=0EA0 CS=0EA0 IP=010A NV UP EI PL NZ NA PO NC

Contoh Penggunaan Instruksi Control (JMP dan JZ)

-a

0F6C:0100 MOV AX,ABCD

0F6C:0103 MOV BX,DCBA

0F6C:0106 XOR AL,AL

0F6C:0108 JMP 010C

0F6C:010A MOV AL,BH

0F6C:010C JZ 010E

0F6C:010E

-t trace MOV AX,ABCD

AX=ABCD BX=0000 CX=0000 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000

DS=0F6C ES=0F6C SS=0F6C CS=0F6C IP=0103 NV UP EI PL NZ NA PO NC

-t trace MOV BX,DCBA

AX=ABCD BX=DCBA CX=0000 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000

DS=0F6C ES=0F6C SS=0F6C CS=0F6C IP=0106 NV UP EI PL NZ NA PO NC

-t trace XOR AL,AL

AX=AB00 BX=DCBA CX=0000 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000

Page 53: Diktat Mikroprosesor Dan Antarmuka

DS=0F6C ES=0F6C SS=0F6C CS=0F6C IP=0108 NV UP EI PL ZR NA PE NC

-t trace JMP 010C

AX=AB00 BX=DCBA CX=0000 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000

DS=0F6C ES=0F6C SS=0F6C CS=0F6C IP=010C NV UP EI PL ZR NA PE NC

-t trace JZ 010E

AX=AB00 BX=DCBA CX=0000 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000

DS=0F6C ES=0F6C SS=0F6C CS=0F6C IP=010E NV UP EI PL ZR NA PE NC

Page 54: Diktat Mikroprosesor Dan Antarmuka

6. 8086/8088 Instruction Set Summary

6.1. Data Transfer

MOV – Move

1. Reg/Mem to/from Reg 1000 10dw modregr/m

2. Immediate to Register 1011 wreg data data (w=1)

3. Memory to Accumulator 1010 000w addr-low addr-high

4. Accumulator to Memory 1010 001w addr-low addr-high

contoh 1:

MOV AL,BL = 88D8 (10001000 11011000): d=0,w=0,mod=11,reg=011(BL),r/m=000(AL)

MOV AX,BX = 89D8 (10001001 11011000): d=0,w=1,mod=11,reg=011(BX),r/m=000(AX)

MOV [BX],AL = 8807 (10001000 00000111):

d=0,w=0,mod=00,reg=000(AL),r/m=111([BX])

MOV [BX],AX = 8907 (10001001 00000111):

d=0,w=1,mod=00,reg=000(AX),r/m=111([BX])

MOV AL,[BX] = 8A07 (10001010 00000111):

d=1,w=0,mod=00,reg=000(AL),r/m=111([BX])

MOV AX,[BX] = 8B07 (10001011 00000111):

d=1,w=1,mod=00,reg=000(AX),r/m=111([BX])

contoh 2:

MOV AX,1234 = B83412(10111000 34H 12H): w=1,reg=000(AX),Low-data=34H,Hi-

data=12H

MOV AL,78 = B078 (10110000 78H ): w=0,reg=000(AL),data=78H

contoh 3:

MOV AX,[1234] = A13412 (10100001 34H 12H)): w=1,addr-low=34H,addr-high=12H

contoh 4:

MOV [1234],AX = A33412 (10100011 34H 12H)): w=1,addr-low=34H,addr-high=12H

PUSH - Push

1. Register 0101 0reg

2. Segment Register 000reg110

Page 55: Diktat Mikroprosesor Dan Antarmuka

contoh 1: PUSH AX = 50 (0101 0000): reg=000(AX)

contoh 2: PUSH CS = 0E (0000 1110): reg=01(CS)

POP - Pop

1. Register 0101 1reg

2. Segment Register 000reg111

contoh 1: POP AX = 58 (0101 1000): reg=000(AX)

contoh 2: POP CS = 0F (0000 1111): reg=01(CS)

6.2. Arithmetic

ADD - Add

1. Reg/Mem with Register 0000 00dw modregr/m

2. Immediate to Reg/Mem 1000 00sw mod000r/m data data(sw=01

3. Immediate to AX/AL 0000 010w data data (w=1)

contoh 1:

ADD BX,CX =01CB (00000001 11001011):d=0,w=1,mod=11,reg=001(CX),r/m=011(BX)

ADD BL,CL =00CB (00000000 11001011):d=0,w=0,mod=11,reg=001(CL),r/m=011(BL)

contoh 2:

ADD BX,1234 = 81C33412 (10000001 11000011 34H 12H): sw=01,mod=11,r/m=011

contoh 3:

ADD AX,1234 = 053412 (00000101 34H 12H): w=1,Low-data=34H,Hi-data=12H

SUB - Subtract

1. Reg/Memory and Reg 0010 10dw modregr/m

2. Immediate from Reg/Mem 1000 00sw mod101r/m data data(sw=01

3. Immediate from AX/AL 0010 110w data data (w=1)

contoh 1:

SUB BX,CX =29CB (00101001 11001011):d=0,w=1,mod=11,reg=001(CX),r/m=011(BX)

SUB BL,CL =28CB (00101000 11001011):d=0,w=0,mod=11,reg=001(CL),r/m=011(BL)

Page 56: Diktat Mikroprosesor Dan Antarmuka

contoh 2:

SUB BX,1234 = 81EB3412 (10000001 11101011 34H 12H): sw=01,mod=11,r/m=011

contoh 3:

SUB AX,1234 = 2D3412 (00101101 34H 12H): w=1,Low-data=34H,Hi-data=12H

6.3. Logic

NOT - Invert 1111 011w mod01 0r/m

SHL = Shift Logical Left 1101 00vw mod10 0r/m

SHR = Shift Logical Right 1101 00vw mod10 1r/m

AND - And

1. Reg/Memory and Reg 0010 00dw modregr/m

2. Immediate to Reg/Mem 1000 000w mod100r/m data data (w=1)

3. Immediate to AX/AL 0010 010w data data (w=1)

OR - Or

1. Reg/Memory and Reg 0000 10dw modregr/m

2. Immediate to Reg/Mem 1000 000w mod001r/m data data (w=1)

3. Immediate to AX/AL 0000 110w data data (w=1)

XOR - Exclusive Or

1. Reg/Memory and Reg 0011 00dw modregr/m

2. Immediate to Reg/Mem 1000 000w mod110r/m data data (w=1)

3. Immediate to AX/AL 0011 010w data data (w=1)

6.4. Control Transfer

JMP - Unconditional Jump

Direct w/in Segment Short 1110 1011 disp

JE/JZ - Jump on Equal/Zero 0111 0100 disp

contoh:

Page 57: Diktat Mikroprosesor Dan Antarmuka

-a 100

0D9C:0100 jmp 010f

0D9C:0102 jmp 0100

0D9C:0104 jz 010f

0D9C:0106 jz 0100

0D9C:0108

-u 100

0D9C:0100 EB0D JMP 010F

0D9C:0102 EBFC JMP 0100

0D9C:0104 7409 JZ 010F

0D9C:0106 74F8 JZ 0100

jadi:

JMP 010F = EB0D (11101011 00001101):jump 0D(=+13) bytes forward (IP=IP+13)

JMP 0100 = EBFC (11101011 11111100):jump FC(=-4) bytes forward (IP=IP-4)

JZ 010F = 7409 (01110100 00001011):jump 09(=+9) bytes forward (IP=IP+9)

JZ 0100 = 74F8 (01110100 11111000):jump FB(=-8) bytes forward (IP=IP-8)

(angka minus menggunakan format 2’s complement)

NOTES:

d=direction:

if d=1 then ‘to’ reg (Reg Mem)

if d=0 then ‘from’ reg (Reg Reg, Mem Reg)

w=word:

if w=1 then word operation (1 word = 2 bytes)

if w=0 then byte operation

mod=mode:

if mod=11 then r/m is treated as a REG field

if mod=00 then DISP=0, disp-low and disp-high are absent

disp:

show how far should the CPU jump from recent point (reg. IP)

Page 58: Diktat Mikroprosesor Dan Antarmuka

r/m:

if r/m = 000 then EA = (BX) + (SI) + DISP

if r/m = 001 then EA = (BX) + (DI) + DISP

if r/m = 010 then EA = (BP) + (SI) + DISP

if r/m = 011 then EA = (BP) + (DI) + DISP

if r/m = 100 then EA = (SI) + DISP

if r/m = 101 then EA = (DI) + DISP

if r/m = 110 then EA = (BP) + DISP*

if r/m = 111 then EA = (BX) + DISP

if s:w=01 then 16 bits of immediate data form the operand

if s:w=11 then an immediate data byte is sign extended to form the 16-bit operand

REG is assigned according to the following table:

16-Bit (w=1) 8-Bit (w=0) Segment

000 AX

001 CX

010 DX

011 BX

100 SP

101 BP

110 SI

111 DI

000 AL

001 CL

010 DL

011 BL

100 AH

101 CH

110 DH

111 BH

00 ES

01 CS

10 SS

11 DS

Instruksi pada uP selalu memiliki 2 bagian yaitu operation code (op-code) dan data.

Instruksi 1 byte : op-code

Instruksi 2 byte : op-code data

Instruksi 3 byte : op-code data data

Instruksi 3 byte : op-code data data data

Page 59: Diktat Mikroprosesor Dan Antarmuka

-a 0100

0EA0:0100 mov ax,1234

0EA0:0103 mov bl,f7

0EA0:0105 push ax

-u 0100

0EA0:0100 B83412 MOV AX,1234

0EA0:0103 B3F7 MOV BL,F7

0EA0:0105 50 PUSH AX

Yang tercetak tebal merupakan op-code nya dimana :

B8 berarti MOV AX, ?? ??

B3 berarti MOV BL, ??

7. Encoding Instruksi Mesin

Di dalam CPU (tepatnya pada blok Instruction Decoder), terdapat tabel instruksi yang memuat

daftar semua instruksi yang dapat dimengerti oleh CPU tersebut. Daftar ini disebut sebagai

microcode dan setiap kali CPU menerima sebuah instruksi, CPU akan memecah kode instruksi

tersebut (tahap decoding) dan kemudian melihat arti dari masing-masing pecahan tersebut di

microcode.

Ini menunjukkan bahwa tidak semua CPU memiliki microcode yang sama. Beda arsitektur

berarti berbeda juga microcode-nya. Sebagai contoh, program yang dapat dijalankan di IBM PC

tidak akan jalan di Apple Macintosh, begitu pula sebaliknya.

Hampir semua instruksi memerlukan data untuk dioperasikan. Berdasarkan Addressing Mode-

nya (bagaimana uP mendapatkan data yg dibutuhkan oleh suatu instruksi), instruksi-instruksi uP

8088 dapat dibedakan menjadi :

Addressing Mode Contoh instruksi Arti

Immediate Add AX, 3F 5B AX AX + 3F 5B

Register Direct Add AX, BX AX AX + BX

Register Indirect Add AX, [BX] AX Mem[BX]

Displacement Add AX, [BX+128] AX Mem[BX+128]

Direct atau Absolute Add AX, [1001] AX Mem[1001]

Page 60: Diktat Mikroprosesor Dan Antarmuka

-a

0EA0:0100 mov bx,000f Immediate

0EA0:0103 mov ax,bx Register Direct

0EA0:0105 mov ax,[bx] Register Indirect

0EA0:0107 mov ax,[bx-1] Displacement

0EA0:010A mov ax,[000d] Direct/Absolute

[0000] [000D] [000F]

-d 0000

0EA0:0000 CD 20 00 A0 00 9A EE FE - 1D F0 4F 03 27 08 8A 03

0EA0:0010 25 08 17 03 25 08 2A 07 - 01 01 01 00 02 FF FF FF

[0100]

-t

AX=0000 BX=000F CX=0000 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000

DS=0EA0 ES=0EA0 SS=0EA0 CS=0EA0 IP=0103 NV UP EI PL NZ NA PO NC

0EA0:0103 89D8 MOV AX,BX

-t

AX=000F BX=000F CX=0000 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000

DS=0EA0 ES=0EA0 SS=0EA0 CS=0EA0 IP=0105 NV UP EI PL NZ NA PO NC

0EA0:0105 8B07 MOV AX,[BX] DS:000F=2503

-t

AX=2503 BX=000F CX=0000 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000

DS=0EA0 ES=0EA0 SS=0EA0 CS=0EA0 IP=0107 NV UP EI PL NZ NA PO NC

0EA0:0107 8B47FF MOV AX,[BX-01] DS:000E=038A

-t

AX=038ABX=000F CX=0000 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000

DS=0EA0 ES=0EA0 SS=0EA0 CS=0EA0 IP=010A NV UP EI PL NZ NA PO NC

0EA0:010A A10D00 MOV AX,[000D] DS:000D=8A08

Page 61: Diktat Mikroprosesor Dan Antarmuka

-t

AX=8A08 BX=000F CX=0000 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000

DS=0EA0 ES=0EA0 SS=0EA0 CS=0EA0 IP=010D NV UP EI PL NZ NA PO NC

Soal – soal Latihan

1. Buatlah op code dari instruksi-instruksi dibawah ini secara manual(sertakan cara

pengerjannya)

0F00 : 0000 XOR BX,BX

0F00 : 0002 START : MOV AX,ABCD

0F00 : 0005 ADD AX,BX

0F00 : 0007 JMP 0002

2. Tracing instruksi

0F00 : 0100 MOV AX,[BX]

0F00 : 0102 MOV CX,3490

0F00 : 0105 ADD AX,CX

0F00 : 0107 PUSH BX

0F00 : 0108 INC CX

0F00 : 0109 OR CX,AX

0F00 : 010B JNZ 0102

0F00 : 010D MOV AX,BX

Berikut diberikan inisialisasi awal untuk melakukan tracing memori :

AX = 0000 BX = 0000 CX = 0000 DX = 0000 SP = 0011 BP = 0000 SI = 0000 DI = 0000

DS = 0FF0 ES = 0FF0 SS = 0FF0 CS = 0F00

Isi memori sebelum program dieksekusi :

0FF0 : 0000 E0 CD A1 52 FF 02 00 B8 3D 75 BB 0C 11 93 BC EE

0FF0 : 0010 97 01 12 B9 AC 11 CF 90 34 12 00 A0 BC 9B FF 1F

Lakukan tracing instruksi berawal dari alamat fisik 0F012!

Page 62: Diktat Mikroprosesor Dan Antarmuka

Bab VI

Komponen Penunjang Antarmuka 8088

Untuk dapat bekerja, mikroprosesor 8088 membutuhkan sistem penunjang atau komponen-

komponen penunjang lainnya. Minimal mikroprosesor 8088 membutuhkan 2 buah IC

( Integrated Circuit ) untuk membantu kerjanya, yaitu :

1. IC 74LS373, yaitu latch ( flip-flop ) yang digunakan untuk memisahkan

( demultipleksing ) pin 9 – 16 menjadi 2 buah informasi yaitu Address dan Data. Sinyal

ALE ( Address Latch Enable ) digunakan untuk memisahkan kedua informasi tersebut,

dimana jika ALE = high ( level “1” ) maka pin 9 – 16 membawa informasi Address ( A ),

sedangkan jika ALE = low ( level “0” ) maka pin 9 – 16 membawa informasi Data ( D ).

2. IC 8284 digunakan untuk menghasilkan sinyal CLOCK ( maksimum 5 Hz ), RESET, dan

READY.

Sesuai yang dijelaskan pada bab-bab sebelumnya bahwa sebuah sistem komputer memiliki

komponen-komponen lain selain prosesor, seperti memori dan perangkat input output. Artinya

prosesor tidak dapat bekerja sendiri, sepertinya halnya sebuah Personal Computer (PC) yang

lengkap memiliki beberapa komponen penting pendukung seperti :

1. 8087 : arithmetic co-prosesor yang bertugas untuk membantu 8088 dalam menangani

kalkulasi

2. 8237 : prosesor khusus untuk menangani DMA ( Direct Memory Access )

3. 8251 : prosesor khusus untuk transaksi data serial ( terpasang pada IO card, tidak pada

motherboard )

4. 8253 : prosesor khusus untuk menangani timing

5. 8255 : prosesor khusus untuk transaksi data parallel

6. 8259 : Programmable Interrupt Controller

7. Dll.

Hubungan prosesor dengan perangkat diluarnya membutuhkan interface / antarmuka. Komponen

yang digunakan sebagai antarmuka ada beberapa macam, diantaranya yaitu decoder, encoder,

Page 63: Diktat Mikroprosesor Dan Antarmuka

three state buffer, flip-flop, dan lain-lain. Berikut akan dijelaskan contoh komponen penunjang

antarmuka pada Mikroprosesor 8088.

1. Decoder

Agar dapat menyambungkan peranti memori ke mikroprosesor, diperlukan pendekodean

alamat dari mikroprosesor untuk membuat fungsi memori pada bagian yang unik atau partisi dari

peta memori. Tanpa pendekode alamat, hanya satu peralatan memori yang dapat

dihubungkan ke mikroprosesor. Dekoder mengoreksi ketidakcocokan dengan mendekodekan

alamat pin yang tidak terhubung ke komponen memori.

Pendekodean dapat dilakukan dengan menggunakan sebuah IC dekoder 74LS138. Prinsip

kerja IC dekoder ini dapat dilihat pada gambar berikut:

Gambar 9. Gambar Decoder 3 to 8[4]

2. Three State Buffer

Banyak perangkat tersambung pada bus data namun hanya satu perangkat yang aktif dalam

satu waktu akses. Data bus menggunakan three state buffer sehingga dapat berkeadaan floating/

berimpedansi tinggi jika tidak sedang digunakan dan berimpedansi rendah pada saat diakses.

Three state buffer adalah buffer yang bekerja dalam dua arah yaitu memasukkan data atau

mengeluarkan data tergantung bit kendali. Mikroprosesor memiliki saluran bus data 8 bit dua

arah artinya transfer data berlangsung pada 8 saluran parallel ke unit lain diluar CPU seperti

memori atau port I/O atau dari unit memori dan port I/O ke dalam CPU. Berikut adalah gambar

yang memperlihatkan prinsip kerja dua arah dari three state buffer pada saluran data :

Page 64: Diktat Mikroprosesor Dan Antarmuka

C

output

input

Gambar 10. Gambar Prinsip Penggunaan Three State Buffer pada Saluran Data

Page 65: Diktat Mikroprosesor Dan Antarmuka

Bab VII

Interface 8088 dan Memori

1. Pengenalan Hubungan Mikroprosesor 8088 dan Memori

System yang berdasarkan pada mikroprosesor baik yang sederhana maupun yang kompleks

pasti mempunyai memori,Dalam hal ini, 8088 tidak berbeda dengan mikroprosesor lain.Hampir

semua system terdiri dari dua jenis memori pokok, read-only memory (ROM), dan random

access memory (RAM) atau read/write memory.

Sebelum melakukan interfacing memori ke mikroprosesor, adalah sangat penting bagi

kita untuk benar-benar mengerti operasi komponen-komponen memori sebelum berusaha

menginterface memori ke mikroprosesor.. Pada pembahasan kali ini akan dijelaskan fungsi

dari empat tipe umum memori:

- Memori hanya baca (ROM – Read Only Memory)

- Memori flash (EEPROM)

- Static random acces memory (SRAM)

- Dinamic random acces memory (DRAM)

1.1. ROM Memori

Read-only memori (ROM) secara permanen akan menyimpan program dan data yang residen

pada system dan tidak berubah ketika catu daya diputuskan.

ROM telah ada dalam beberapa bentuk sekarang ini. Adapun jenis - jenis dari ROM antara

lain:

a. PROM

Jenis ROM dimana user bisa burn data didalam IC tersebut. Burn artinya adalah

blowing fuse dengan menggunakan alat yang disebut ROM burner atau ROM

programmer. PROM hanya dapat ditulis sekali.

b. EPROM

Jenis ROM yang bisa diprogram dan dihapus berkali-kali. Penghapusan EPROM

memerlukan waktu 20 menit dengan disinari oleh sinar UV

c. EEPROM

Page 66: Diktat Mikroprosesor Dan Antarmuka

Jenis ROM yang metode penghapusannya menggunakan kelistrikan secara instan.

EEPROM hanya bisa menghapus data pada salah satu bagian lokasi memory saja.

d. Flash EPROM

Jenis ROM yang bersifat user programmable, disebut flash karena untuk menghapus

seluruh isi memory hanya membutuhkan waktu beberapa detik saja.

1.2. RAM Memori

Merupakan media penyimpanan data yang bersifat volatile (data akan hilang ketika power

supply diputus), dapat ditulisi dan dibaca berulang – ulang, dapat menyimpan informasi

selama catu daya sistem mikroprosesor belum dimatikan, dan informasi akan hilang

apabila catu daya memori dimatikan. Contoh: RAM. Memori RAM digolongkan menjadi

dua, yaitu : memori statik dan memori dinamik.

Jenis-jenis RAM :

a. Static RAM ( SRAM )

Jenis RAM yang sel penyimpanan data pada memory RAM dibuat dari flip flop yang

tidak perlu direfresh untuk menjaga data tersebut. Piranti static RAM memori akan

menahan data sepanjang catu daya DC diterapkan. Oleh karena tidak ada aksi khusus

yang diperlukan untuk menahan data yang disimpan, maka piranti ini disebut dengan

static memory.Perbedaan pokok antara ROM dan RAM adalah bahwa RAM dituliskan

kedalam operasi yang normal, sedangkan ROM deprogram diluar komputer.SRAM akan

menyimpan data temporer dan digunakan ketika ukuran read / write memori relative

kecil.Sekarang ini memori yang kecil adalah dibawah 256 Kbyte.

b. Dynamic RAM ( DRAM )

Jenis RAM untuk keperluan baca dan tulis dengan menggunakan kapasitor untuk

menyimpan informasi setiap bit. DRAM membutuhkan refresh untuk menjaga datanya

akibat dari kebocoran kapasitor. Keuntungan menggunakan DRAM adalah kapasitas

tinggi, biaya lebih rendah per bit, dan daya konsumsi lebih rendah per bit.Static RAM

paling besar yang ada sekarang ini adalah 32K X 8.Dinamik RAM sebaliknya ada dalam

beberapa ukuran yang lebih besar, hingga 4M x 1.Dalam semua hal DRAM pada

pokoknya sama dengan SRAM kecuali bahwa DRAM menahan data untuk hanya kira-

kira 2 – 4 ms pada kapaitor yang terintegrasi. Setelah 2 – 4 ms, isi dari DRAM harus

Page 67: Diktat Mikroprosesor Dan Antarmuka

secara lengkap dituliskan kembali atau disegarkan kembali karena kapasitor kehilangan

arah. Dari pada menuntut tugas yang paling tidak mungkin untuk melakukan dari

pembacaan isi setiap lokasi memori dengan program dan kemudian menuliskannya

kembali, maka pabrik secara internal membuat DRAM sehinga, dalam versi 64K x 1,

seluruh isi memori dapat disegarkan kembali dengan 256 pembacaan dalam interval 4-

ms.Penyegaran kembali juga akan terjadi selama penulisan dan selama cycle/ putaran

penyegaran khusus.

1.3. Hubungan Pin Memori

Hubungan pin yang umum untuk semua piranti memori adalah masukan (input) alamat,

masukan/keluaran (input/Output) data, beberapa tipe masukan seleksi dan paling tidak satu input

kontrol yang digunakan untuk menyeleksi operaso baca dan tulis. Seperti yang terlihat pada

gambar berikut ini:

Gambar 11. Hubungan Pin Memori Secara Umum

Keterangan :

A0- AN digunakan sebagai masukan alamat

D0-DN digunakan sebagai masukan/keluaran data

Select digunakan untuk mengaktifkan fungsi chip select (CS)

Read digunakan untuk mengaktikan fungsi Output Enable (OE) untuk proses baca data

dari memori

Write digunakan untuk mengaktikan fungsi write untuk proses tulis ke memori

Page 68: Diktat Mikroprosesor Dan Antarmuka

1.1.1 Hubungan Alamat

Semua piranti memori memiliki input alamat yang memilih lokasi memori di dalam

peranti memori. Input alamat hampir selalu diberi label dari A0, yang paling kecil dari input

sampai An dimana n bisa nilai apapun selalu diberi label sebagai kurang satu dari jumlah

pin ( n = jumlah pin alamat – 1). Sebagai contoh sebuah memori yang memiliki 10 pin alamat

memiliki pin yang diberi label A0 – A9.

Jumlah dari lokasi memori dapat diperkirakan dari jumlah pin alamat. Sebagai contoh,

peranti memori yang memiliki 10 (A0-A9) pin alamat memiliki lokasi memori 210 =

1024 lokasi atau 1K (1024) lokasi memori begitu juga seterusnya. Sebagai contoh sebuah

memori dengan jumlah bit data yang digunakan sebanyak 8 bit (1 Byte) dan jumlah

lokasi memori 1024 (1K), dapat dinyatakan kapasitas memori sebesar 1024 x 8 bit = 1K-Byte

atau 1KB. 400H mewakili bagian 1K-byte dari sistem memori. Jika peranti memori

dikodekan untuk digunakan / dipasang pada sistem mikroprosesor dengan alamat awal

memori 10000H, maka lokasi terakhir adalah pada lamat 103FFH ( satu lokasi kurang dari

400H).

Memory Size Memory Map Address line used

256 Byte 00 – FF A0 A1 A2 A3 A4 A5 A6 A7

512 Byte 000 – 1FF A0 A1 A2 A3 A4 A5 A6 A7 A8

1 Kbyte 000 – 3FF A0 A1 A2 A3 A4 A5 A6 A7 A8 A9

2 Kbyte 000 – 7FF A0 A1 A2 A3 A4 A5 A6 A7 A8 A9 A10

4 Kbyte 000 – FFF A0 A1 A2 A3 A4 A5 A6 A7 A8 A9 A10 A11

8 Kbyte 0000 – 1FFF A0 A1 A2 A3 A4 A5 A6 A7 A8 A9 A10 A11 A12

16 Kbyte 0000 – 3FFF A0 A1 A2 A3 A4 A5 A6 A7 A8 A9 A10 A11 A12 A13

32 Kbyte 0000 – 7FFF A0 A1 A2 A3 A4 A5 A6 A7 A8 A9 A10 A11 A12 A13 A14

64 Kbyte 0000 – FFFF A0 A1 A2 A3 A4 A5 A6 A7 A8 A9 A10 A11 A12 A13 A14 A15

1.1.2 Hubungan data

Semua peranti memori memiliki kumpulan data output/input. Hubungan data adalah titik

dimana data dimasukkan untuk penyimpanan atau dikeluarkan untuk pembacaan. Pin data

pada peranti memori diberi label D0-D7 untuk memori dengan lebar data 8 bit.

Page 69: Diktat Mikroprosesor Dan Antarmuka

1.1.3 Hubungan seleksi

Setiap peranti memori memiliki sebuah input – kadang-kadang lebih dari satu yang memilih

atau mengenable peranti memori. Input jenis ini paling sering disebut masukan sebagai

suatu pemilih chip (CS chip select), enable chip (CE chip enable), atau hanya pilih (S

select). Memori RAM umumnya memiliki paling tidak satu input CS atau S, dan ROM paling

tidak satu CE. Jika input CE, CS atau S aktif (sebuah logika 0 karena garis diatas), peranti

memori memberikan sebuah pembacaan atau penulisan. Jika pin ini tidak aktif (sebuh logika1),

peranti tidak dapat melakukan sebuah pembacaan atau penulisan data karena dimatikan atau

didisabel. Jika ada lebih dari satu penghubung CS, maka semuanya harus diaktifkan untuk

membaca atau menulis data.

1.1.4 Hubungan kontrol

Semua peranti memori memilki beberapa beuntuk input kontrol atau banyak input

kontrol. Sebuah ROM biasanya memiliki satu input kontrol, dimana RAM sering memiliki

satu atau dua input kontrol. Input kontrol yang sering ditemukan pada ROM adalah output

enable (OE) atau hubungan gerbang (G) gate, yang memungkinkan data mengalir keluar dari

pin output data dari ROM. Jika OE tidak aktif, output tidak diaktifkan sehingga pembacaan data

tidak dapat dilakukan.Input kontrol yang sering ditemukan pada peranti RAM memiliki

satu maupun dua input kontrol. Jika ada satu input kontrol, sering disebut sebagai R/W .

Pin ini memilih mode operasi pembacaan atau penulisan hanya jika peranti input CS

diaktifkan. Jika RAM memiliki dua input kontrol, biasanya diberi label WE (write enable)

dan OE (output enable) atau G. disini WE difungsikan untuk mengaktifkan mode

penulisan ke memori, sedangkan OE difungsikan untuk mengaktifkan mode pembacaan data

dari memori. Kedua pin tidak boleh aktif bersamaan.

Gambar 12. Contoh Peranti memori EPROM 8KB 2764 (13 bit alamat) dan fungsi pin

Page 70: Diktat Mikroprosesor Dan Antarmuka

Gambar 13. Contoh Peranti memori RAM 2KB 6116 (11 bit alamat) dan fungsi pin

2. Interfacing memori pada Mikroprosesor 8088

Mikroprosesor 8088 mempunyai 8-bit data bus, yang akan membuatnya ideal untuk

dihubungkan ke piranti memori 8 – bit yang umum yang ada sekarang ini.Namun demikian, agar

8088 berfungsi secara benar dengan memori, system memori harus mengartikan kode alamat

untuk memilih komponen memori, dan harus menggunakan signal control RD, WR, dan IO/M

yang disediakan oleh 8088 untuk mengontrol memori.

Susunan mode minimum untuk 8088 digunakan dalam bagian ini dan pada pokoknya sama

dengan system mode maksimum untuk interface memori.Perbedaan utama adalah bahwa mode

maksimum IO/M dikominasikan dengan RD untuk membuat sinyal MRDC, dan IO/M

dikombinasikan dengan WR untuk membuat sinyal MWTC.Sinyal control mode maksimum ini

dikembangkan didalam 8288 pengontrol bus.Dalam mode minimum, memori akan melihat 8088

sebagai piranti dengan 20 hubungan alamat (A19-A0), 8 hubungan bus data (AD7-AD0), dan

sinyal control IO/M, RD, dan WR.

Data di ROM hanya dapat dibaca saja sedangkan data di RAM dapat dibaca dan juga ditulis.

Hal ini menyebabkan secara hardware mereka berbeda seperti yang terlihat pada gambar berikut

Page 71: Diktat Mikroprosesor Dan Antarmuka

Gambar 14. Antarmuka 8088 dan ROM ( IC 2716 )[3]

Gambar 15. Antarmuka 8088 dan RAM ( IC 4016 )[3]

Pada gambar di atas dapat diperhatikan :

1. sambungan untuk data adalah langsung (direct connection) tanpa perantara.

Dimana Dn dari i8088 disambungkan dengan Dn yg bersesuaian (n = 0..7)

Page 72: Diktat Mikroprosesor Dan Antarmuka

2. sambungan untuk alamat tergantung pada Address Line yg dibutuhkan untuk mengaktifkan

salah satu set flip-flop di dalam memori. Untuk kasus diatas salah satu dari set flip-flop akan

diaktifkan dgn A0 – A10 dari i8088

3. sambungan bus kontrol adalah untuk memberikan sinyal RD atau WR dari 8088 ke 4016

untuk menandakan jenis akses data (apakah READ membaca data dari memori, ataukah

WRITE menulis data ke memori). Dan untuk sinyal CS, karena hanya ada satu keping

memori yg digunakan, maka pengaksesan memori hanya terjadi pada 2716 / 4016. Sehingga

2716 / 4016 tersebut selalu dalam keadaan aktif.

Gambar (b) dan (c) merupakan cara lain (yg lebih sederhana) untuk menggambarkan

interkoneksi (bus data dan bus alamat) antara 8088 dgn memori.

3. Interface 8088 dengan RAM dan ROM

Proses antarmuka ROM ke 8088 memerlukan waktu tunggu yang menggunakan sinyal IO/M

untuk membantu decoder. Contoh rangkaian seperti gambar 16 mengilustrasikan mikroprosesor

8088 yang dihubungkan ke delapan EPROM 2732, 4K x 8 piranti memori yang sangat umum

digunakan sekarang ini.2732 mempunyai input alamat dan memori lebih banyak dibandingkan

dengan 2716.Piranti ini akan menyebarkan 32 x 8 bit dari ruang alamat fisik 8088.

Pada rangkaian ini decoder dihubungkan sedikit berbeda dari biasanya karena jenis EPROM

ini mempunyai waktu akses 450 ns sedangkan ketika 8088 dioperasikan dengan 5-MHz clock

diperlukan waktu 460 ns untuk mengakses memori.Oleh karena itu untuk mengatasi hal tersebut

kita harus menambahkan gerbang NAND untuk membuat sinyal agar decoder dan sinyal pada

piranti dapat membuat waktu tunggu.Waktu tunggu yang disisipkan setiap kali bagian memori

ini dimasukkan, 8088 akan memberikan waktu 660 ns bagi EPROM untuk mengakses data.Ini

merupakan waktu yang cukup bagi komponen memori yang membutuhkan 450 ns untuk akses

data, bahkan dengan penundaan yang dibuat oleh decoder.

Page 73: Diktat Mikroprosesor Dan Antarmuka

Gambar 16. Rangkaian interface EPROM 2732 dengan mikroprosesor 8088[4]

Interface pada RAM sedikit lebih mudah untuk dihubungkan dibandingkan dengan EPROM

karena hampir semua komponen memori RAM tidak memerlukan pernyataan menunggu.Bagian

yang ideal dari memori untuk RAM berada di bagian bawah, yang berisi vector untuk

interupsi.Vektor interupsi sering diubah dengan paket software yang berbeda, sehingga agak

penting untuk menuliskan sandi / encode bagian memori ini dengan RAM. Pada RAM, struktur

internal pengaksesannya Sinyal WE dan OE akan mengaktifkan salah satu set dari 3-state buffer

(jika WE diaktifkan ke arah data masuk ke dalam memori, jika OE diaktifkan ke arah data keluar

dari memori). Untuk menyambungkan suatu keping memori dengan mikroprosesor dibutuhkan 3

penyambungan yaitu sambungan untuk data, alamat, dan kontrol.

1. Sambungan data adalah langsung karena pada umumnya lebarnya sama-sama 8 bit (D0 –

D7) baik dari sisi i8088 maupun dari sisi memori.

2. Sambungan alamat tergantung dari kapasitas memori yg digunakan. Misalnya memori yg

digunakan berkapasitas 2 Kbyte, berarti address line yg digunakan untuk mengakses

suatu data pada memori tersebut adalah A0 – A10. Maka yang diambil dari i8088 adalah

address line yg bersesuaian yaitu A0 – A10, dimana Pin A0 dari i8088 disambungkan

Page 74: Diktat Mikroprosesor Dan Antarmuka

pada masukan A0 RAM, Pin A1 dari i8088 disambungkan pada masukan A1 RAM, Pin

A2 dari i8088 disambungkan pada masukan A2 RAM, Pin A3 dari i8088 disambungkan

pada masukan A3 RAM, dst… sampai Pin A10 dari i8088 disambungkan pada masukan

A10 RAM.

3. Sambungan kontrol yg diperlukan adalah :

a. sinyal CS: untuk mengaktifkan suatu keping memori. Sisa dari Address line yg tidak

digunakan (A12 – A19) akan dipakai untuk mengaktifkan memori tersebut (masukan

Chip Select).

Gambar 17. Konfigurasi Chip Select

b. untuk kasus RAM, sinyal Memory Read digunakan untuk memberitahu eeping

memori yg telah diaktifkan pin CS-nya bahwa jenis akses adalah READ. Untuk itu

digunakan sebuah gerbang OR untuk menggabungkan sinyal RD dan IO/M dari

i8088. Sinyal Memory READ yang active-low ini akan disambungkan pada pin OE

yang juga active-low.

c. Untuk kasus RAM, sinyal Memory Write digunakan untuk memberitahu eeping

memori yg telah diaktifkan pin CS-nya bahwa jenis akses adalah WRITE. Untuk itu

digunakan sebuah gerbang OR untuk menggabungkan

sinyal WR dan IO/M dari i8088. Sinyal Memory WRITE yang active-low ini akan

disambungkan pada pin WE yang juga active-low.

Contoh : ingin dirancang sebuah Address Decoder yang menghubungkan antara Mikroprosesor

8088 dengan 2 buah memori, dimana memori 1 berkapasitas 8 Kbyte dan memori 2 berkapasitas

32 Kbyte.

Langkah-langkah yang harus dilakukan adalah :

Page 75: Diktat Mikroprosesor Dan Antarmuka

1. Membuat peta memori, dari peta memori ini akan diketahui alamat awal dan alamat akhir

dari masing-masing memori dan address yang dibutuhkan untuk membuat address

decoder

2. Dari address line yang dibutuhkan untuk address decoder, maka dapat dirancang/ atau

ditentukan komponen yang akan digunakan. Dapat berupa gerbang logika atau sebuah

decoder n to 2n

Asumsi soal diatas diminta dengan alamat awal peta memori pada alamat 00000h.

Peta memori untuk sistem diatas adalah sebagai berikut :

Address line

A19 -------------------------------------------------A0

Alamat awal dan

akhir

Memori

0 0 0 0 – 1 0 0 1 – 1 1 1 1 – 1 1 1 1 – 1 1 1 1

0 0 0 0 – 0 0 1 0 – 0 0 0 0 – 0 0 0 0 – 0 0 0 0

= 09FFF

= 02000

Memori 2

32 KByte

0 0 0 0 – 0 0 0 1 – 1 1 1 1 – 1 1 1 1 – 1 1 1 1

0 0 0 0 - 0 0 0 0 – 0 0 0 0 – 0 0 0 0 – 0 0 0 0

= 01FFF

= 00000

Memori 1

8 KByte

Address Decoder

Memori 2

/CS

D 0 s/d D7

A0

s/d

A14

Memori 1

/CS

D 0 s/d D7

A0

s/d

A12

A19

A18

A17

A16

A15

A13A14A15A16A17A18A19

Address line yang tidak digunakan untuk hubungan data

digunakan untuk hubungan alamat pada address

decoder

Page 76: Diktat Mikroprosesor Dan Antarmuka

4. Timing Diagram

Hal penting untuk kita memahami timing bus sistem sebelum memilih memori atau alat

I/O untuk pengantarmuka dengan mikroprosesor 8088. Pada pokok bahasan kali ini

memberikan pengertian mengenai operasi sinyal bus, dan timing baca/tulis dasar pada

8088.

Tiga bus pada 8088 : alamat, data dan kontrol berfungsi dengan cara yang tepat

sama dengan mikroprosesor lain. Jika data ditulis ke memori, mikroprosesor mengeluarkan

alamat memori ke bus alamat, mengeluarkan data yang akan ditulis ke memori pada bus

data, dan mengeluarkan sinyal write (WR) ke memori dan IO/M di set pada logika “0”. Jika data

dibaca dari memori, mikroprosesor mengeluarkan alamat memori ke bus alamat,

mengeluarkan sinyal memori read (RD), dan menerima data melalui bus data.

Mikroprosesor menggunakan memori dan I/O dalam periode yang disebut siklus bus.

Setiap siklus bus sama dengan empat periode clocking sistem (level T). Selama periode

pertama pada siklus bus, yang disebut T1, banyak hal yang terjadi. Alamat memori atau

lokasi I/O dikirim melalui bus alamat dan hubungan bus alamat/data (termultipleks). Selama

Siklus T1 sinyal –sinyal kontrol ALE, DT/R dan IO/M (8088) juga dikeluarkan. Sinyal

IO/M atau menunjukan apakah bus berisi alamat memori atau nomor alat I/O (alamat Port I/O).

Pada waktu T2, mikroprosesor 8088 mengeluarkan sinyal RD atau WR, DEN dan

pada kasus write, data yang akan ditulis muncul pada bus data. Peristiwa - peristiwa ini

menyebabkan memori atau perangkat I/O mulai melakukan baca/tulis. Sinyal DEN

mengaktifkan buffer bus data, sehingga memori atau I/O dapat menerima data yang akan

ditulis., atau sehingga mikroprosesor dapat menerima data yang dibaca dari memori atau

I/O untuk operasi baca.

Page 77: Diktat Mikroprosesor Dan Antarmuka

Gambar 18. Timing Baca (Read)

Selama T1

- Mikroprosesor mengeluarkan sinyal ALE mengaktifkan Latch Enable dari 74LS373

- Data Alamat A19-A0 dikeluarkan melalui Bus Alamat

- DT/R di set pada logika “0” agar data input (dari memori/IO) dapat diambil dari buffer

74LS245

Selama T2

- Sinyal RD (Read) di kirimkan ke Memori atau I/O

- DEN di set pada logika “0” sebagai sinyal enable buffer 74LS245

Selama T3

- Data Input dibaca dari memori melalui bus data

Page 78: Diktat Mikroprosesor Dan Antarmuka

Gambar 19. Timing Tulis (write)

Selama T1

- Mikroprosesor mengeluarkan sinyal ALE mengaktifkan Latch Enable dari 74LS373

- Data Alamat A19-A0 dikeluarkan melalui Bus Alamat

- DT/R di set pada logika “1” agar data out (ke memori/IO) dapat dilewatkan melaluiri

buffer 74LS245

Selama T2

- Sinyal WR (Write) di kirimkan ke Memori atau I/O

- DEN di set pada logika “0” sebagai sinyal enable buffer 74LS245

Selama T3

- Data Out ditulis ke memori melalui bus data

Page 79: Diktat Mikroprosesor Dan Antarmuka

Soal- soal latihan

1. Berdasarkan gambar dibawah ini, keping memori yang diakses memiliki jangkauan

alamat pada ( alamat awal-alamat akhir) =……….…………….

/CS

0

1

2

3

4

5

6

7/EN

A12

A13

A14

D7 – D0

A11 – A0

A15

A16

A17

A18

A19

2. Diberikan 3 buah RAM dengan kapasitas masing-masing 64 Kbyte dan 2 buah RAM

dengan kapasitas masing-masing 32 Kbyte. Buatlah rangkaian address decodernya

dengan alamat awal 80000h.

Page 80: Diktat Mikroprosesor Dan Antarmuka

Bab VIII

Interface 8088 dan I/O

Dalam suatu system mikroprosessor, mikroprosessor bekerja dengan dukungan dari

device/peripheral lain seperti memori, I/O equipment, ADC, interrupt device, dan lain-lain. IN

adalah perintah untuk memindahkan data dari piranti I/O ke mikroprosesor dan OUT adalah

perintah untuk memindahkan data keluar dari mikroprosesor ke piranti I/O.

1. Pengenalan Perangkat IO

Piranti input yang utama adalah rangkaian 8 atau 16 three-state buffer dan piranti output

utama adalah latch 8 atau 16 bit.

1.1. Interface Input Utama

Gambar 20. Rangkaian Port input dasar yang menggunakan switch sebagai alat input

8 three-state buffer digunakan untuk menyusun 8-bit port input yang dijelaskan dalam gambar

1.Perhatikan bahwa data TTL eksternal dihubungkan ke input dari buffer, dan output dari buffer

dihubungkan ke bus alamat / data 8088.Hubungan tersebut memungkinkan mikroprosesor untuk

membaca data dari bus alamt / data selama instruksi IN ke dalam register AL atau AX jika buffer

16 bit dan 16 switch digunakan dalam rangkaian.

Page 81: Diktat Mikroprosesor Dan Antarmuka

Jika 8088 menjalankan IN, maka alamat port I/O dibaca dan membuat logika 0 pada

input control ke buffer.0 pada input control akan menyebabkan buffer bergerak melalui data dari

switch hingga ke bus alamt / data dimana input tersebut dibaca ke dalam register AL atau AX.

Sirkuit input utama ini tidaklah optional, sirkuit ini selalu dimasukkan di dalam piranti

input, atau jika tidak ada yang muncul, maka dia tentu seperti yang diilustrasikan.Hanya input

tipe switch sederhana yang akan menggunakan buffer.

1.2. Interface Output Utama

Gambar 21. Rangkaian Port Output Yang Menggunakan Led Sebagai Alat Output

Interface output utama akan menerima data dari mikroprosesor dan biasanya berisi data

untuk beberapa piranti eksternal.Penguatnya seperti dalam interface input juga sering dibuat

kedalam piranti I/O karena tanpa penguat output yang dihasilkan akan lemah.

Jika instruksi OUT dibuat, maka data dari AL atau AX akan dikirimkan ke latch melalui

koneksi bus alamat / data.Pada Gambar ?? bus alamat / data dihubungkan ke input D dari latch

octal 74LS374, dan output (Q) dihubungkan ke delapan LEDs.

Dalam sirkuit ini, jika logika 0 adalah output ke Q, maka LED akan menyala.Setiap

waktu OUT dibuat, maka decoder akan mengembangkan pulse-clock bagi latch octal untuk

menangkap output dari bus alamat / data.

1.3. Handshaking

Banyak piranti I/O yang menerima atau mengerjakan informasi dengan rentangan waktu yang

lebih lambat dari pada mikroprosesor.Metode control I/O untuk menyesuaikan piranti I/O dengan

Page 82: Diktat Mikroprosesor Dan Antarmuka

mikroprosesor disebut dengan handshaking atau polling.Misalnya jika printer hanya dapat

mencetak 100 karakter per detik (CPS), maka program yang akan mencetak informasi akan

memperlambat mikroprosesor agar sesuai dengan kecepatan printer.

Gambar 22. Interface antara printer dan system komputer

2. Jenis-jenis Pemetaan Perangkat IO

2.1. Berdasarkan port / nomor port yang digunakan

Nomor port adalah nomor unik / tersendiri untuk mendakan perangkat mana yang akan

diakses oleh 8088. Terdapat 2 jenis yaitu fixed addressing dan variable addressing, perbedaan

antara keduanya dijelaskan melalui tabel dibawah ini.

Tabel 12. Perbedaan fixed addressing dan variable addressing

Fixed Addressing Variable Addressing

Nomor port yang diakses ditulis langsung

pada instruksinya

Nomor port yang diakses ditulis terlebih

dahulu ke register DX

Maksimum jumlah port yang bisa diakses

adalah 256

Maksimum jumlah port yang bisa diakses

adalah 65536

Untuk pengaksesannya digunakan address

bus A0-A7

Untuk pengaksesannya digunakan address

bus A0-A15

Data bus yang digunakan bisa 8 bit (register

AL) atau 16 bit (register AX)

Data bus yang digunakan bisa 8 bit (register

AL) atau 16 bit (register AX)

Contoh instruksi : IN AL, 00H Contoh instruksi : IN AL, DX

Page 83: Diktat Mikroprosesor Dan Antarmuka

2.2. Berdasarkan peta alamatnya

Isolated I/O

Pada isolated I/O ini antara memory dan I/O dibuat terpisah baik dari segi pemetaannya

maupun instruksi pengakasesannya. Peta alamat memori dan peta alamat I/O dipisahkan dan

untuk membedakan antara kedua jenis data alamat tersebut di gunakan sinyal IO/M, dimana

saat IO/M bernilai logika ‘1’ data yang ada pada bus merupakan data dari perangkat I/O,

sedangkan jika IO/M bernilai logika ‘0’ maka data yang ada pada bus saat itu merupakan

data dari memori. Itu jika dilihat dari pemetaannya, sedangkan jika dilihat dari cara

pengaksesannya, pada metode isolated I/O ini untuk mengakses port I/O digunaan perintah

IN atau OUT sedangkan untuk mengakses memori tetap menggunakan perintah MOV.

Gambar 23. Peta Memori Isolated I/O[3]

Memory-mapped I/O

Pada metode ini pemetaan alamat I/O digabung dengan memori, dimana ada bagian

tertentu dalam memori yang sengaja diperuntukkan untuk menyimpana data dari I/O,

sehingga alamat memori tersebut berubah fungsi menjadi alamat I/O. Unutk pengaksesan

data baik dari I/O maupun memori tetap menggunakan instruksi MOV.

Page 84: Diktat Mikroprosesor Dan Antarmuka

Gambar 24. Peta Memori mapped I/O[3]

Dalam perancangan address decoder sangat dipengaruhi sekali dengan pemetaan memori.

Kapasitas berapa saja yang akan di-decoder-kan. Dalam perancangannya terdapat 4 jenis, yaitu:

a. Fixed addressing + isolated I/O.

Dalam perancangannya, design ini menggunakan address line 8 bit (A0 s.d A7) dan

menggunakan sinyal IO/M. Misal Dip Switch tersebut akan diakses pada alamat 04H =

(A7)0000 0100(A0) maka desain Decodernya seperti gambar berikut

Gambar 25. Desain Decoder Fixed addressing + isolated I/O

Pada gerbang OR diatas, instruksi IN AL, 04 akan mengaktifkan outputnya, karena :

Instruksi IN akan mengaktifkan sinyal RD (0 volt) dan juga sinyal IO (IO/M = 5

volt)

Nomor port 04 akan memberikan nilai yg sesuai pada address line A0 sampai

dengan A7

b. Fixed addressing + memory mapped I/O.

Dalam perancangannya, design ini menggunakan address line 8 bit (A0 s.d A7) dan tidak

menggunakan sinyal IO/M. Misal Dip Switch tersebut akan diakses pada alamat 04H,

sinyal IO/M tidak perlu di-decode-kan dan instruksinya menjadi MOV AL,[04] maka

desain Decodernya seperti gambar berikut

Page 85: Diktat Mikroprosesor Dan Antarmuka

Gambar 26. Desain Decoder Fixed addressing + Mapped I/O

Tanpa adanya dekoding sinyal IO/M, maka tidak akan ada lagi yg membedakan antara

akses ke IO dgn akses ke memori. Dalam hal ini semua akses ke IO dianggap sama dgn

akses ke memori. Oleh karenanya tidak ada lagi instruksi IN dan OUT yg menyebabkan

sinyal IO/M berharga 5V dan akan digantikan dgn instruksi MOV yg menyebabkan

sinyal IO/M berharga 0V

c. Variable addressing + isolated I/O.

Dalam perancangannya, design ini menggunakan address line 16 bit (A0 s.d A15) dan

menggunakan sinyal IO/M. Misal Dip Switch tersebut akan diakses pada alamat 04H,

address line yg masuk ke Address Decoder (gerbang OR diatas) adalah A0 – A15 tidak

hanya sampai A7 saja. maka desain Decodernya seperti gambar berikut

Gambar 27. Desain Decoder Variable addressing + isolated I/O

Instruksi untuk mengaktifkannya menjadi:

MOV DX,0004

IN AL,DX

d. Variable addressing + memory mapped I/O.

Page 86: Diktat Mikroprosesor Dan Antarmuka

Dalam perancangannya, design ini menggunakan address line 16 bit (A0 s.d A15) dan

tidak menggunakan sinyal IO/M. Misal Dip Switch tersebut akan diakses pada alamat

04H, address line yg masuk ke Address Decoder (gerbang OR diatas) adalah A0 – A15

tidak hanya sampai A7 saja. Dan sinyal IO/M tidak perlu di-decode-kan dan instruksinya

menjadi MOV AL,[DX] (setelah terlebih dahulu mengisi DX dengan 0004) .

3. PPI 8255

Dalam suatu sistem mikroprosessor dimungkinkan suatu mikroprosessor dapat

berkomuni-kasi dengan peralatan yang lain. Karena seringkali data pada peralatan lain yang

berada di luar mikroprosessor mempunyai format dan kecepatan yang berbeda maka

diperlukan suatu antarmuka. Komunikasi data dapat dilakukan dengan dua cara yaitu :

a. Transfer data paralel (dengan PPI 8255)

Transfer data paralel memerlukan jumlah saluran sebanyak jumlah bit data yang

dikirimkan. Pada umumnya, di dalam komputer semua data dikirim/ditransfer secara

paralel melalui saluran data bus.

b. Transfer data serial (dengan PCI 8251-USART)

Transfer data serial hanya menggunakan satu buah saluran dalam pengiriman

data. Untuk transfer data antar komputer pada umumnya menggunakan teknik transfer

data serial agar lebih praktis dan efisien.

Programmable peripheral interface (PPI) 8255 adalah IC yang digunakan sebagai antarmuka

yang menghubungkan sistem mikroprosessor dengan peralatan lain. Berikut digambarkan

hubungan PPI dengan peralatan lain :

data data

kontrol alamat kontrol alamat

Gambar 28. Hubungan PPI dengan peralatan lain

3.1. Blok Diagram dan Port-Port pada PPI 8255.

Gambar blok diagram dan pin-pin keluaran untuk IC 8255 :

PPI

8255 Peralatan

I/O

CPU

Page 87: Diktat Mikroprosesor Dan Antarmuka

Gambar 29. Blok Diagram PPI 8255

IC 8255 merupakan suatu perangkat antarmuka yang dapat diprogram. Perangkat ini

mempunyai empat port dan masing-masing mempunyai 8-bit jalur I/O. Setiap port dapat

diprogram masing-masing sebagai port input maupun port output, chip ini juga disiapkan untuk

melakukan proses handshaking untuk memastikan transfer data dari dan ke port-port. Keempat

port tersebut adalah:

a. Port A

Mempunyai 8 jalur yang dapat diprogram sebagai jalur input maupun output.

Kedelapan jalur tersebut (A0-A7) harus diprogram seragam, baik sebagai input semua

maupun output semua.

b. Port B

Mempunyai 8 jalur yang dapat diprogram sebagai jalur input maupun output.

Kedelapan jalur tersebut (B0-B7) harus diprogram seragam, baik sebagai input semua

maupun output semua.

c. Port C

Port ini terdiri dari dua bagian yaitu port C upper (PC upper) dan port C lower

(PC lower), masing-masing terdiri dari 4 bit I/O dan dapat diprogram secara independen

sebagai input atau output.

Page 88: Diktat Mikroprosesor Dan Antarmuka

d. Port Control

Port control adalah port yang digunakan untuk mendefinisikan fungsi dari port-port

lainnya. Port ini tidak bisa dijadikan sebagai input atau output.

Secara garis besar, PPI 8255 mempunyai 24 pin I/O yang terbagi menjadi:

Group A terdiri dari: Port A (A0-A7) dan port C upper (C4-C7)

Group B terdiri dari: Port B (B0-B7) dan port C lower (C0-C3)

Dari gambar diatas kita dapat menentukan alamat masing-masing port. Tidak ada alamat tertentu

untuk port-port pada PPI, keempat buah port tersebut diidentifikasi dari pin A1 dan A0.

Tabel 13. alamat port pada PPI

Port Diakses saat

Keterangan A1 A0

Port A 0 0 Menyimpan data dari/untuk port A

Port B 0 1 Menyimpan data dari/untuk port B

Port C 1 0 Menyimpan data dari/untuk port C

Port Kontrol 1 1 Mengontrol kerja 3 port yang lain

3.1.1 Control Word

Ketika 8255 di-reset (dikembalikan ke kondisi awal), semua port-port difungsikan

sebagai input. Tetapi jika port-port diinginkan tidak digunakan sebagai input, sebuah control

word harus dikirim ke 8255 untuk mengubah mode-mode operasi port. Control Word

merupakan data 8-bit yang mengandung informasi untuk menginisialisasikan fungsi PPI

8255. Format dari Control Word adalah:

Page 89: Diktat Mikroprosesor Dan Antarmuka

Gambar 30. Format Control Word[4]

Contoh:

Nilai Control Word (CW) diset = 8AH

8AH = 100010102

Gambar 31.Contoh Format Control Word

D 7 D 6 D 5 D 4 D 3 D 2 D 1 D 0

GROUP B

PORT C ( LOWER ) 1 = INPUT

0 = OUTPUT

PORT B 1 = INPUT

0 = OUTPUT

MODE SELECTION PORT B 0 = MODE 0 1 = MODE 1

GROUP A

PORT C ( UPPER ) 1 = INPUT

0 = OUTPUT

PORT A 1 = INPUT

0 = OUTPUT

MODE SELECTION PORTA 00 = MODE 0 01 = MODE 1 1 X = MODE 2

MODE SET FLAG 1 = AKTIF

D7 D6 D5 D4 D3 D2 D1 D0

1 0 0 0 1 0 1 0

Page 90: Diktat Mikroprosesor Dan Antarmuka

Penjelasan pada CW di atas misalnya pada instruksi: MOV AL,8Amaka dari data CW

tersebut dapat diperoleh informasi bahwa PPI bekerja pada mode 0, Port A dan Port C lower

menjadi output, Port B dan Port C upper menjadi input.

*cat : jika tidak ada keterangan apa-apa anggap bekerja pada mode 0

3.1.2 Set/Reset

Set/Reset merupakan operasi untuk mengeset atau me-reset bit-bit pada port C. Adapun

syarat yang harus dipenuhi agar port C dapat menjalankan operasi khusus ini adalah:

PPI bekerja pada mode 0

Port C harus di-set sebagai output

Dari syarat di atas, maka control word (CW) yang mungkin digunakan untuk mengakses

operasi Set/Reset yaitu 80H, 82H, 90H, dan 92H. CW spesial ini dipakai pada inisialisasi

sebelum menggunakan operasi Set/Reset

Format CW Set/Reset itu sendiri adalah sebagai berikut:

Gambar 32. Format Set/Reset[4]

0 X X X‘0’ = RESET

‘1’ = SET

D7 D6 D5 D4 D3 D2 D1 D0

BIT SELECT:

000 = SELECT PORT C BIT 0

001 = SELECT PORT C BIT 1

010 = SELECT PORT C BIT 2

011 = SELECT PORT C BIT 3

100 = SELECT PORT C BIT 4

101 = SELECT PORT C BIT 5

110 = SELECT PORT C BIT 6

111 = SELECT PORT C BIT 7

DON’T CARE

BIT SET/RESET FLAG

‘0’ = AKTIF

Page 91: Diktat Mikroprosesor Dan Antarmuka

Contoh :

mengesetport C3 :

Gambar 33.Contoh Format Set C3

me-reset Port C7 :

Gambar 34.Contoh Format Reset C7

3.1.3 Mode-mode pada PPI 8255[4]

Pada PPI terdapat tiga port yang dapat diprogram dan dioperasikan sebagai

input/output. Perbedaan masing-masing mode ini terutama terletak pada proses handshaking.

Handshaking adalahproses persetujuan antara dua piranti dalam pengiriman atau pertukaran

data yang terjadi dalam mikroprosessor, handshaking secara umum diperlukan karena 2

piranti yang berhubungan beroperasi pada kecepatan yang berbeda.

Tiga pararel Port ini dapat diprogram dalam 3 macam mode, yaitu:

0 0 0 0 0 1 1 1 ‘1’ = SET

‘011’ = OPERASI PADA

PORT C3

DON’T CARE

MISAL : 000

BIT SET/RESET FLAG

‘0' = AKTIF

0 1 0 1 1 1 1 0 ‘1’ = RESET

‘111’ = OPERASI PADA

PORT C7

DON’T CARE

MISAL : ‘101’

BIT SET/RESET FLAG

‘0' = AKTIF

Page 92: Diktat Mikroprosesor Dan Antarmuka

a. Mode 0, Basic Input/Output

Pada mode ini, setiap port bekerja secara independen. Masing-masing port bisa

sebagai input atau output biasa tanpa proses handshaking. Jika port A dan port B

digunakan pada mode 0, maka port C upper maupun port C lower dapat berfungsi

bersama-sama sebagai port 8-bit ataupun mempunyai fungsi masing-masing sebagai port-

port 4-bit.

Jika Port C digunakan sebagai output, maka bit-bit Port C dapat di-set atau di-

reset secara individual dengan mengirimkan control word khusus ke kontrol register.

Ketika control word dikirim ke register, PPI 8255 akan memeriksa kondisi logika bit D7

dari control word. Jika sebagai control word, D7 bernilai bit 1, sedangkan jika D7

bernilai 0, maka control word tersebut diartikan sebagai operasi bit set/reset yang

digunakan untuk mengeset atau reset bit-bit pada port C.

Proses komunikasi pada mode ini yaitu pengirim akan langsung mengirim data

pada penerima. Pengirim tidak akan mengecek apakah penerima telah siap atau tidak,

Karena tidak terjadi proses handshaking pada mode ini.

b. Mode 1, Strobe Input/Output

Pada mode 1, jalur-jalur pada port C digunakan untuk mengontrol handshaking

untuk transfer data (single handshake). Sinyal – sinyal kontrol ini mempunyai definisi

yang berbeda disesuaikan dengan penggunaan port A dan port B apakah sebagai input

atau output.

1) Jika Port A dan Port B diinisialisasikan sebagai input, maka

PC0, PC1 dan PC2 digunakan sebagai jalur handshake untuk port B

PC3, PC4 dan PC5 digunakan sebagai jalur handshake untuk port A

PC6 dan PC7 digunakan sebagai jalur input atau output. Jika D3 pada CW = 1

maka PC6 dan PC7 adalah input

Tabel 14. Konfigurasi jalur Port C pada saat Mode 1 Input

PC0 PC1 PC2 PC3 PC4 PC5 PC6 PC7

INTRB IBFB STBB INTRA STBA IBFA I/O I/O

Proses hubungan pada mode 1 sebagai input bisa digambarkan sebagai berikut:

Page 93: Diktat Mikroprosesor Dan Antarmuka

Perangkat akan memberitahukan PPI 8255 dengan STB (strobe)

Kemudian devais pengirimkan data ke PPI 8255

Setelah pengiriman selesai, PPI 8255 merespon dengan IBF (input buffer full).

Proses pengiriman data dari perangkat ke PPI 8255 selesai

Kemudian PPI 8255 mengirim sinyal INTR (interrupt) ke mikroprosessor

Kemudian, mikroprosessor akan menanggapinya dengan mengirim sinyal RD

(read)

Kemudian PPI 8255 akan mengirim data ke mikroprosessor.

Gambar 35. Struktur mode 1 sebagai Input

2) Jika Port A dan Port B diinisialisasikan sebagai output, maka

PC0, PC1 dan PC2 digunakan sebagai jalur handshake untuk Port B

PC3, PC6 dan PC7 digunakan sebagai jalur handshake untuk Port A

PC4 dan PC5 digunakan sebagai jalur input atau output. Jika D3 pada CW = 1

maka PC4 dan PC5 adalah input

Tabel 15. Konfigurasi jalur Port C pada saat Mode 1 Output

PC0 PC1 PC2 PC3 PC4 PC5 PC6 PC7

INTRB OBFB ACKB INTRA I/O I/O ACKA ACKA

Proses hubungan pada mode 1 sebagai output bisa digambarkan sebagai berikut:

Mikroprosessor akan mengirim sinyal WR (write) ke PPI 8255

Page 94: Diktat Mikroprosesor Dan Antarmuka

Kemudian mikroprosessor pengirimkan data ke PPI 8255. Proses pengiriman data

dari mikroprosessor ke PPI 8255 selesai

Setelah itu PPI 8255 akan mengirim sinyal OBF (output buffer full) keperangkat

Kemudian PPI 8255 akan mengirim data ke perangkat

Setelah menerima semua data, perangkat akan merespon dengan sinyal ACK

(acknowledge) ke PPI 8255

Kemudian PPI 8255 akan memberitahukan ke mikroprosessor bahwa data telah

sampai ke devais dengan INTR (interrupt).

Gambar 36. Struktur mode 1 sebagai Output

Ingat mode 1 hanya dapat digunakan pada port A dan port B saja. Sedangkan

port C hanya dapat digunakan pada mode 0.

c. Mode 2, Bi-directional Bus

Mode 2 hanya dapat diinisialisasikan untuk port A. Pada mode ini port A dapat

digunakan untuk bidirectional handshake dalam pengiriman data. Artinya output pada 8-

bit jalur yang sama, port C digunakan untuk mengontrol handshaking.

Tabel 16. Konfigurasi jalur Port C pada saat Mode 2

PC0 PC1 PC2 PC3 PC4 PC5 PC6 PC7

I/O I/O I/O INTRA STBA IBFA ACKA ACKA

Page 95: Diktat Mikroprosesor Dan Antarmuka

Gambar 37. Struktur mode 2

Jika Port A diinisialisasikan sebagai mode 2 maka pin PC3 sampai PC7

digunakan sebagai jalur handshake untuk port A. PPI 8255 mempunyai mode dua ini

untuk dapat memperlebar sistem bus sampai slave mikroprsessor atau untuk mengirim

data ke dan dari controller floppy disk.

4. Antarmuka PPI 8255 dan I/O (Switch,LED, 7 seg)

4.1. Antarmuka Masukan Dasar

Piranti masukan dasar adalah buffer 3-state. Piranti keluaran dasar adalah kumpulan lacth

data. Buffer 3-state digunakan untuk membuat port masukan 8-pin yang digambarkan

dalam gambar 20. Perhatikan bahwa data TTL luar (toggle switch sederhana dalam

contoh ini) dihubungkan ke masukan buffer. Keluaran buffer dihubungkan ke bus data. Ketika

mikroprosesor mengeksekusi instruksi IN, port I/O didekode untuk menghasilkan logika

“0” pada SEL. Logika “0” ditempatkan pada pada output dari kendali input (OE1 dan OE2)

buffer 74LS541 yang mengakibatkan koneksi input data (D) disambungkan ke koneksi data

output (Q). jika Logika “1” diletakkan pada output dari kendali input buffer dari 74LS541.piranti

tersebut akan masuk ke mde 3 keadaan dengan impendasi tinggi yang secara efektif

memutuskan koneksi saklar dari bus.

Page 96: Diktat Mikroprosesor Dan Antarmuka

Gambar 38. Antarmuka masukan dasar yang mengilustrasikan koneksi 8 buah switch

4.2. Antarmuka Keluaran Dasar

Antarmuka keluaran dasar menerima data dari miroprosesor dan lazimnya menggunakan

penahan data untuk berhubungan dengan piranti luarnya. Penahan data ini disebut dengan latch

atau flip-flop. Latch seperti buffer yang dipakai pada piranti masukan, yang sering pula dipakai

dalam piranti I/O.

Gambar 21 adalah suatu contoh yang sederhana bagaimana membangun suatu

rangkaian keluaran untuk keperluar I/O. Latch dibutuhkan untuk menahan data, karena

ketika mikroprosesor mengeksekusi instruksi OUT, data hanya terdapat pada bus data

dengan waktu penahan yang sangat singkat. Tanpa latch ini kita tidak akan pernah melihat LED

bercahaya. Ketika instruksi OUT dilakukan data dari AL dipindahkan ke latch melalui bus data.

Disini, masukan D pada lacth octal 74ALS374 dihubungkan ke bus data untuk menangkap data

keluaran , dan keluaran Q dari latch disambungkan ke LED. Pada saat keluaran Q berada pada

logika “0”, LED bercahaya. Setiap waktu instruksi OUT dilakukan sinyal SEL ke latch aktif,

menangkap keluaran data ke latch dati setiap bagian 8-bit bus data. Data disimpan sampai

instruksi OUT berikutnya dilaksanakan. Dengan demikian kapanpun instruksi keluaran

dilakukan dalam rangkaian ini, data dari register AL tampak pada LED.

Page 97: Diktat Mikroprosesor Dan Antarmuka

Gambar 39. Antarmuka keluaran dasar yang dihubungkan ke 8 peraga LED

Pendekodean alamat dari gerbang I/O adalah sama dengan pendekodean alamat memori.

Hanya saja pada sinyal kontrol untuk melakukan Read dan Write yang dikombinasikan dengan

sinyal IO/M=1 (IO/M=0 untuk akses memori).

Perbedaan lainnya yang paling utama adalah antara pendekodean memori dan I/O tersiolasi

memori ada pada jumlah pin-pin alamat yang dihubungkan dengan dekoder. Kita mendekodekan

A19-A0 untuk memori dan A15-A10 untuk gerbang I/O.

Pendekodean Alamat I/O 8 bit (00h-FFh)

Seperti yang telah dijelaskan, perintah tetap I/O menggunakan 8-bit dari alamat gerbang I/O

yang terlihat pada A15-A0 sebagai 0000H – 00FFH. Jika sistem tidak memiliki lebih dari 256

peranti I/O, kita sering hanya mendekodekan alamat yang menghubungkan A7-A0 sebagai

gerbang pengalamatan 8-bit. Maka kita dapat mengabaikan alamat yang menghubungkan A15-

A8. Harap dicatat bahwa register DX selalu dapat mengalamatkan gerbang I/O sebagai 00H-

FFH.

Pendekodean Alamat I/O 16 bit (0000H – FFFFH)

Kita juga dapat mendekodekan alamat I/O 16 bit, khususnya didalam sistem komputer

Page 98: Diktat Mikroprosesor Dan Antarmuka

personal (PC). Perbedaan yang paling utama antara pendekodean alamat I/O 8-bit dengan

pendekodean alamat I/O 16-bit adalaha adanya jalur alamat tambahan (A15-A8) yang harus

didekodekan.

Gambar 40. Conoh Rangkaian Aplikasi 2 Digit 7 Segmen pada Pendekodean Alamat I/O 16 bit

5. Pemrograman pada PPI 8255

Pada pemrograman, alamat port PPI 8255 disimpan di register DX karena fungsinya

digunakan untuk menyimpan alamat port I/O (ingat materi modul I).

Data yang akan dikirimkan melalui port tertentu bisa di simpan terlebih dahulu di

register AL (bagian low register AX).

Contoh instruksi-instruksi pada pemrograman PPI 8255:

OUT DX,AL perintah untuk mengeluarkan data yang ada di AL pada

port yang alamatnya tersimpan di DX (perintah ini tidak

mengubah isi register DX).

IN AL,DX perintah untuk membaca data pada port yang alamatnya

tersimpan di DX, dan register AL akan terisi sesuai data

yang terbaca.

MOV DX,FF13 FF13 akan dikenal sebagai alamat port karena di simpan di

register DX.

Page 99: Diktat Mikroprosesor Dan Antarmuka

Pada setiap pemrograman yang menggunakan PPI 8255 harus dilakukan inisialisasi

control word, contohnya:

Nilai control word (CW) = 8CH, maka program inisialisasinya adalah:

MOV DX,FF13

MOV AL,8C

OUT DX,AL

Nilai 8CH dikenal sebagai control word karena dikeluarkan di alamat FF13 (alamat control).

Setelah proses inisialisasi inilah kita dapat menggunakan port A, B, dan C sesuai dengan yang

kita butuhkan. Pada contoh CW=8CH hal ini port A mode 0 sebagai output, port C upper sebagai

input (ingat port C hanya menggunakan mode 0), port B mode 1 sebagai output, port C low

sebagai output. Ingat bahwa saat menggunakan mode 1 ataupun mode 2, maka sebagian jalur

pada port C digunakan.Untuk itu pengaturan input ataupun output hanya berlaku pada kaki I/O

saja (lihat tabel konfigurasi mode 1 dan mode 2).

Page 100: Diktat Mikroprosesor Dan Antarmuka

Bab IX

Interupsi

Secara umum interupsi berarti menyela seperti ketika orang sedang mengetik akan

menghentikan pekerjaannya jika mendengar dering telepon, kemudian akan melanjutkan

ketikannya setelah aktivitas menerima telepon berakhir.Dalam system mikroprosesor, orang

tersebut dapat dianalogikan dengan prosesor yang sedang mengeksekusi program utama, dimana

program utamanya adalah melakukan pengetikan.Dering telepon adalah interupsi, sedangkan

aktivitas mengangkat telepon dan seterusnya sampai percakapan telepon selesai dapat

dianalogikan sebagai interrupt service routine.

Interupsi adalah upaya untuk mengalihkan perhatian 8088 dari program yg sedang

dikerjakan untuk memberikan pelayanan khusus terlebih dahulu pada yang menginterupsinya.

Interupsi digunakan ketika terhubung dengan peralatan I/O yang menyediakan atau

membutuhkan transfer data yang rendah.

Gambar 41. Contoh proses interupsi

Bila terjadi interupsi, maka komputer akan menghentikan dahulu apa yang sedang

dikerjakannya dan melakukan apa yang diminta oleh yang menginterupsi.

1. Jenis-jenis Interupsi

Ada dua jenis interupsi yaitu interupsi software dan hardware. Interupsi hardware adalah

interupsi yang ditimbulkan oleh perangkat keras lewat pin NMI dan INTR pada prosesor. Contoh

interupsi harware adalah interupsi timer, keyboard, I/O dsb. Sedangkan interupsi software adalah

Page 101: Diktat Mikroprosesor Dan Antarmuka

lebih mirip sub rutin atau prosedur yang dihasilkan dengan menggunakan instruksi INT.

Interupsi software lebih banyak dipakai dalam kode program assembly secara langsung.

Dilihat dari siapa yang menginterupsinya, interupsi dapat dibedakan menjadi 2, yaitu :

a. Software Generated

Interupsi ini dihasilkan oleh instruksi INT yang diikuti nomor interupsinya. Contoh INT 13

berarti interupsi nomor 13H. Tipe interupsi ini ada 2 jenis :

1. Interupsi yg dihasilkan oleh ROM BIOS : untuk nomor interupsi 0 s.d. nomor interupsi

1FH

2. Interupsi yg dihasilkan oleh sistem operasi yg digunakan :untuk nomor interupsi 20H

keatas

Pada setiap selesai melaksanakan suatu instruksi, 8088 akan memeriksa apakah ada

permintaan interupsi. Jika ada dan flag interupsi pada mikroprosesor (IF) mempunyai nilai 1 atau

set, artinya mikroprosesor mengijinkan adanya interupsi. Adanya instruksi INT dalam program

akan menyebabkan mikroprosesor 8088 meninggalkan program yg sedang dikerjakan, dan

mengerjakan routine khusus untuk nomor interupsi tersebut. Setelah routine tersebut selesai

dikerjakan, maka mikroprosesor 8088 akan kembali ke program semula yg tadinya ditinggalkan.

Urutan kerja mikroposesor 8088 saat mengerjakan instruksi INT XX (dapat berharga 00H

sampai FFH) :

1. Menyimpan isi register ke Stack

Langkah ini ditujukan untuk mengembalikan isi register setelah routine XX selesai

dijalankan. Proses yang dilakukan dalam tahap ini adalah :

a. Push Flag

b. Clear Interrupt Flag

c. Clear Trap Flag

d. Push CS

e. Push IP

2. Mencari alamat routine XX

Sebelum menjalankan routine XX, mikroprosesor 8088 harus mencari terlebh dahulu

dimana routine XX tersebut berada. Untuk mendapatkan alamat routine tersebut,

mikroprosesor 8088 akan mencari di Interrupt Vector Table (IVT) yang ada dialamat

Page 102: Diktat Mikroprosesor Dan Antarmuka

00000H sampai 003FFH (setiap nomor interupsi membutuhkan 4 byte alamat yang

disimpan oleh IVT : 2 byte untuk alamat segment dan 2 byte untuk alamat offset)

3. Lompat ke alamat routine XX

Melompat ke instruksi awal dari routine XX dengan melakukan lompatan JMP

SSSS:OOOO dimana SSSS adalah alamat segment dan OOOO adalah alamat offset.

4. Mengerjakan routine XX

Mikroprosesor 8088 akan mengerjakan semua instruksi yang ada sampai ditemukan

instruksi IRET (Interrupt Return)

5. Kembali ke program semula

Jika instruksi IRET dikerjakan, maka semua isi register yang tadi disimpan akan

dikembalikan. Proses yang dilakukan pada tahap ini adalah :

a. Pop IP

b. Pop CS

c. Set Trap Flag

d. Set Interrupt Flag

e. Pop Flag

b. Hardware Generated

Dihasilkan dengan mengaktifkan sinyal interrupt pada pin 18 di mikroprosesor 8088 (active

high). Adanya sinyal +5V pada pin 18 pada 8088 akan menyebabkan 8088 meninggalkan

program yg sedang dikerjakan, dan mengerjakan routine khusus untuk nomor interupsi tersebut.

Setelah routine tersebut selesai dikerjakan, maka 8088 akan kembali ke program semula yg

tadinya ditinggalkan.

Urutan kerja mikroprosesor 8088 saat mendapatkan sinyal aktif pada pin 18 (INTR) :

1) Menyimpan isi register ke Stack

Langkah ini ditujukan untuk mengembalikan isi register setelah routine XX selesai

dijalankan. Proses yang dilakukan dalam tahap ini adalah :

a. Push Flag

b. Clear Interrupt Flag

c. Clear Trap Flag

d. Push CS

e. Push IP

Page 103: Diktat Mikroprosesor Dan Antarmuka

2) Mengaktifkan sinyal INTA

Langkah ini ditujukan agar Interrupt Controller memberitahukan mikroprosesor 8088 nomor

interupsinya

3) Membaca nomor interupsi

Pada proses ini mikroprosesor 8088 membaca kondisi Address Bus AD0 – AD7 untuk

mengetahui siapa yang menginterupsinya.

4) Mencari alamat routine untuk nomor interupsi tersebut

Sebelum menjalankan routine yang diminta, mikroprosesor 8088 harus mencari terlebih

dahulu alamat atau posisi dari routine tersebut. Untuk mendapatkan alamat routine tersebut,

mikroprosesor 8088 akan mencarinya di IVT yang sama dengan tabel untuk Software

Generated Interrupt.

5) Lompat ke alamat routine tersebut

Melompat ke instruksi awal dari routine dengan melakukan lompatan JMP SSSS:OOOO

dimana SSSS adalah alamat Segment dan OOOO adalah alamat Offset.

6) Mengerjakan routine tersebut

Mikroprosesor 8088 akan mengerjakan semua instruksi yang ada sampai ditemukan

instruksi IRET (Interrupt Return)

7) Kembali ke program semula

Jika instruksi IRET dikerjakan, maka semua isi register yang tadi disimpan akan

dikembalikan. Proses yang dilakukan pada tahap ini adalah :

a. Pop IP

b. Pop CS

c. Set Trap Flag

d. Set Interrupt Flag

e. Pop Flag

Hardware interupt selain INTR juga ada NMI (non maskable interrupt) yang berarti interupsi

yang tidak dapat diinterupsi dan dapat menginterupsi prosedur interupsi yang sedang berjalan.

NMI biasa digunakan untuk mendeteksi ada power failure. Misal: suatu ketika tiba- tiba daya

listrik ke uP 8088 drop. Maka sinyal interupsi masuk ke pin 17 (NMI) untuk menjalankan

interrupt tipe 2 dan semua data disimpan ke battery backed-up memory.

Page 104: Diktat Mikroprosesor Dan Antarmuka

2. Interrupt Vector

Setiap interrupt akan mengeksekusi interupt handlernya masing-masing berdasarkan

nomornya. Sedangkan alamat dari masing- masing interupt handler tercatat di memori dalam

bentuk array yang besar elemennya masing-masing 4 byte yang berlokasi di memori 0000H-

03FFH. Keempat byte ini dibagi lagi yaitu 2 byte pertama berisi kode offset sedangkan 2 byte

berikutnya berisi kode segmen dari alamat interupt handler yang bersangkutan. Jadi besarnya

array itu adalah 256 elemen dengan ukuran elemen masing-masing 4 byte. Total keseluruhan

memori yang dipakai adalah sebesar 1024 byte (256 x 4 = 1024) atau 1 KB dan disimpan dalam

lokasi memori absolut 0000h sampai 3FFh. Array sebesar 1 KB ini disebut Interupt Vector Table

(Table Vektor Interupsi). Nilai-nilai yang terkandung pada Interupt Vector Table ini tidak akan

sama di satu komputer dengan yang lainnya. Untuk mencari alamat awal dari suatu nomor

interupsi digunakan rumus:

Alamat Awal = 4 * Nomor-Interupsi

Sedangkan interupt yang berjumlah 256 buah ini dibagi lagi ke dalam 2 macam yaitu:

- Interupt 00h - 1Fh (0 - 31) adalah interrupt BIOS dan standar di semua komputer baik yang

menggunakan sistem operasi DOS atau bukan. Lokasi Interupt Vector Table-nya ada di alamat

absolut 0000h-007Fh.

- Interupt 20h - FFh (32 - 255) adalah interrupt DOS. Interrupt ini hanya ada pada komputer yang

menggunakan sistem operasi DOS dan Interupt Handler-nya di-load ke memori oleh DOS pada

saat DOS digunakan. Lokasi Interupt Vector Table-nya ada di alamat absolut 07Fh-3FFh.

3. Interrupt Service Routine

Ada beberapa instruksi interrupt service routine antara lain: INT, INT3, BOUND, INTO,

IRET

a. INT n dimana menjalankan prosedur/rutin interupsi pada alamat (4 byte) yang disimpan di

vektor “n”. Cara menghitung alamat vektor table: mis INT 5 5 x 4 = 20 (14h) maka

alamat awal vektor interupsi 5 di 00014h sampai 00017h (karena 4 byte)

b. BOUND merupakan instruksi interupsi yang membandingkan 2 buah operand antara sebuah

register dan 2 buah word dari memori data. Mis : BOUND AX,DATA register AX

dibandingkan isi DATA dan DATA+1 juga dengan DATA+2 dan DATA+3

Page 105: Diktat Mikroprosesor Dan Antarmuka

Jika (isi register AX lebih kecil dari DATA dan DATA+1) atau (isi register AX lebih

besar dari DATA+2 dan DATA+3) maka BOUND akan menjalankan prosedur/rutin

pada alamat (4 byte) yang disimpan di vector “5”.

Jika isi register AX di antaranya, BOUND tidak akan terjadi apa- apa

c. INT3 merupakan instruksi interupsi yang digunakan menyimpan breakpoint untuk

debugging.

d. INTO merupakan instruksi interupsi yang dijalankan dengan mengecek OF (overflow). Jika

OF=1 maka INTO menjalankan prosedur/rutin pada alamat (4 byte) yang disimpan di vektor

“4”. Jika OF =0 maka INTO tidak akan terjadi apa- apa.

e. IRET adalah instruksi pengembalian khusus yang menghentikan pelaksanaan prosedur

service interupsi. Hal ini sama dengan RET normal, kecuali bahwa dalam tambahan pada

pemanggilan alamat kembali dari stack, dan menerima salinan dari register flag.

4. Emulator 8086 : Eksekusi program Interrupt

Interupsi terdiri atas interupsi hardware dan interupsi software. Interupsi hardware dipicu

dari eksternal dengan memberikan signal picu. Sedangkan interupsi software dipicu dari internal

secara software. Secara umum jika sinyal pemicu interupsi aktif maka porsesor akan

menyelesaikan eksekusi intruksi yang sedang dikerjakan kemudian alamat instruksi yang akan

dieksekusi disimpan dengan metoda tumpukan (stack) kemudian program counter/instruction

pointer dibebani dengan alamat vektor interupsi sehingga prosesor akan mengeksekusi rutin

interupsi.

Interupsi software pada mikroprosesor 8086/88 berupa instruksi dengan kata kunci INT

dengan sintak sebagai berikut :

INT konstanta

konstanta dapat bernilai dari 0 s/d 255 atau dalam bentuk heksadesimal dari 00h s/d FFh.Rutin

pelayanan interupsi ditangani oleh program BIOS dan sistem operasi . Interupsi 20h ke bawah

ditangai BIOS dan interupsi 21h keatas .ditangani sistem operasi.Setiap interupsi mempunyai

subinterupsi yang ditempatkan di register AH sehingga secara total tedapat 255 * 255 = 65536

fungsi interupsi.Pemanggilan interupsi dilakukan dengan cara seperti pada contoh berikut ini.

MOV AH, 02h ; subinterupsi 02h

INT 10h ; interupsi 10h

Page 106: Diktat Mikroprosesor Dan Antarmuka

Contoh program :

ORG 100h

Inf: LEA DX,Info

MOV AH,9h

INT 21h

input: LEA DX,wadah_masukan

MOV AH, 0ah

INT 21h

sisip:

XOR BX, BX

MOV BL, wadah_masukan[1]

MOV wadah_masukan[BX+2], '$'

tampil:

MOV DL,0Dh ;enter

MOV AH,2h

INT 21h

MOV DL,0Ah ;brs baru

INT 21h

LEA DX, wadah_masukan + 2

MOV AH, 9h

INT 21h

INT 20h

wadah_masukan db 10,?, 10 dup(' ')

Info DB "Ketik sembarang huruf dan angka: ",'

Page 107: Diktat Mikroprosesor Dan Antarmuka

5. Interupsi BIOS dan DOS

5.1. Sistem DOS

DOS (Disk Operating System) adalah sistem operasi dasar untuk komputer pribadi

berbasiskan prosesor Intel. DOS dirancang berkisar pada mikroprosesor 8088. Beberapa fungsi

dasar yang disediakan adalah fungsi-fungsi file (hard disk, disket), perangkat/devices (printer,

keyboard), dan pengaturan memori.

Kebanyakan keterbatasan sistem DOS berasal dari prosesor awal yang digunakannya. Meskipun

DOS dijalankan pada prosesor 80286 atau 80386, DOS tetap dijalankan pada mode 8088.

Gambar 42. Struktur Sistem DOS

5.2. Pengaturan Memori

Sebagaimana pengalamatan memori pada 8088, DOS hanya mampu menjangkau 1 MB

memori (pengalamatan 20 bit) di mana 360 KB dicadangkan untuk rutin perangkat keras dan

BIOS. Secara efektif DOS hanya mampu menggunakan 640 KB memori untuk penggunaan

aplikasi.

Pengalamatan pada 8088 menggunakan bentuk Segment:Offset (16:16), dengan alamat fisik

yang dituju = Segment*10h + offset. Dengan bentuk pengalamatan ini maka terjadi overlapping

alamat, yaitu suatu lokasi memori dapat ditempuh dengan banyak cara. Misal alamat fisik

01000h bisa dianggap beralamat 1000h:0, 0FFFh:10h, atau 0FFEh:20h.

Pengaturan memori pada DOS bersifat statik dan fisik. 8088 adalah prosesor sederhana

dan tidak menyediakan unit pengatur memori. Semua akses memori oleh program berupa

pengalamatan langsung. Alokasi memori juga bersifat tetap, sehingga suatu program akan

menempati alamat memori secara fisik hingga program tersebut berakhir.

Page 108: Diktat Mikroprosesor Dan Antarmuka

Pada 8088 tidak dikenal pembatasan memori, seluruh daerah alokasi memori diwujudkan

dalam bentuk satu daerah sebesar 1 Mb. Tidak ada pemisahan nyata antara berbagai komponen

sistem, seperti BIOS, sistem operasi maupun aplikasi. Kesalahan akses memori tidak dapat

dideteksi, dan kesalahan ini hanya bisa diatasi dengan memuat ulang sistem.

5.3. Pengaturan I/O dan Perangkat

Dalam mengelola input/output (I/O) sistem, DOS bertindak lebih sebagai konsultan

dibanding pengontrol. Hal ini bukan seluruhnya kesalahan DOS. Pada mode 8088 sistem

memberikan hak akses penuh I/O kepada seluruh program. Setiap aplikasi dapat secara langsung

mengubah status dari perangkat keras tanpa harus melalui kendali sistem. Suatu program juga

dapat mematikan sistem interrupt secara sepihak. Ketika interrupt sistem mati maka event-event

eksternal (seperti pewaktu dan komunikasi data) akan hilang.

Ketiadaan kontrol terhadap I/O ini dapat memberikan dua pandangan yang berbeda.

Keterbukaan dan fleksibilitas sistem dapat memberikan banyak kemungkinan kerja bagi suatu

program. Tanpa adanya pembatasan maka suatu program dapat memaksimalkan penggunaan

perangkat-perangkat yang ada pada komputer, yakni dengan melakukan akses langsung. Namun

kebebasan ini juga memberikan pengaruh buruk untuk sistem dengan multi program, karena tiap-

tiap program dapat menggunakan sumber daya sistem tanpa adanya koordinasi.

Dalam kerjanya DOS mendukung dua jenis perangkat, block devices, seperti hard disk dan

disket, dan character devices, seperti keyboard, printer dan perangkat serial. DOS memelihara

struktur data bernama device chain yang memetakan nama logika perangkat menurut driver

perangkat yang bersangkutan. Perangkat blok ditentukan menurut huruf alfabet diikuti oleh titik

dua, A:, B:, hingga Z:. Perangkat karakter ditentukan oleh nama (hingga 8 huruf) seperti PRN,

LPT: dan COM1.

Device DOS dapat diperluas dengan menambah device driver suatu perangkat kepada

sistem. Device driver ini akan diinstalasi oleh DOS ketika sistem dimulai. Device driver

mengelola perangkat yang bersangkutan dengan menggunakan rutin ROM BIOS atau mengakses

langsung perangkat keras. Rutin ROM BIOS diakses menggunakan mekanisme interupsi

software.

5.4. Pemrograman DOS

Pemrograman pada DOS didasarkan pada interupsi software. Interupsi software adalah

transfer kontrol antara dua program yang dibimbing oleh CPU. Sekumpulan fungsi (API,

Application Programming Interface) dibuat untuk mengakses DOS. API DOS berisi fungsi-

Page 109: Diktat Mikroprosesor Dan Antarmuka

fungsi untuk pengaturan memori, file, operasi input/output, dan akses untuk tiap-tiap

device.Yang tak kurang pentingnya fasilitas untuk memuat dan mengakhiri program.Tidak

semua fungsi-fungsi disediakan DOS sehingga program DOS biasanya menggunakan kombinasi

dari rutin ROM BIOS dan akses langsung perangkat keras.Berikut daftar interrupt BIOS dan

DOS dari 10h hingga 2Fh:

10 BIOS video

11 BIOS equipment determination

12 BIOS memory size

13 BIOS disk I/O service

14 BIOS serial communications

15 BIOS system services, cassette

16 BIOS keyboard services

17 BIOS parallel printer

18 BIOS ROM BASIC loader

19 BIOS bootstrap loader

1A BIOS time of day

1B BIOS user defined ctrl-break handler

1C BIOS user defined clock tick handler

1D BIOS 6845 video parameter pointer

1E BIOS diskette parameter pointer

1F BIOS graphics character table

20 DOS general program termination

21 DOS function request services

22 DOS terminate address

23 DOS control break termination address

24 DOS critical error handler

25 DOS absolute disk read

26 DOS absolute disk write

27 DOS terminate and stay resident

28 DOS idle loop, issued by DOS when idle

29 DOS fast TTY console I/O

Page 110: Diktat Mikroprosesor Dan Antarmuka

2A DOS critical section and NETBIOS

2B DOS internal, simple IRET in DOS 2.0-7.0

2C DOS internal, simple IRET in DOS 2.0-7.0

2D DOS internal, simple IRET in DOS 2.0-7.0

2E DOS exec command from base level command interpreter

2F DOS multiplexer

Aturan pemanggilan (calling convention) untuk fungsi-fungsi DOS membutuhkan masukan

parameter melalui register-register, termasuk parameter khusus berupa nomor fungsi yang

menentukan fungsi yang diinginkan. Program lalu melakukan interupsi software yang

menyebabkan eksekusi program beralih ke kernel DOS. Kernel DOS menyalurkan panggilan

tersebut dengan melihat nomor fungsi pada parameter dan memanggil rutin fungsi yang

bersangkutan. Setelah fungsi selesai kontrol dikembalikan pada program pemanggil dengan

parameter hasil pada register.

Gambar 43. Pemanggilan fungsi pada DOS

Page 111: Diktat Mikroprosesor Dan Antarmuka

Gambar 44. Contoh umum program DOS

Karena antar muka DOS dan BIOS bekerja dengan mekanisme interrupt, maka untuk perluasan

sistem suatu program dapat menggantikan interrupt DOS atau BIOS dengan rutinnya sendiri.

Untuk hal ini biasa dikenal istilah program TSR (Terminate and Stay Resident) yang merupakan

suatu program menetap di memori yang fungsinya terutama untuk mencegat/memodifikasi

pemanggilan sistem DOS/BIOS untuk pemrosesan lebih lanjut.

5.5. Program-program DOS

Sebuah program DOS adalah kumpulan dari segment kode dan data yang diletakkan dalam

sebuah file eksekusi (EXE) pada media penyimpan sekunder2. Ketika program dijalankan, kode-

kode dan obyek data dimuat dalam memori oleh bagian pemuat (loader) dari sistem operasi, dan

alamat dari rutin awal program diset dan dijalankan. Kebanyakan program termasuk dengan

stack, yaitu sebuah last-in-first-out (LIFO) obyek data yang digunakan untuk memori penyimpan

sementara. Karena arsitektur dari prosesor 8088, obyek memori DOS adalah segment.

Dalam fisiknya, program-program DOS terdiri dari 2 jenis, yakni berformat COM atau EXE.

Program COM hanya berupa image kode-kode mesin dengan besar maksimal 1 segment (64K),

sedangkan program EXE berupa image kode-kode mesin dengan besar dapat melebihi 1

Page 112: Diktat Mikroprosesor Dan Antarmuka

segment. Karena melebihi 1 segment, maka program EXE mempunyai header yang mengatur

tabel relokasi alamat, besar memori yang dibutuhkan, besar stack, dan inisial pointer stack &

instruksi.

Soal :

1. Sebuah PIC I8259 diinisialisasi dengan tipe interupt 2CH

Alamat vektor interupt yang berisi alamat awal interupt service routine adalah :

0000:0090 00 12 56 23 DE 7A 00 00 10 E1 30 00 1A FF EF A1

0000:00A0 90 32 FA 56 91 30 37 B1 CA 52 87 A0 10 00 00 E1

0000:00B0 87 F2 45 01 04 01 00 E1 DE 30 41 72 00 00 B0 00

0000:00C0 00 00 00 E1 DA 32 00 70 1A 00 00 E1 00 30 00 E1

Berdasarkan isi memori diatas , maka alamat awal dari Interupt Service Routine adalah:

CS = ……… IP =…………….

E100:0100 B8 34 12 81 C3 BB AB 12 B8 03 00 01 D8 40 53 CF

E100:0200 50 BA 00 00 EC A0 00 00 58 CF 73 53 A7 09 B5 D1

E100:0300 57 2B 9A 49 20 D3 AF 34 E8 01 62 50 CF 38 41 A5

E100:0400 67 2D 11 00 00 44 F7 3B 9A 82 50 47 19 CF D0 BE

Dari isi memori diatas, maka programinterupt yang dijalankan adalah:

Page 113: Diktat Mikroprosesor Dan Antarmuka

DaftarPustaka

[1]. Brey, B. Barry, The Intel Microprocessors: 8086/8088, 80186/80188, 80286, 80386,

80486, Pentium, Pentium Pro Processor, Pentium II, Pentium III, and Pentium 4 :

Architecture, Programming, and Interfacing, Prentice Hall, 2006

[2]. Halsall, Fred, Paul Lister, Dasar-Dasar Mikroprosesor Edisi Kedua, 1995

[3]. Adityakarna, N. B., Diktat Mikroprosesor dan Antarmuka, STT Telkom

[4]. Modul Praktikum Mikroprosesor dan Antarmuka, Laboratorium Mikroprosesor dan

Antarmuka, STT Telkom, 2004

[5]. 8088 8-Bit HMOS Microprocessor 8088/8088-2, Intel, 1990