Mikroprosesor 8088 mulai diperkenalkan oleh Intel Corporation pada tahun 1978. Mikroprosesor ini mengawali sejarah perkembangan mikroprosesor Intel selanjutnya, seperti 80186, 80286, 80386, 80486, Intel Pentium I, sampai yang sekarang Intel Pentium IV. Semua instruksi yang terdapat pada mikroprosesor 8088 sepenuhnya dapat dijalankan pada mikroprosesor-mikroprosesor Intel tersebut. Karena itu, untuk memahami perancangan hardware dan software pada PC sekarang, ada baiknya jika Anda lebih dahulu memahami perancangan hardware dan software pada mikroprosesor 8088 ini.
Mikroprosesor 8088 mempunyai 8 bit jalur data dan 20 bit jalur alamat. Jalur data memiliki pin yang sama dengan jalur alamat, artinya pada saat tertentu digunakan sebagai jalur data dan pada saat yang lain digunakan sebagai jalur alamat. Karena satu pin memiliki dua fungsi, yaitu sebagai jalur data dan jalur alamat maka digunakanlah sistem time multiplexing, yaitu penggunaan jalur yang sama untuk fungsi dan waktu yang berbeda, sehingga tidak bisa data dan alamat dikirim pada saat yang bersamaan. Mikroprosesor 8088 dibuat dalam bentuk IC dengan kaki sebanyak 40 pin (jenis DIP 40).
Ada dua mode yang dapat digunakan pada mikroprosesor 8088, yaitu mode minimum dan mode maksimum. Pena yang menjadi penentu penggunaan mode adalah pena MN/MX. Mode minimum biasanya digunakan untuk sistem yang sederhana yang umumnya menggunakan prosesor pada satu PCB. Sedangkan mode maksimum umumnya digunakan untuk sistem yang lebih kompleks yang menggunakan multi I/O dan memori yang terpisah serta dapat pula digunakan dengan co-prosesornya (co-prosesor untuk 8088 adalah 8087). Dalam homepage ini, penulis hanya akan menjelaskan perancangan pada mode minimum saja, karena umumnya cukup dengan mode minimum saja suatu alat pengontrol/kendali otomatis sudah dapat diwujudkan.
Mikroprosesor 8088 mampu mengalamati memori sampai 1 MB. Memori ini digunakan untuk menyimpan kode biner dari instruksi yang akan dijalankan oleh µP, selain itu memori juga digunakan untuk menyimpan data secara sementara. Dengan tambahan unit I/O memungkinkan µP 8088 untuk menerima data dari luar (operasi input) ataupun mengirim data keluar (operasi output).
Konfigurasi pena µP 8088
Gambar dibawah ini memperlihatkan diagram pewaktuan yang menunjukkan siklus baca tulis ketika terjadi operasi I/O dan Memori oleh µP. Seluruh penjelasan tentang pena-pena pada mikroprosesor 8088 ini akan selalu mengacu pada diagram pewaktuan tersebut.
Pena pada µP 8088 ada yang tidak dipengaruhi oleh perubahan mode baik mode maksimum ataupun mode minimum dan ada pula pena yang berfungsi hanya pada saat mode maksimum.
Pena yang tidak dipengaruhi oleh perubahan mode baik mode maksimum ataupun mode minimum, diantaranya adalah :
a. Bus alamat ( AD0-AD7, A8-A15, dan A16/S3-A19/S6). Mikroprosesor 8088 mempunyai 20 pin jalur alamat sehingga dapat menjangkau 220 ( 1 MB) lokasi memori. Pena-pena ini hanya berfungsi pada saat T1 (lihat diagram pewaktuan). Pada saat T2 sampai T4 ada sebagian pin yang berfungsi sebagai data dan juga sebagai status.
b. Bus data ( AD0-AD7). Mikroprosesor 8088 mempunyai jalur data sebanyak 8 pin dan bisa digunakan secara biderectional (dua arah). Pin-pin ini berfungsi sebagai jalur data hanya pada saat T2-T4. Pada saat T1 berfungsi sebagai jalur alamat.
c. Kontrol baca (RD). Sinyal ini aktif rendah. Jika pena ini berlogic nol berarti µP sedang melaksakan pembacaan data. Sinyal ini aktif dipertengahan T2 dan kembali tidak aktif dipertengahan T4.
d. Clock (CLK). Yaitu masukan sinyal detak yang diberikan dari luar untuk mensinkronkan segala kegiatan pada µP. Miroprosesor 8088 dapat bekerja pada frekuensi clock 4,77 MHz atau 8 MHz untuk versi turbo.
e. Kontrol waktu tunggu (READY). Sinyal READY ini disampel pada sisi naik T2. Jika sinyal READY ini berlogic 0 berarti akan disisipkan TW/Twait antara T3 dan T4. Hal ini terus diulangi sampai sinyal READY diberi logika 1. Sinyal ini biasanya digunakan jika ada hardware lain yang memiliki kecepatan lebih lambat dari kecepatan µP ketika sedang bekerja dalam keadaan normal.
f. Reset sistem (RESET). Sinyal ini aktif tinggi. Bila logika 1 diberikan pada pena ini, mikroprosesor akan menghentikan segala kegiatan yang sedang terjadi saat itu. Semua register akan dibuat 0 kecuali register code segment dibuat FFFF0H (akan dijelaskan pada penjelasan mengenai segment register ).
g. Interupsi (INTR dan NMI). INTR dan NMI (Non Maskable Interrupt) adalah permintaan interupsi yang dipanggil secara hardware. Sinyal INTR merupakan sinyal aktif tinggi, sedangkan NMI dapat aktif menggunakan trigger sisi naik dari sinyal clock. INTR tidak akan berfungsi jika interupsi flag dikosongkan (menggunakan instruksi CLI ), sedangkan NMI tidak dapat dihalangi dengan instruksi CLI.
h. Kontrol tunggu test (TEST). Untuk mengaktifkan sinyal TEST, digunakan instruksi WAIT. Jika pin ini berlogic 1 ketika µP sedang menjalankan instrruksi WAIT, CPU akan berada pada keadaan idle mode, artinya mikroprosesor tidak melakukan kegiatan apa-apa sebelum pin ini berlogic 0. Jika pin ini berlogic 0 kembali, maka pelaksanaan instruksi akan dilanjutkan.
i. Status (A16/S3-A19/S6). Sinyal status digunakan untuk mendeteksi suatu keadaan-keadaan atau operasi-operasi yang sedang berlangsung, diantaranya pengambilan instruksi, membaca memori, menulis memori, dan operasi-operasi yang lain. Sinyal ini dikeluarkan pada saat keadaan T2-T4. Definisi dari status S4 dan S3 adalah :
S4.. S3 | Yang Dijangkau saat terjadi siklus bus |
0.. ...0 | Extra segment (ES) |
0..... 1 | Stack segment (SS) |
1..... 0 | Code segment (CS) atau tidak sama sekali |
1..... 1 | Data segment (DS) |
j. Catu daya ( VCC dan GND). Mikroprosesor 8088 membutuhkan Vcc = +5 V yang masih bisa bertoleransi sebesar ± 10% dari +5 V.
Sinyal yang berfungsi hanya pada mode minimum ( mode maksimum tidak digunakan ) adalah :
a. Sinyal tulis (WR). Sinyal ini aktif rendah. Jika sinyal ini berlogic 0, berarti µP sedang melaksanakan operasi tulis data ke unit memori atau I/O. Sinyal ini aktif pada saat T2-T4.
b. Sinyal kontrol memori dan I/O ( IO/M ). Jika pena ini berlogic 0, berarti saat ini pada siklus bus sedang berlangsung operasi input/output. Jika pena ini berlogic 1, berarti saat ini pada siklus bus sedang berlangsung operasi memori.
c. Address Latch Enable (ALE). Sinyal ini digunakan sebagai penahan alamat yang baru masuk dalam suatu proses siklus mesin. Sinyal ini dapat digunakan untuk dimultipleks dengan alamat, data, dan status. Sinyal ini mengeluarkan logic 1 pada saat clock T1.
d. Pengiriman dan penerimaan data ( DT/R ). Jika sinyal ini berlogic 1, arah data adalah dari µP menuju keluar. Jika sinyal ini berlogic 0 maka arah data dari luar menuju µP.
e. Data Enable ( DEN ). Sinyal ini biasanya digunakan untuk meng"on"kan buffer (latch) yang dihubungkan kebus data.
f. Interrupt Acknowledge ( INTA ). Sinyal ini secara khusus digunakan sebagai tanggapan terhadap suatu instruksi INTR.
g. Hold Request ( HOLD). Bila logika 1 diberikan pada pena HOLD, µP akan menghentikan kegiatan dan melepas bus yang berhubungan dengan unit memori dan I/O, sehingga hal ini memberikan kesempatan bagi proses lain untuk mengambil alih sistem.
h. Hold Acknowledge (HLDA) Sinyal ini digunakan sebagai pengakuan dari µP bahwa sinyal HOLD telah diterima dan sistem dapat diambil alih oleh prosesor lain.
Sinyal yang berfungsi hanya pada saat mode maksimum adalah :
a. Status siklus bus ( S0, S1, S2 ). Sinyal ini merupakan keluaran yang akan diberikan oleh IC lain yang berfungsi sebagai bus kontroller .
b. Kunci ( LOCK ). Sinyal ini akan mengeluarkan logika 0 selama pelaksanaan instruksi LOCK sehingga akan mencegah prosedur lain menjangkau sistem.
c. Status antrian ( QS0, QS1). Sinyal ini akan memberitahu informasi apa yang telah dipindahkan dan informasi apa yang ada dalam antrian sewaktu terjadi siklus clock sebelumnya.
d. Local Bus Control ( RQ/ GT1 dan RQ/ GT0 ). Sinyal ini menggantikan fungsi HOLD dan HLDA pada mode minimum.
III. Arsitektur Internal µP 8088
Arsitektur internal µP 8088 dibagi menjadi dua bagian, yaitu BIU (Bus Interface Unit) dan EU (Execution Unit). BIU berfungsi untuk menjalankan operasi bus seperti menjemput instruksi, membaca data dan menulis ke memori, menerima input dan mengeluarkan output ke unit periferal. Dari BIU ini, dihasilkan bus data sebanyak 8 bit. Untuk menjalankan fungsinya, BIU memiliki register segment, register komunikasi internal, pointer instruksi, antrian kode objek instruksi, bus alamat, dan bus kontrol logika. EU berfungsi untuk menterjemahkan dan menjalankan instruksi.
Mikroprosesor 8088 mempunyai 4 kelompok register internal yaitu register penunjuk instruksi (indeks pointer register), register data (general purpose register), register segment (segment register), serta flag register.
Register Penunjuk Instruksi (Indeks Pointer Register).
Register Penunjuk instruksi merupakan register 16 bit yang berfungsi untuk menunjukkan lokasi instruksi berikutnya yang akan dijalankan. Register IP ini berpasangan dengan CS (code segment) dimana penulisannya adalah sebagai berikut [CS : IP]. Jadi lokasi alamat yang ditunjuk bergantung pada code segment yang terdapat pada segment register.
Register Data (General Purpose Register).
Register data pada µP 8088 dibagi menjadi 4 kelompok register yang semuanya berfungsi untuk penyimpanan data secara sementara. Keempat kelompok register ini adalah register AX, BX, CX. dan DX. Register AX, BX, CX, dan DX merupakan register data 16 bit. Register-register 16 bit dari kelompok ini mempunyai suatu ciri khas, yaitu dapat dipisah menjadi 2 bagian dimana masing-masing bagian terdiri dari 8 bit, yaitu register data AH; AL (untuk AX), BH; BL (untuk BX), CH; CL (untuk CX), dan DH; DL (untuk DX). Akhiran H menunjukkan High dan akhiran L menunjukkan Low. Selain berfungsi sebagai penyimpan data serba guna yang dapat digunakan secara bebas oleh pemogram, register-register tersebut memiliki juga fungsi-fungsi lainnya secara khusus, yaitu : Register AX biasanya digunakan pada operasi aritmatika (perkalian dan pembagian), dan operasi I/O 16 bit. Register BX biasanya digunakan untuk menunjukkan suatu alamat offset dari suatu segment. Register CX biasanya digunakan untuk menunjukkan banyaknya looping yang akan terjadi. Register DX biasanya digunakan untuk menampung sisa hasil pembagian 16 bit serta pada operasi I/O secara tidak langsung (16 bit)
Register Penunjuk dan Register Indeks (Indeks and Pointer Register).
Mikroprosesor 8088 mempunyai dua buah register penunjuk (register SP dan BP) serta dua buah register indeks ( register SI dan DI). Data yang terdapat pada SP ( Stack Pointer) memungkinkan pemogram untuk menjangkau lokasi memori dari stack segment. Stack pointer yang berpasangan dengan stack segment (SS : SP) digunakan untuk menunjukkan alamat dari stack RAM (Random Access Memory). Stack RAM ini biasanya digunakan untuk menyimpan informasi yang berhubungan dengan operasi stack, seperti isi PC, alamat kembali (return address) pada instruksi CALL, dan akumulator. Penyimpanan informasi pada stack RAM menggunakan sistem LIFO (Last In First Out), artinya data yang terakhir dimasukkan (PUSH) merupakan data pertama yang akan diambil (POP). BP (Base Pointer) yang berpasangan dengan register stack segment (SS) digunakan untuk mencatat suatu alamat dimemori tempat data. Source Indeks (SI) dan Destination Indeks (DI) biasanya digunakan pada operasi string dengan mengakses secara langsung pada alamat dimemori yang ditunjukkan oleh kedua register ini .
Register Segment (Segment Register).
Mikroprosesor 8088 menghasilkan 20 bit alamat sehingga dapat menjangkau 1 MB lokasi memori ( 220 = 1048576 Byte atau disingkat 1 MB). Namun pada µP 8088 register yang tersedia hanya 16 bit ( 216 = 64 KB), sehingga untuk menjangkau alamat 1 MB, memori pada µP 8088 dibagi menjadi ruas-ruas 64 KB, sehingga setiap saat hanya ada 4 segment (ruas) yang dapat aktif. Segment-segment register ini adalah: Code Segment (CS), Data Segment (DS), Stack Segment (SS), dan Extra Segment (ES). Code segment digunakan untuk menyimpan program. Data segment digunakan untuk menyimpan data program. Extra segment digunakan untuk menyimpan segment data tambahan. Stack segment digunakan nuntuk menyimpan alamat kembalinya interupsi dan subrutin. Keempat register diatas menunjuk kelokasi masing-masing segment. Karena register segment hanya terdiri dari 16 bit, sedangkan memori yang dapat dijangkau sebanyak 20 bit, maka unit BIU ( Bus Interface Unit) akan menambah 4 bit lagi pada LSB. Sebagai contoh, jika register ES=2721H, maka register akan menunjuk kelokasi 27210H. Setiap segment hanya dapat menampung 64 KB lokasi memori, sehingga jika CS=A000H, maka lokasi memori untuk Code Segment dimulai dari A0000H sampai AFFFFH (64 KB).
Setiap kali catu daya dihidupkan, µP berada dalam keadaan sembarang dimana semua register berisi data yang tidak dapat diramalkan. Hal ini memungkinkan terjadinya pembacaan maupun penulisan lokasi memori yang acak pula. Karena itu semua register µP harus dibuat nol kecuali Code Segment register dibuat FFFF0H, sehingga µP akan menjemput instruksi yang berada pada alamat fisik FFFF0H. Jadi dengan memberikan sinyal RESET ketika pertama kali dihidupkan, µP akan selalu menjemput instruksi pada lokasi FFFF0H. Setelah menempatkan suatu instruksi pada lokasi tersebut, maka instruksi itu merupakan instruksi yang pertama kali dijalankan ketika µP dinyalakan atau ketika diberi sinyal RESET
Flag Register.
Flag register merupakan register 16 bit, namun pada µP 8088 yang digunakan hanya 12 bit, yaitu 9 bit untuk status dan 3 bit untuk kontrol. Diagram blok flag register adalah sebagai berikut :
X | X | X | X | OF | DF | IF | TF | SF | ZF | X | AF | X | PF | X | CF |
15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
Fungsi masing-masing register tersebut adalah:
CF (Carry Flag) | jika berlogic 1 berarti terdapat carry atau borrow pada MSB (Most Significant Bit) yang terjadi selama operasi aritmatika. Jika berlogic 0 berarti tidak terdapat carry atau borrow. |
PF (Parity Flag) | jika berlogic 1 berarti 8 bit terendah menghasilkan paritas genap dan jika manghasilkan paritas ganjil PF akan berlogic 0 |
AF (Auxillary Carry Flag) | jika berlogic 1 berarti terdapat carry pada bit ke 4 pada register AL dan bila tidak akan berlogic 0. Register ini biasanya digunakan pada operasi BCD, seperti perintah AAA. ZF (Zero Flag), jika berlogic 1 maka operasi aritmatika menghasikan sisa 0, jika berlogic 1 maka tidak menghasilkan 0 |
SF (Sign Flag) | jika digunakan bilangan bertanda bit ini akan bernilai 1. Sedangkan bila SF berlogic 0 berarti bilangan diperlakukan sebagai bilangan tidak bertanda. Bilangan bertanda dibagi menjadi bilangan positif (+) dan bilangan negatif (-). Pada bilangan bertanda, bit terakhir (bit ke-16) diperlakukan sebagai tanda (+) atau tanda(-). Jika bit terakhir tersebut bernilai 1 berarti bilangan tersebut negatif dan jika bit terakhir bernilai 0 berarti bilangan tersebut positif |
TF (Trace Flag) | jika berlogic 1 berarti berada pada keadaan single step. Keadaan ini digunakan pada program Debug |
IF (Interrupt Flag) | jika berlogic 1 berarti Maskable Interrupt Request dapat dilakukan. Jika berlogic 0 maka permintaan interupsi tidak dapat dipenuhi oleh CPU |
OF (Over Flow Flag) | jika terjadi Over Flow pada operasi aritmatika, bit ini akan bernilai 1. Dan jika tidak terjadi Over Flow pada operasi aritmatika, bit ini akan bernilai 0 |
DF (Direction Flag) | jika berlogic 1 berarti pada instruksi string nilai register akan diturunkan secara otomatis dan jika berlogic 0 maka akan dinaikkan secara otomatis |
X | Tidak digunakan |
Alamat Relatif dan Alamat Absolut
Didalam suatu segment, alamat dimulai dari 0000H sampai FFFFH (64KB). Alamat ini disebut juga alamat relatif / offset. Sedangkan alamat absolut dari 0000H s/d FFFFH adalah 00000H s/d FFFFFH. Berikut kita lihat cara pengkonversian alamat relatif kealamat absolut. Pengkonversian dapat dilakukan dengan menggeser nilai segment sebanyak 4 bit kekiri dan kemudian dijumlahkan dengan nilai offset. Atau cara yang lebih sederhana adalah dengan mengalikan nilai segment dengan 2 pangkat 4 (10H) kemudian dijumlahkan dengan nilai offset. Cara ini dikembangkan dari besarnya selisih segment yang satu dengan yang berikutnya sebesar 2 pangkat 4 (10H). Lihatlah contoh dibawah ini:
Alamat relatif : | 1357H : 2468H | 1356H : 2478H |
Pengkonversian : | 13570H | 13560H |
| 2468H | 2478H |
| __________+ | __________+ |
Alamat absolut : | 159D8H | 159D8H |
Pada kedua contoh diatas terlihat jelas alamat relatif 1357H : 2468H sebenarnya menunjukkan lokasi yang sama didalam memori (alamat absolutnya) dengan alamat relatif 1356H : 2478H yang disebabkan adanya overlapping.
Generator Clock Untuk Mikroprosesor 8088
Tidak seperti 8085, mikroprosesor 8088 tidak mempunyai pembangkit clock sendiri, ia harus diberi clock dari luar. Miroprosesor 8088 dapat bekerja pada frekuensi clock 4,77 MHz atau 8 MHz (untuk versi turbo). Mikroprosesor 8088 juga membutuhkan sinyal sinkronisasi reset terhadap clock. Untuk memenuhi persyaratan diatas, tersedia dipasaran IC yang telah dirancang sebagai generator clock yaitu IC 8284 (sekedar informasi tambahan, Anda dapat saja menggunakan pembangkit-pembangkit clock yang lain, asalkan sesuai dengan spesifikasi clock untuk 8088). Gambar dibawah ini memperlihatkan pena-pena dari IC 8284.
Arti pena-penanya adalah sebagai berikut:
Vcc | Catu daya + 5V |
GND | Ground |
X1&X2 | Masukan untuk crystal eksternal |
OSC | Keluaran osilator yang mempunyai frekuensi yang sama dengan frekuensi crystal |
CLK | Sinyal clock untuk dikirimkan keµP.Sinyal ini mempunyai frekuensi 2/3 dari frekuensi crystal dengan siklus kerja 33% |
PCLK | Sinyal ini mempunyai frekuensi ½ dari frekuensi yang dikeluarkan pena CLK, dan memiliki siklus kerja 50% |
F/ C | Pena ini merupakan penentu referensi untuk clock. Jika pena ini berlogic 1, maka clock mendapat sumber dari pena EFI, sedangkan jika berlogic 0 mendapat sumber dari pena OSC |
EFI | Masukan frekuensi eksternal yang digunakan untuk sebagai sumber clock |
CSYNC | Sinkronisasi clock yang digunakan untuk sinkronisasi beberapa IC 8284. Jika menggunakan crystal pena ini dibuat 0 |
RES | Digunakan untuk sinyal menghasilkan reset |
RESET | Digunakan menghasilkan sinyal reset untuk µP setelah disinkronisasi dahulu dengan RES dan CLK |
READY | Sinyal ini berfungsi untuk memberitahukan µP bahwa unit I/O dan memori siap untuk mengirim atau menerima data |
AEN1 dan RDY1 | Sinyal ini digunakan untuk membangkitkan keadaan tunggu ke µP |
AEN2 dan RDY2 | Sama dengan pena AEN1 dan RDY1, sinyal ini digunakan untuk membangkitkan keadaan tunggu ke µP |
ASYNC | Sinkronisasi untuk memilih tipe masukan yang diberikan pada IC 8284 |
Untuk membangkitkan sinyal clock pada IC 8284 ini ada 2 cara, cara pertama yaitu dengan memasang crystal pada masukan X1 dan X2 serta dengan memberikan logic 0 pada pena F/C. Cara yang kedua adalah dengan memberikan frekuensi eksternal pada pena EFI dan pena F/C dibuat 1.