Jelajahi eBook
Kategori
Jelajahi Buku audio
Kategori
Jelajahi Majalah
Kategori
Jelajahi Dokumen
Kategori
Disusun oleh :
Raditiana Patmasari
Inung Wijayanto
Ramdhan Nugraha
Halaman Pengesahan
Diktat Mata Kuliah Mikroprosesor dan Antarmuka telah selesai disusun dan telah disahkan untuk
segera dapat digunakan
Bandung,
Oktober 2014
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
Daftar Isi
HalamanJudul ................................................................................................................................. 1
Halaman Pengesahan ...................................................................................................................... 3
Prakata............................................................................................................................................. 4
Daftar Isi ......................................................................................................................................... 5
Bab I ................................................................................................................................................ 9
Sistem Bilangan .............................................................................................................................. 9
1.
2.
3.
2.1.
2.2.
2.3.
3.2.
3.3.
Bab II ............................................................................................................................................ 22
Pengenalan Mikroprosesor............................................................................................................ 22
1.
1.2.
1.3.
1.4.
2.
3.
2.
1.2.
Register .............................................................................................................................. 30
Bab IV ........................................................................................................................................... 35
Struktur Memori............................................................................................................................ 35
1.
2.
Segmentasi ......................................................................................................................... 36
3.
Bab V ............................................................................................................................................ 40
Pengenalan Instruksi ..................................................................................................................... 40
1.
2.
Jenis Instruksi..................................................................................................................... 43
2.1.
2.2.
Aritmatika ................................................................................................................... 44
2.3.
2.4.
2.5.
2.6.
3.
4.
5.
6.
7.
Stack ........................................................................................................................... 50
6.2.
Arithmetic ................................................................................................................... 55
6.3.
Logic ........................................................................................................................... 56
6.4.
Bab VI ........................................................................................................................................... 62
Komponen Penunjang Antarmuka 8088 ....................................................................................... 62
1.
Decoder .............................................................................................................................. 63
2.
Bab VII.......................................................................................................................................... 65
Interface 8088 dan Memori ........................................................................................................... 65
1.
1.1.
1.2.
1.3.
2.
3.
2.
1.2.
1.3.
Handshaking ............................................................................................................... 81
2.2.
3.
4.
5.
4.2.
2.
3.
4.
5.
5.2.
5.3.
5.4.
5.5.
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
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 101 .
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 101 , 102 , , 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 102 = 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:
(1.1)
Bentuk umum penentuan harga dari bilangan puluhan dapat dinyatakan dalam bentuk:
N a n 110 n 1 a n 2 10 n 2 ... a1101 a 0 10 0 a 110 1 ...
a 110 1 a 2 10 2 ... a m 10 m
(1.2)
Contoh:
Bilangan 1234 dapat diartikan:
Absolute
Operasi
Value
1
2
3
4
Jumlah
x
x
x
x
Position
Value/Place
Value
103
102
101
100
Hasil
1000
200
30
4
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:
Contoh:
Bilangan 1234,567 dapat diartikan:
Absolute
Value
1
2
3
4
5
6
7
Jumlah
Operasi
x
x
x
x
x
x
x
Position
Value/Place
Value
103
102
101
100
10-1
10-2
10-3
Hasil
1000
200
30
4
0,5
0,06
0,007
1234,567
an1an2 ...a1a0 a1a2 ...am an1 R n1 an2 R n2 ... a1 R1a0 R 0 a1 R 1 ... am R m (1.3)
a n 1
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.
Keterangan
Terdapat carry of 1
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
Hasil
Biner
00
0
10
1
11
0
01
1
Keterangan
Dengan borrow of 1
Contoh:
Borrow of
11
11011
1101 1110
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
0x0
1x0
1x1
0x1
Hasil
0
0
0
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
Contoh:
11001
101 1111101
101
101
101 0101
1010
Pembagian
Biner
Hasil
01
11
(123,4) 8 1 8 2 2 81 3 80 4 8 1 (83,125)10
Jika hasil penjumlahan lebih dari 7 maka akan menghasilkan carry of untuk
penjumlahan kolom selanjutnya.
Contoh:
11
55
126
+
203
Carry of
b. Pengurangan
Pengurangan bilanganoktal dapat dilaukan secara sama dengan pengurangan bilangan
desimal.
Contoh:
11
154
127
25
Borrow of
c. Perkalian
Langkah langkah perkalian bilangan oktal:
-
kalau hasil perkalian tiap kolol terdiri dari 2 digit, maka digit paling kiri
merupakan carry of untuk ditambahkan pada hasil perkalian kolom selanjutnya.
Contoh:
110x610=610=68
110x110=110=18
16
14 x
70
16
+
250
410x610=2410=308
410x110x310=710=78
d. Pembagian
Pembagian bilangan oktal dapat dilakukan dengan prinsip yang sama dengan pembagian
bilangan desimal
Contoh:
14
16
250
14
110
110 0
Position value system bilangan desimal adalah perpangkatan dari nilai 16. Contoh:
C7(16) ....(10)
7 160 7
C 161 192
7 192 199
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 :
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
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:
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 :
kalau hasil perkalian tiap kolol terdiri dari 2 digit, maka digit paling kiri merupakan
carry of untuk ditambahkan pada hasil perkalian kolom selanjutnya.
Contoh:
C16x116=1210x110=1210=C16
A16x116=1010x110=1010=A 16
AC
1B
x
764
AC
+
1224
C16xB16=1210x1110=8416
A16xB16+816=1010x1110+810=7616
d. Pembagian
Pembagian bilangan heksadesimal dapat dilakukan dengan prinsip yang sama dengan
pembagian bilangan desimal
Contoh:
AC
1B 1214
10E - 1B16xA16 = 2710x1010=27010= 10E16
144
144 1B 16 x C16 = 2710 x 10 10 = 3240 10=14416
0
3. Konversi Bilangan
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
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
7 : 2 = 3 sisa 1
59 : 2 = 29 sisa 1
3 : 2 = 1 sisa 1
29 : 2 = 14 sisa 1
1 : 2 = 0 sisa 1
14 : 2 = 7 sisa 0
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
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
: 2 sisa 1
0,60 x 2 = 1,2
: 2 sisa 1
0,20 x 2 = 0,4
: 2 sisa 1
0,40 x 2 = 0,8
0,80 x 2 = 1,6
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
Oktal
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
Heksadesimal
205
8 = 25
sisa 5
205
16 = 12
sisa 13 = D
25
8 = 3
sisa 1
12
16 = 12
sisa 12 = C
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)
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.
Buses
Memory system
Dynamic RAM
(DRAM)
Static RAM (SRAM)
Cache
Read-Only (ROM)
Flash memory
EEPROM
microprocessor
I/O system
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
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
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
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]
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).
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.
alamat
alamat
read
memori
data
memori
write
data
(a)
(b)
Gambar 3. (a) Proses Baca, (b) Proses Tulis antar Mikroprosesor dan memori[3]
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.
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.
GND
A14
A13
A12
A11
A10
A9
A8
AD7
AD6
AD5
AD4
AD3
AD2
AD1
AD0
clock
GND
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
8088
40
39
38
37
36
35
34
33
32
31
30
29
28
27
26
25
24
23
22
21
Vcc
A15
A16
A17
A18
A19
read
write
ALE
reset
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
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.
BIU
C-BUS
4
3
2
1
INSTRUCTION
STREAM
BYTE
QUEUE
ES
CS
SS
DS
IP
CONTROL
SYSTEM
A- BUS
EU
AH
BH
CH
DH
AL
BL
CL
DL
SP
BP
SI
DI
ALU
OPERAND
FLAGS
Fungsi dasar mikroprosesor sesuai gambar diatas, terdiri dari 2 fungsi yaitu EU / Execution
Unit dan BIU / Bus Interface Unit.
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 ).
2. Register
Dari gambar blok diagram arsitektur Mikroprosesor 8088 terlihat bahwa terdapat beberapa
jenis register yang mendukung kerja mikroprosesor sesuai dengan kategori fungsinya masingmasing. Berikut akan dijelaskan lebih rinci untuk setiap register-register tersebut.
Bit
16
8
16
16
16
16
Nama Register
AX, BX, CX, DX
AH, AL, BH, BL, CH, CL, DH, DL
CS, DS, SS, ES
SI, DI
SP, BP, IP
FR
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.
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 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
OF
DF
IF
TF
SF
ZF
AF
PF
CF
Nilai bit 0
NC ( Not Carry )
PO ( Odd Parity )
AC ( Carry )
NZ ( Not Zero )
PL ( Plus )
DI ( Disable )
UP ( Increment )
NV ( Not Overflow )
xor
Nilai bit 1
CY ( Carry )
PE ( Even Parity )
NA ( Not Carry )
ZR ( Zero )
NG ( Negative )
EI ( Enable )
DN ( Decrement )
OV ( Overflow )
2.
1
FE
+
FE +
1 FC
Carry bit
3. Operasi dibawah ini menunjukkan contoh 2 buah bilangan bertanda (signed) positif yang
dijumlahkan hasilnya berubah tanda negatif overflow (OF = 1)
1
+ 76
+
+ 68
+ 144
Tanda negatif
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.
Flag
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 =
ZF=
CF=
OF=..
ZF=
CF=
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.
= 8A
8000
= E8
0002
0001
0000
1
0
1
0
0
1
1
0
1
1
0
1
1
1
1
1
1
1
0
0
1
0
1
0
= BC
= 0D
= 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).
Alamat
data (Hexa)
137F:0100
0E E8 DC FC 89 46 FA 89-56 FC 0B D0 75 04 33 C0
137F:0110
C9 C3 8B 46 F8 FF 5E FA-89 46 FE 8B 34 00 8B 0D
137F:0120
C8 08 00 00 C7 46 FE 00-00 C7 46 F8 40 00 0E E8
137F:0130
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.
Gambar dibawah ini memberikan ilustrasi tentang skema pengalamatan mode real pada
memori, yang menggunakan alamat segment dan offset.
1FFFF
Offset = F000
1F000
10000
Segment Register
1 0 0 0
00000
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
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
2000h
2001h
2100h
AB00h
1234h
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
Alamat data
ES
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
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 :
CS = 2500
Adder
CS = FB00
Adder
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
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
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,
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)
Beberapa saat setelah mengirim sinyal MemREAD, CU membaca isi dari bus data dan
meletakkannya di IR.
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)
ADD, JMP)
DE
DE
EX
IF
EX
IF
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
MOV
PUSH
PUSHF
LAHF
SHAF
POP
POPF
IN
OUT
XCHG
XLAT
LEA
LDS
LES
Fungsi
moves byte or word
pushes word onto stack
pushes flags onto stack
moves flags into AH
loads flags from AH
pops word from stack
pops flags from stack
inputs data to accumulator from I/O device
outputs data from accumulator to I/O device
exchanges bytes or words
translates table lookup instruction
load effective address
loads DS and the operand with a 32-bit address
loads ES and the operand with a 32-bit address
2.2. Aritmatika
8086/8088 mampu melakkan penambahan, pengurangan, perkalian dan pembagian data serta
bytes.
Tabel 10. Instruksi Aritmatika
Opcode
ADD
ADC
AAA
DAA
INC
SUB
SBB
NEG
CMP
AAS
DAS
DEC
MUL
IMUL
AAM
DIV
IDIV
CBW
CWD
AAD
Fungsi
adds bytes or words
adds bytes or words plus carry flag
adjust ASCII after addition
adjust BCD after addition
adds 1 to bytes or word
subtracts bytes or word
subtracts bytes or word minus carry flag
change sign of byte or word (two's complement)
compares bytes or words
adjust ASCII after subtraction
adjust BCD after subtraction
subtracts 1 from byte or word
multiples unsigned byte or word
multiples signed byte or word
adjust ASCII after multiplication
divides unsigned byte or word
divides signed byte or word
converts byte to word
converts word to double word
addust ASCII before division
Fungsi
ANDs bytes or words
ORs bytes or words
XORs bytes or words
inverts bytes or words
TESTs bytes or words (AND)
shfit logical/aritmatic left
shift logical right
SAR
ROL
RCL
ROR
RCR
Fungsi
moves bytes or words
compares bytes or words
scans for byte or word
loads AL or AX with byte or word
stores AL or AX in byte or word
Function
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
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
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
MOV
BX,ABCD
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
MOV DL,AX
MOV DX,AL
0F6C:0107 mov ax,[bx+1] membaca memori pada alamat BX+1 sebanyak 2 byte (AX)
0F6C:010A mov [bx],ax
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 ................
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
-d
NOP
MOV [BX],12
MOV [AX],BX
MOV [CX],BX
MOV [DX],BX
5E
FFFE
tumpukan terakhir
CD
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
-d ffe0
PUSH
BX
0EA0:FFE0 00 00 00 00 00 00 00 00-00 00 00 00 34 12 00 00
AX ada di stack
-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
AX,ABCD
0F6C:0103 MOV
BX,DCBA
0F6C:0106 XOR
AL,AL
0F6C:0108 JMP
010C
0F6C:010A MOV
0F6C:010C JZ
AL,BH
010E
0F6C:010E
-t
trace JZ 010E
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
d=0,w=0,mod=00,reg=000(AL),r/m=111([BX])
MOV [BX],AX
d=0,w=1,mod=00,reg=000(AX),r/m=111([BX])
MOV AL,[BX]
d=1,w=0,mod=00,reg=000(AL),r/m=111([BX])
MOV AX,[BX]
d=1,w=1,mod=00,reg=000(AX),r/m=111([BX])
contoh 2:
MOV AX,1234
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
POP - Pop
1.
Register
0101 1reg
2.
Segment Register
000reg111
contoh 1: POP AX
contoh 2: POP CS
6.2. Arithmetic
ADD - Add
1.
0000 00dw
modregr/m
2.
Immediate to Reg/Mem
1000 00sw
mod000r/m
data
3.
Immediate to AX/AL
0000 010w
data
data (w=1)
data(sw=01
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
contoh 3:
ADD AX,1234
SUB - Subtract
1.
0010 10dw
modregr/m
2.
1000 00sw
mod101r/m
data
3.
0010 110w
data
data (w=1)
data(sw=01
contoh 1:
SUB BX,CX =29CB (00101001 11001011):d=0,w=1,mod=11,reg=001(CX),r/m=011(BX)
SUB BL,CL
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
1101 00vw
mod10 0r/m
1101 00vw
mod10 1r/m
AND - And
1.
0010 00dw
modregr/m
2.
Immediate to Reg/Mem
1000 000w
mod100r/m
data
3.
Immediate to AX/AL
0010 010w
data
data (w=1)
data (w=1)
OR - Or
1.
0000 10dw
modregr/m
2.
Immediate to Reg/Mem
1000 000w
mod001r/m
data
3.
Immediate to AX/AL
0000 110w
data
data (w=1)
data (w=1)
XOR - Exclusive Or
1.
0011 00dw
modregr/m
2.
Immediate to Reg/Mem
1000 000w
mod110r/m
data
3.
Immediate to AX/AL
0011 010w
data
data (w=1)
1110 1011
disp
0111 0100
disp
contoh:
data (w=1)
-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
JZ 010F = 7409
JZ 0100 = 74F8
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
000 AL
00 ES
001 CX
001 CL
01 CS
010 DX
010 DL
10 SS
011 BX
011 BL
11 DS
100 SP
100 AH
101 BP
101 CH
110 SI
110 DH
111 DI
111 BH
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
-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
BL,F7
MOV
0EA0:0105 50 PUSH
AX
Addressing Mode
Immediate
Register Direct
Register Indirect
Displacement
Direct atau Absolute
Contoh instruksi
Add AX, 3F 5B
Add AX, BX
Add AX, [BX]
Add AX, [BX+128]
Add AX, [1001]
Arti
AX AX + 3F 5B
AX AX + BX
AX Mem[BX]
AX Mem[BX+128]
AX Mem[1001]
-a
0EA0:0100 mov bx,000f
Immediate
Register Direct
Register Indirect
[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
-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
XOR BX,BX
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
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
Bab VI
Komponen Penunjang Antarmuka 8088
Untuk dapat bekerja, mikroprosesor 8088 membutuhkan sistem penunjang atau komponenkomponen 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,
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:
output
input
Gambar 10. Gambar Prinsip Penggunaan Three State Buffer pada Saluran Data
Bab VII
Interface 8088 dan Memori
benar-benar mengerti
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
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 4ms.Penyegaran kembali juga akan terjadi selama penulisan dan selama cycle/ putaran
penyegaran khusus.
Keterangan :
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
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
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
16 Kbyte
0000 3FFF
32 Kbyte
0000 7FFF
64 Kbyte
0000 FFFF
ini
memilih
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
Gambar 13. Contoh Peranti memori RAM 2KB 6116 (11 bit alamat) dan fungsi pin
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.
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
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).
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 :
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
akhir
00001001111111111111
= 09FFF
Memori 2
00000010000000000000
= 02000
32 KByte
00000001111111111111
= 01FFF
Memori 1
0000-0000000000000000
= 00000
8 KByte
D 0 s/d D7
Address Decoder
A0
s/d
A14
A15
Memori 2
A16
A17
A18
/CS
A19
D 0 s/d D7
A13
A14
A15
A16
A17
A18
A19
A0
s/d
A12
Memori 1
/CS
4. Timing Diagram
Hal penting untuk kita memahami timing bus sistem sebelum memilih memori atau alat
I/O untuk pengantarmuka dengan mikroprosesor 8088.
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.
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
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
D7 D0
A12
A13
A15
A14
A16
A17
/EN
0
1
2
3
4
5
6
7
/CS
A11 A0
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.
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.
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
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.
Variable Addressing
Nomor port yang diakses ditulis terlebih
dahulu ke register DX
Maksimum jumlah port yang bisa diakses
adalah 65536
Untuk pengaksesannya digunakan address
bus A0-A15
Data bus yang digunakan bisa 8 bit (register
AL) atau 16 bit (register AX)
Contoh instruksi : IN AL, DX
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
Nomor port 04 akan memberikan nilai yg sesuai pada address line A0 sampai
dengan A7
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
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 :
CPU
data
PPI
data
8255
kontrol alamat
Peralatan
I/O
kontrol alamat
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.
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:
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
Port A
Port B
Port C
Port Kontrol
Diakses saat
A1
A0
0
0
0
1
1
0
1
1
Keterangan
Menyimpan data dari/untuk port A
Menyimpan data dari/untuk port B
Menyimpan data dari/untuk port C
Mengontrol kerja 3 port yang lain
D7
D6
D5
D4
D3
D2
D1
D0
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
1X = MODE 2
Contoh:
Nilai Control Word (CW) diset = 8AH
8AH = 100010102
D7
D6
D5
D4
D3
D2
D1
D0
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:
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
D6
D5
D4
DONT CARE
D3
D2
D1
D0
0 = RESET
1 = SET
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
Contoh :
mengesetport C3 :
0
1 = SET
DONT CARE
MISAL : 000
me-reset Port C7 :
0
1 = RESET
DONT CARE
MISAL : 101
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
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:
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
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
PC1
PC2
PC3
PC4
PC5
PC6
PC7
I/O
I/O
I/O
INTRA
STBA
IBFA
ACKA
ACKA
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.
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.
Gambar 38. Antarmuka masukan dasar yang mengilustrasikan koneksi 8 buah switch
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.
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
Data yang akan dikirimkan melalui port tertentu bisa di simpan terlebih dahulu di
register AL (bagian low register AX).
IN AL,DX
MOV DX,FF13
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).
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.
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
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
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.
c.
d.
Push CS
e.
Push IP
Pop IP
b.
Pop CS
c.
d.
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.
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 0000H03FFH. 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.
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
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.
c.
Jika isi register AX di antaranya, BOUND tidak akan terjadi apa- apa
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.
; subinterupsi 02h
INT 10h
; interupsi 10h
Contoh program :
ORG 100h
Inf:
LEA DX,Info
MOV AH,9h
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
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 tiaptiap 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-
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
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.
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
0000:00A0
0000:00B0
0000:00C0
12
32
F2
00
56
FA
45
00
23
56
01
E1
DE
91
04
DA
7A
30
01
32
00
37
00
00
00
B1
E1
70
10
CA
DE
1A
E1
52
30
00
30
87
41
00
00
A0
72
E1
1A
10
00
00
FF
00
00
30
EF
00
B0
00
A1
E1
00
E1
Berdasarkan isi memori diatas , maka alamat awal dari Interupt Service Routine adalah:
CS = IP =.
E100:0100
E100:0200
E100:0300
E100:0400
00
90
87
00
B8
50
57
67
34
BA
2B
2D
12
00
9A
11
81
00
49
00
C3
EC
20
00
BB
A0
D3
44
AB
00
AF
F7
12
00
34
3B
B8
58
E8
9A
03
CF
01
82
00
73
62
50
01
53
50
47
D8
A7
CF
19
40
09
38
CF
53
B5
41
D0
CF
D1
A5
BE
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