I. MIKROPROSESOR 8088
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).
II. 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 |
Materi mikropeosesor yang banyak dipelajari adalah mikroproisesor 8088 karena instruksi bahasa msinnya paling lengkap
yupz... benar sekali......