• Tidak ada hasil yang ditemukan

HalamanJudul. Diktat MK Mikroprosesor dan Antarmuka. Disusun oleh : Raditiana Patmasari Inung Wijayanto Ramdhan Nugraha

N/A
N/A
Protected

Academic year: 2021

Membagikan "HalamanJudul. Diktat MK Mikroprosesor dan Antarmuka. Disusun oleh : Raditiana Patmasari Inung Wijayanto Ramdhan Nugraha"

Copied!
113
0
0

Teks penuh

(1)

HalamanJudul

Diktat MK Mikroprosesor dan Antarmuka

Disusun oleh :

Raditiana Patmasari

Inung Wijayanto

Ramdhan Nugraha

Fakultas Teknik Elektro

Universitas Telkom

Bandung

2014

(2)
(3)

Halaman Pengesahan

Diktat Mata Kuliah Mikroprosesor dan Antarmuka

Diktat Mata Kuliah Mikroprosesor dan Antarmuka telah selesai disusun dan telah disahkan untuk segera dapat digunakan

(4)

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

(5)

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 BinerOktal 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

(6)

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

(7)

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

(8)

5.5. Program-program DOS... 111 DaftarPustaka ... 113

(9)

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

(10)

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:

m n n a a aa a a a a N1 2... 2 1 0, 1 2... (1.1)

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

m m n n n n a a a a a a a a N                        10 ... 10 10 ... 10 10 10 ... 10 10 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:

(11)

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 n m n n a aa a a a a R a R a R a R a R a R a   ...   ...        ...  1 1...   0 0 1 1 2 2 1 1 2 1 0 1 2 1 (1.3) 1  n

a = 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.

(12)

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 11012

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: 1110 1010 + 11000 1 1 1 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

(13)

Contoh: 11011 1101 1110 -1 1 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: 110 101 x 110 000 110 11110 + 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: 1111101 101 101 -101 101 0101 101 -0 11001

(14)

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 1 0 1 2 8 1 8 2 8 3 8 4 8 (83,125) ) 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: 55 126 + 203 11 Carry of b. Pengurangan

Pengurangan bilanganoktal dapat dilaukan secara sama dengan pengurangan bilangan desimal. Contoh: 154 127 -25 Borrow of 11 c. Perkalian

Langkah langkah perkalian bilangan oktal:

- kalikan masing-masing kolom secara desimal - rubah dari hasil desimal ke octal

(15)

- 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: 16 14 x 70 16 + 250 410x610=2410=308 410x110x310=710=78 110x610=610=68 110x110=110=18 d. Pembagian

Pembagian bilangan oktal dapat dilakukan dengan prinsip yang sama dengan pembagian bilangan desimal Contoh: 250 14 14 -110 110 16 -0 2.3.Bilangan Heksadesimal

Sistem bilangan desimal menggunakan 16 macam simbol bilangan berbasis 16 digit angka yaitu: F E D C B A, , , , , , 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 199 192 7 192 16 7 16 7 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 :

(16)

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: BAD 431 + FDE AD16+116=1310+110=E16 16+316=1010+310=D16 B16+416=1110+410=F16 b. Pengurangan

Pengurangan bilangan heksadesimal dapat dilakukan secara sama dengan pengurangan bilangan desimal. Contoh: 12E1 627 -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.

(17)

AC 1B x 764 AC 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

(18)

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

(19)

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

(20)

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.

(21)

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)

(22)

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

(23)

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

(24)

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

(25)

 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

memori

read

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

(26)

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.

(27)

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 5 4 3 2 9 10 8 7 6 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 GND GND Vcc A14 A13 A12 A11 A10 A9 A8 AD7 A15 A16 AD6 AD5 AD4 AD3 AD2 AD1 AD0 A17 A18 A19 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

(28)

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.

(29)

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

(30)

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.

(31)

 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

(32)

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

(33)

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

(34)
(35)

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

(36)

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.

(37)

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

(38)

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 +

(39)

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

(40)

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

(41)

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)

(42)

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

(43)

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

(44)

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

(45)

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

(46)

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

(47)

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

(48)

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

(49)

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

(50)

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.

(51)

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 

(52)

-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

Gambar

Gambar 1 Struktur Sistem Komputer Pribadi berbasis Mikroprosesor
Gambar 2 Blok Diagram Sistem Komputer dengan struktur bus data, bus alamat dan bus  control [1]
Gambar 5. Blok diagram arsitektur mikroprosesor 8088
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)
+7

Referensi

Dokumen terkait

Dalam hal ini FIFA sebagai pemerintahan dari aktor non-negara yang bersifat global mempunyai kekuatan dikarenakan tidak ada organisasi internasional lainnya yang

INOKULASI FUNGI MIKORIZA ARBUSKULAR DAN PENAMBAHAN BAHAN ORGANIK PADA TANAH PASCA PENAMBANGAN GALIAN C TERHADAP PERTUMBUHAN DAN SERAPAN HARA P TANAMAN JAGUNG (Zea mays L.)&#34;,

Kompetensi yang dilihat disini yaitu kemampuan dari para pemimpin dalam membangun rasa memiliki karyawan serta usaha atau gaya kepemimpinan apa yang akan digunakan oleh

Anda membantu teman menggunakan Bahasa Indonesia ketika mereka tidak paham yang dibicarakan tutor.. Learner : Iya

Sebagian besar penderita gawat darurat di bawa ke rumah sakit dengan menggunakan kendaraan darat yaitu ambulance.Tujuan dari transportasi ini adalah memindahkan penderita

Keberhasilan dalam mencapai tujuan dari pemberian terapi perilaku dengan pendekatan modifikasi perilaku untuk menurunkan frekuensi keluar masuk kelas saat pelajaran berlangsung

Dari hasil wawancara pada tanggal 18 januari 2012 kepada 10 mahasiswa Pendidikan Biologi Universitas Sebelas Maret Surakarta yang sedang melakukan penelitian di sekolah

Pada pene- litian ini akan dibuat suatu sistem informasi cuaca yang menampilkan data informasi curah hujan, kecepatan angin, suhu meng- gunakan media wireless modul