20
PERANGKAT LUNAK PEMBELAJARAN
OPERASI ARITMATIKA PADA MIKROPROSESOR INTEL 8088/8086 DENGAN
METODE CBT (Computer Based Training)
Oleh
SITI MUSTAWA
Dosen Prodi Manajemen Informatika, AMIK Labuhanbatu Rantauprapat, Medan; [email protected]
ABSTRAK
Dewasa ini kecerdasan buatan berkembang pesat melaju bersama kecepatan perkembangan teknologi computer yang dari hari ke hari semakin berkembang. Manusia selalu berupaya untuk memudahkan dalam memecahan setiap permasalahan yang di hadapi. Salah satu aplikasi untuk memecahkan setiap masalah adalah perunak lunak pembelajaran mede pengalamatan dan operasi aritmatika pada mikroprosesor intel 8086/8088, prosesor Intel 8088/8086 merupakan mikroprosesor yang menjadi mesin bagi mikrokomputer IBM PC/XT dan paling banyak digunakan pada saat ini.
Prosesor ini sering disebut dengan singkat sebagai “8088” atau “8086”. Walaupun perangkat keras 8088 sedikit berbeda dengan 8086, tetapi keduanya dapat dipandang sama dari sisi pemrograman Intel 8088/8086 adalah prosesor 16 bit, artinya lintasan data dan register-nya berukuran 16 bit. 8086 merupakan mikroprosesor 16-bit dengan bus data 16-bit dan 8088 merupakan mikroprosesor 16-bit dengan bus data 8-bit. Mode pengalamatan dan operasi aritmatika pada bahasa Assembly ini dapat mengamati perubahan isi register yang terjadi dalam pembelajaaran proses instruksinya.
Perangkat Lunak ini dapat digunakan untuk memahami mode pengalamatan register dan pengalamatan segera serta beberapa operasi aritmatika pada mikroprosesor intel 8088/8086. Perangkat Lunak dijadikan sebagai media pendukung dalam proses pembelajaran mikroprosesor dasar.
Keyword: osdata, xs4all, googlesyndication, Comcast.
A. PENDAHULUAN
Prosesor Intel 8088/8086 merupakan mikroprosesor yang menjadi mesin bagi
mikrokomputer IBM PC/XT dan
kompatibelnya. Prosesor ini sering disebut dengan singkat sebagai “8088” atau “8086”. Walaupun perangkat keras 8088 sedikit berbeda dengan 8086, tetapi keduanya dapat dipandang sama dari sisi pemrograman Intel
8088/8086 adalah prosesor 16 bit, artinya
lintasan data dan register-nya berukuran 16 bit. Kebanyakan instruksi dalam program bahasa Assembly membutuhkan operand yaitu data yang akan diolah. Cara menentukan atau memperoleh harga operand ini disebut sebagai
modus pengalamatan (addressing mode). Modus pengalamatan terbagi atas beberapa macam antara lain, pengalamatan register, pengalamatan segera, pengalamatan langsung dan pengalamatan tak langsung. Dalam mempelajari bahasa Assembly, kita harus menghafalkan semua register dan mengerti kegunaannya masing–masing. Register adalah sebagian kecil memori komputer yang dipakai untuk tempat penampungan data dengan ketentuan bahwa data yang terdapat dalam
register dapat diproses dalam berbagai operasi
dengan melihat berapa besar kemampuan menampung register tersebut. Register dapat dibagi dalam lima golongan yaitu general
21
segment register (CS, DS, SS dan ES), pointer register (IP, SP dan BP), index register (SI dan
DI) dan flag register.
Penulis tertarik untuk mempelajari tentang operasi aritmatika pada bahasa
Assembly dan mengamati perubahan isi register
yang terjadi. B. PEMBAHASAN
Percobaan penggunaan komputer untuk proses belajar dimulai di Amerika Serikat pada akhir tahun 1950-an dan awal tahun 1960-an. Kemudian penelitian selanjutnya dilakukan oleh Harvard University bekerja sama dengan
IBM pada tahun 1965. Setelah munculnya
komputer mikro, sistem pengajaran dengan komputer menjadi semakin meluas pada pengembangan perangkat lunak pembelajaran yang dikenal dengan istilah perangkat lunak pembelajaran. Perangkat lunak pembelajaran dengan komputer muncul dari sejumlah disiplin ilmu, terutama ilmu komputer dan psikologi. Dari ilmu komputer dan matematika muncul program-program yang membuat semua perhitungan dan fungsi lebih mudah dan bermanfaat. Sedangkan dari ilmu psikologi muncul pengetahuan mengenai teori belajar, teknik belajar, serta motivasi yang baik.
Tujuan utama dari perangkat lunak pembelajaran adalah :
1. Peningkatan pengawasan. 2. Penggunaan sumber daya. 3. Individualisasi.
4. Ketepatan waktu dan tingkat ketersediaan.
5. Pengurangan waktu latihan. 6. Perbaikan hasil kerja. 7. Alat yang nyaman dipakai. 8. Pengganti cara belajar.
9. Peningkatan kepuasan belajar. 10. Pengurangan waktu pengembangan.
Jenis pemakaian komputer untuk perangkat lunak pembelajaran digolongkan menjadi tiga bagian, yaitu :
1. Pengujian.
Dalam jenis ini, komputer digunakan untuk memberikan penilaian dan analisis tes, membuat soal tes, membuat nilai acak, tes interaksi, dan tes adaptasi. Jenis ini sering disebut dengan Computer
Assisted Testing (CAT).
2. Manajemen.
Jenis pemakaian ini disebut dengan
Computer Managed Instruction (CMI),
dimana komputer digunakan untuk mengatur kemajuan peserta pelatihan dan alat-alat yang dipakai. CMI biasanya
digunakan untuk meningkatkan
pengawasan dan efisiensi dalam sistem pelatihan.
3. Instruksi.
Sering disebut dengan Computer Assisted
Instruction (CAI). Jenis ini menganggap
komputer sebagai media penyimpanan instruksi sama seperti slide, tape, video atau buku-buku. Menurut sudut pandang CAI, masalah utamanya adalah bagaimana menyusun bahan-bahan instruksi yang akan ditampilkan oleh komputer dengan cara yang paling efektif. Ada tiga jenis CAI yaitu :
a. Drill and Practice
Merupakan cara yang paling mudah, terdiri dari tahap-tahap penampilan permasalahan, penerimaan respon pengguna, pemberian hasil analisis, umpan balik, dan pemberian pertanyaan lain. Secara umum jenis ini tidak menampilkan informasi baru tapi memberikan latihan dari konsep yang sudah ada.
b. Tutorial
Jenis ini berisi konsep atau prosedur yang disertai dengan pertanyaan atau latihan pada akhir dari pelatihan. Selama pelatihan, komputer mengajarkan informasi-informasi yang baru kepada siswa seperti layaknya seorang guru
pembimbing. Setelah itu,
pemahaman siswa diukur melalui serangkaian tes dan komputer
melanjutkan pengajaran
berdasarkan hasil pengukuran tadi.
c. Socratic
Berisi komunikasi antara pengguna dan komputer dalam natural language. Jenis ini sebenarnya berasal dari penelitian dalam
22 bidang intelijensia semu (artificial
intelligence). Socratic mampu melakukan
interaksi dalam natural language dan bisa memahami apa yang ditanyakan pengguna. Mode Pengalamatan Data
Instruksi pengalamatan data yang sering dipakai adalah instruksi MOV. Instruksi MOV merupakan instruksi yang umum dan fleksibel. Instruksi ini akan meng-copy data dari sumber ke tujuan sehingga sumber tidak pernah berubah tetapi tujuan hampir selalu berubah. Instruksi ini tidak mempengaruhi register flag Sumber dan tujuan sering disebut sebagai operand.
Mode pengalamatan data yang digunakan dengan instruksi ini mencakup :
1. Pengalamatan register (register
addressing).
Pengalamatan ini digunakan untuk memindahkan salinan dari byte atau word dari register atau lokasi memori sumber ke dalam register atau lokasi memori tujuan. Contoh : MOV CX, DX akan menyalin isi dari register DX ke dalam
register CX.
2. Pengalamatan segera (immediate
addressing).
Pengalamatan ini digunakan untuk memindahkan data yang berukuran byte atau word langsung ke dalam register tujuan. Contoh : instruksi MOV AL, 22H menyalin bilangan 22H ke dalam register AL.
3. Pengalamatan langsung (direct
addressing).
Pengalamatan ini memindahkan byte atau
word antara lokasi memori dan register.
Kumpulan instruksi tidak menyediakan pemindahan data antara memori ke memori kecuali pada instruksi MOVS. Contoh : instruksi MOV CX, LIST menyalin isi dari lokasi memori LIST ke dalam register CX.
4. Pengalamatan register tidak langsung (indirect addressing).
Pengalamatan ini memindahkan byte atau
word antara register dan lokasi memori
yang alamatnya ditunjuk oleh suatu
register indeks atau register basis. Register indeks dan basis adalah BP, BX,
DI, dan SI. Contoh : MOV AX, [BX] menyalin data 16-bit dari alamat offset segmen data yang alamatnya ditunjuk oleh register BX ke dalam register AX. 5. Pengalamatan base-plus-index.
Pengalamatan ini memindahkan data yang berukuran byte atau word antara
register dan lokasi memori yang ditunjuk
leh register basis (BP atau BX) ditambah dengan isi register indeks (DI atau SI). Contoh : instruksi MOV [BX+DI], CL menyalin isi register CL yang berukuran
byte ke dalam lokasi memori segmen data
yang ditunjuk oleh BX ditambah DI. 6. Pengalamatan register relatif (relative
register addressing).
Pengalamatan ini memindahkan data yang berukuran byte atau word antara
register dan lokasi memori yang ditunjuk
oleh suatu register indeks atau basis ditambah displacement. Contoh : MOV AX, [BX+4]. Instruksi ini mengisi AX dengan data yang alamat segmen datanya dibentuk oleh BX ditambah 4.
7. Pengalamatan base relatif-plus-index Pengalamatan ini memindahkan data yang berukuran byte atau word antara
register dan lokasi memori yang ditunjuk
oleh suatu register basis dan register indeks ditambah displacement. Contoh : MOV AX, ARRAY[BX+DI]. Instruksi ini menggunakan sebuah alamat yang dibentuk oleh penambahan ARRAY, BX dan DI.
Karena mode pengalamatan yang diambil hanya berupa pengalamatan register dan segera maka pembahasan kali ini hanya dibatasi pada pengalamatan register dan segera.
1. Pengalamatan Register (Register Addressing)
Pengalamatan register merupakan bentuk pengalamatan data yang paling dikenal dan lebih mudah untuk dipakai. Register 8 bit yang dipakai yaitu : AH, AL, BH, BL, CH, CL, DH, dan DL. Sedangkan register 16 bit yang dipakai yaitu : AX, BX, CX, DX, SP, BP, SI, dan DI. Pengalamatan antara register 8 bit dan 16 bit
23 tidak diijinkan dan akan mengeluarkan pesan kesalahan pada saat dilakukan perakitan.
Beberapa contoh instruksi pengalamatan register :
Tabel. Contoh instruksi pengalamatan register
Bahasa Assembly Ukuran Operasi
MOV AL, BL 8 bit Menyalin isi register BL ke register AL MOV CH, CL 8 bit Menyalin isi register CL ke register CH MOV AX, CX 16 bit Menyalin isi register CX ke register AX
MOV SP, BP 16 bit Menyalin isi register BP ke register SP MOV DS, AX 16 bit Menyalin isi register AX ke register DS
MOV SI, DI 16 bit Menyalin isi register DI ke register SI MOV BX, ES 16 bit Menyalin isi register ES ke register BX
MOV ES, DS – Tidak diijinkan (segmen ke segmen)
MOV BL, DX – Tidak diijinkan (ukuran berbeda)
MOV CS, AX – Tidak diijinkan (register segmen tidak
boleh merupakan register tujuan)
Sumber: (Barry B. Brey, Mikroprosesor Intel 8086/8088/80186/80188/80286/ 80386/80486 : Arsitektur Pemrograman Antarmuka, Edisi 5, Jilid 2, Penerbit Erlangga, 2003)
2. Pengalamatan Segera (Immediate Addressing) Mode pengalamatan data lainnya adalah pengalamatan segera. Istilah segera menyatakan bahwa data segera mengikuti kode operasi heksadesimal dalam memori. Data segera merupakan data konstan, sedangkan data yang dipindahkan dari register adalah data berubah. Pengalamatan segera bekerja berdasarkan data yang berukuran byte atau
word.
Assembler simbolis memperlihatkan
data segera dalam banyak cara. Huruf H ditambahkan kepada data heksadesimal. Jika data heksadesimal mulai dengan suatu huruf,
assembler memerlukan data yang dimulai
dengan 0. Sebagai contoh, untuk merepresentasikan heksadesimal F2, digunakan 0F2H dalam bahasa rakitan. Beberapa contoh instruksi pengalamatan segera:
Tabel. Contoh instruksi pengalamatan segera
Bahasa Assembly Ukuran Operasi
MOV BL, 44 8 bit Menyalin 44 desimal (2CH) ke dalam
BL
MOV AX, 44H 16 bit Menyalin 0044H ke dalam AX
MOV SI, 0 16 bit Menyalin 0000H ke dalam SI
MOV CH, 100 8 bit Menyalin 100 desimal (64H) ke dalam
CH
MOV AL, ‘A’ 8 bit Menyalin ASCII A ke dalam AL
MOV AX, ‘AB’ 16 bit Menyalin ASCII BA ke dalam AX. Ini
bukan kesalahan. Karakter ASCII disimpan sebagai BA, sehingga perlu dilatih ketelitian saat memilih pasangan karakter ASCII ukuran word
24
Sumber: (Barry B. Brey, Mikroprosesor Intel 8086/8088/80186/80188/80286/ 80386/80486, 2003)
Operasi Aritmatika
Operasi aritmatika dalam bahasa Assembly terdapat banyak variasinya, namun karena instruksi aritmatika yang diambil hanya berupa instruksi penjumlahan, pengurangan, perkalian, pembagian, Increment (INC) dan Decrement (DEC) maka pembahasan kali ini hanya dibatasi pada beberapa instruksi sebagai berikut:
1. Penjumlahan
Perintah penjumlahan tampil dalam berbagai format penulisan dalam beberapa jenis mikroprosesor. Instruksi penjumlahan dapat berupa ADD, ADC dan INC. ADD merupakan instruksi penjumlahan dimana carry tidak dimasukkan dalam perhitungan. Sedangkan ADC merupakan instruksi penjumlahan yang memasukkan carry dalam perhitungan. Inkremen (INC) adalah format khusus dari penjumlahan yaitu menambahkan suatu bilangan dengan satu.
Instruksi penjumlahan terdiri dari 3 macam yaitu :
1. ADD, yaitu instruksi penjumlahan yang tidak menyertakan nilai carry dalam perhitungan. Format : SUB Source,
Destination. Contoh : ADD AL, BL
akan menghasilkan AL = AL + BL. 2. ADC, yaitu instruksi penjumlahan yang
menyertakan nilai carry dalam perhitungan. Format : SBB Source,
Destination. Contoh : ADC AL, BL
akan menghasilkan AL = AL + BL + Carry.
3. INC, yaitu instruksi penjumlahan yang menambahkan dengan 1. Format : INC
Destination. Contoh : INC AL akan
menghasilkan AL = AL + 1.
Berdasarkan mode pengalamatan yang dipakai, maka instruksi penjumlahan dapat dibagi menjadi :
1. Penjumlahan register (register addition). Penjumlahan ini digunakan untuk menjumlahkan isi dari beberapa
register. Contoh :
ADD AL, BL akan menghasilkan AL = AL + BL.
ADC AL, BL akan menghasilkan AL = AL + BL + Carry.
2. Penjumlahan segera (immediate
addition).
Penjumlahan ini digunakan untuk menjumlahkan isi register dengan nilai konstan.
Contoh :
ADD AL, 05H akan menghasilkan AL = AL + 05H
ADC AL, 05H akan menghasilkan AL = AL + 05H + Carry
2. Pengurangan
Ada banyak bentuk pengurangan yang ditampilkan dalam kumpulan instruksi. Format-format ini menggunakan mode pengalamatan data 8 bit dan 16 bit. Format khusus dari pengurangan DEC yaitu dekremen, digunakan untuk mengurangkan dengan 1. Seperti halnya instruksi penjumlahan, pengurangan juga memiliki nilai borrow, sehingga instruksi pengurangan terdiri dari 3 macam yaitu:
1. SUB, yaitu instruksi pengurangan yang tidak menyertakan nilai borrow dalam perhitungan. Format : SUB Source,
Destination. Contoh : SUB AL, BL
akan menghasilkan AL = AL – BL. 2. SBB, yaitu instruksi pengurangan yang
menyertakan nilai borrow dalam perhitungan. Format : SBB Source,
Destination. Contoh : SBB AL, BL
akan menghasilkan AL = AL – BL – Borrow.
3. DEC, yaitu instruksi pengurangan yang mengurangkan dengan 1. Format : DEC
Destination. Contoh : DEC AL akan
menghasilkan AL = AL – 1.
Berdasarkan mode pengalamatan yang dipakai, maka instruksi pengurangan dapat dibagi menjadi :
1. Pengurangan register (register
substraction).
Pengurangan ini digunakan untuk mengurangkan isi dari beberapa
25 SUB AL, BL akan menghasilkan AL = AL – BL.
SBB AL, BL akan menghasilkan AL = AL – BL – Borrow.
2. Pengurangan segera (immediate
substraction).
3. Pengurangan ini digunakan untuk mengurangkan isi register dengan nilai konstan.
Contoh :
SUB AL, 05H akan menghasilkan AL = AL – 05H
SBB AL, 05H akan menghasilkan AL = AL – 05H – Borrow
3. Perkalian
Perkalian dilakukan dalam format byte dan word dan dapat juga bilangan bulat bertanda (IMUL) atau bilangan bulat tak bertanda (MUL). Beberapa bit flag seperti O dan C berubah saat proses perkalian dijalankan dan memberikan hasil yang dapat diramalkan sebelumnya. Flag yang lain juga berubah, tetapi hasilnya tidak bisa diramalkan.
Namun pembahasan kali ini hanya dibatasi pada bilangan bulat tak bertanda yaitu operasi MUL yang memiliki format sebagai berikut : MUL Source. Contoh : MUL 05H akan menghasilkan AX = AX * 05H.
4. Pembagian
Seperti halnya perkalian, pembagian terjadi pada bilangan 8 bit atau 16 bit. Bilangan ini adalah bilangan bulat bertanda (IDIV) atau tak bertanda (DIV). Hasil pembagian selalu dua kali lebarnya dari bilangan yang dibagi. Artinya pembagian 8 bit membagi bilangan 16 bit dengan bilangan 8 bit.
Namun pembahasan kali ini hanya dibatasi pada bilangan bulat tak bertanda yaitu operasi DIV yang memiliki format sebagai berikut : DIV Source. Contoh : DIV 05H akan menghasilkan AX = AX / 05H.
Bilangan Bertanda dan Bilangan Tidak Bertanda
Yang dimaksud dengan bilangan bertanda adalah bilangan yang mengandung arti plus (+), ataupun min (–), sedangkan bilangan tidak bertanda mengandung arti semua positif.
Kapasitas Bilangan
Kapasitas bilangan bertanda dan tidak bertanda ditentukan oleh register Sign Flag dengan komposisi sebagai berikut :
1. Bila Sign Flag menunjukkan 0, maka komposisi bit untuk angka paling besar adalah : 1111 1111 1111 1111 atau desimalnya 65535. Jadi dapat disimpulkan bahwa bila bilangan itu bilangan tak bertanda, maka bilangan itu akan berkomposisi bit antara 0000 0000 0000 0000 hingga 1111 1111 1111 1111 atau 0000 hexa hingga FFFF hexa. 2. Bila Sign Flag menunjukkan 1 maka
bilangan tersebut merupakan bilangan bertanda. Bilangan bertanda mempunyai cara perhitungan yang lain dengan bilangan bertanda. Untuk bilangan bertanda, bit terakhir atau bit ke–16 (bit paling kiri) tidak dimasukkan dalam hitungan melainkan merupakan petunjuk apakah bilangan itu positif atau negatif. Oleh karena kemampuan tersebut, maka kapasitas bilangan bertanda menjadi berkurang sebagian, yaitu untuk bilangan positif dari 0 sampai 32767 dan untuk bilangan negatif–1 sampai dengan– 32767.
Penulisan Bit Bilangan Negatif
Pada bilangan bertanda, cara menulis bit negatif tidak sama dengan bit positif. Cara menulis bit bilangan negatif untuk -1 adalah 1111 1111 1111 1111 dan -2 adalah 1111 1111 1111 1110. Jadi dapat disimpulkan bahwa cara penulisan bilangan negatif dimulai dengan bilangan terbesar dalam komposisi 16 bit yaitu FFFF hexa dan diakhiri bilangan 1000 0000 0000 0000 (8000 hexa) sebagai bilangan negatif terbesar – 32768.
Mencari Bilangan Negatif
Untuk mempermudah pencarian bilangan negatif dari heksadesimal dapat dilakukan langkah–langkah sebagai berikut :
1. Ubah bilangan desimal negatif ke bilangan biner positif.
2. Ubah setiap angka 0 menjadi 1 dan angka 1 menjadi 0.
26 3. Tambahan bilangan 1 pada bilangan
yang telah diubah dan konversi ke heksadesimal akan didapat hasil yang diinginkan.
Sebagai contoh :
Nilai heksadesimal dari – 20 adalah sebagai berikut :
Nilai 20 diubah menjadi biner 0000 0000 0001 0100
Balikkan angka biner diatas menjadi 1111 1111 1110 1011
Tambahkan dengan 1 dan didapat 1111 1111 1110 1100 atau FFEC heksa.
Perangkat Keras Mikroprosesor 8088/8086 Pin-Out CPU 8086 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 GND AD14 AD13 AD12 AD11 AD10 AD9 AD8 AD7 AD6 AD5 AD4 AD3 AD2 AD1 AD0 GND CLK INTR NMI VCC AD15 A16/S3 A17/S4 A18/S5 A19/S6 BHE/S7 MN/MX RD RQ/GT0 RQ/GT1 LOCK S2 S1 S0 QS0 QS1 TEST READY RESET MODE MAKS. MODE MIN.
{
}
(HOLD) (HLDA) (WR) (M/IO) (DT/R) (DEN) (ALE) (INTA) (a) CPU 8088 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 GND AD14 AD13 AD12 AD11 AD10 AD9 AD8 AD7 AD6 AD5 AD4 AD3 AD2 AD1 AD0 GND CLK INTR NMI VCC AD15 A16/S3 A17/S4 A18/S5 A19/S6 SSO MN/MX RD HOLD HLDA WR (QS0) (QS1) TEST READY RESET MODE MIN. MODE MAKS.{
}
(HOLD) (HLDA) (LOCK) ALE (b) (HIGH) (S2) IO/M DT/R (S1) DEN (S0) INTA 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40Gambar (a) Pin-out mikroprosesor 8086; (b) pin-out mikroprosesor 8088
Sumber: (Barry B. Brey, Mikroprosesor Intel 8086/8088/80186/80188/80286/ 80386/80486 : Arsitektur Pemrograman Antarmuka, Edisi 5, Jilid 2, Penerbit Erlangga, 2003)
Gambar di atas mengilustrasikan pin-out mikroprosesor 8086 dan 8088. Sebagaimana terlihat jika dibandingkan dengan teliti, secara virtual sebenarnya tidak ada perbedaan antara kedua mikroprosesor ini, keduanya terkemas dalam dual in-line package (DIP) 40-pin.
8086 merupakan mikroprosesor 16-bit dengan bus data 16-bit dan 8088 merupakan mikroprosesor 16-bit dengan bus data 8-bit. Sebagaimana ditunjukkan oleh pin-out, 8086 memiliki koneksi pin AD0-AD15, dan 8088 memiliki koneksi pin AD0-AD7. Lebar bus data dengan demikian merupakan satu-satunya
27 perbedaan utama antara kedua mikroprosesor ini.
Tetapi, ada satu perbedaan kecil pada salah satu sinyal kontrol. 8086 mempunyai pin M/IO, dan 8088 mempunayi pin M/IO. Perbedaan perangkat keras lainnya terdapat pada pin 34 dari kedua chip: pada 8088, terdapat pin SSO, sementara pada 8086, pin tersebut merupakan BHE/S7.
Fungsi Pin
Pin-pin yang terdapat dalam mikroprosesor 8088/8086 :
a. AD7-AD0 : Jalur bus alamat/data 8088 terdiri dari bus data alamat yang dimultipleks pada 8088 dan berisi delapan bit paling kanan dari alamat memori atau nomor port I/O jika ALE aktif (logika 1) atau data ketika ALE aktif (logika 0). Pin-pin ini berada pada status impedansi tinggi selama hold
acknowledge.
b. A15-A8 : Bus alamat 8088 menyediakan bit-bit alamat memori paruh atas yang ada selama siklus bus. Hubungan alamat ini menuju ke status
impedansi tingginya selama
acknowledge hold.
c. AD15-AD8 : Jalur bus alamat/data 8086 terdiri dari bus alamat/data bagian atau pada 8086. Jalur-jalur ini berisi bit-bit alamat A15-A8 jika ALE pada logika 1, dan hubungan bus data D15-D8. Pin-pin ini memasuki status impedansi tinggi jika terjadi hold acknowledge.
d. A19/S6-A16/S3: Bit-bit bus alamat/status di-multipleks untuk memberikan sinyal alamat A19-A16 dan juga bit-bit status S6-S3. Pin-pin ini juga mempertahankan status impedansi tinggi selama hold acknowledge. Bit status S6 selalu tetap merupakan logika 0, bit S5 menunjukkan kondisi bit-bit flag IF, dan S4 dan S3 menunjukkan segmen mana yang diakses selama siklus bus pada saat itu.
e. RD : Jika sinyal baca berupa logika 0, bus data bisa menerima data dari memori atau alat I/O yang dihubungkan ke sistem. Pin ini naik ke status
impedansi tingginya selama
acknowledge hold.
f. READY : Input ini dikendalikan untuk menyisipkan status tunggu ke timing mikroprosesor. Jika pin READY diletakkan pada level logika 0, mikroprosesor memasuki status tunggu dan tetap idle (tidak bekerja). Jika pin READY diletakkan pada level logika 1, tidak memiliki efek pada operasi mikroprosesor.
g. INTR : Interrupt request digunakan untuk meminta interrupt perangkat keras. Jika INTR dijaga tetap high ketika IF = 1, 8088/8086 memasuki siklus interrupt acknowledge (INTA menjadi aktif) setelah instruksi pada saat itu telah dijalankan sepenuhnya. h. TEST : Pin test merupakan input yang
dites oleh instruksi WAIT. Jika TEST berupa logika 0, instruksi WAIT berfungsi sebagai NOP. Jika TEST berupa logika 1, instruksi WAIT menunggu sampai TEST menjadi logika 0. Pin ini biasanya dihubungkan dengan koprosesor numerik 8087. i. NMI : Input non-maskable interrupt
sama dengan INTR kecuali interrupt NMI tidak memeriksa apakah bit flag IF merupakan logika 1. Jika NMI diaktifkan, input interrupt ini menggunakan vektor interrupt 2.
j. RESET : Input reset menyebabkan mikroprosesor mereset dirinya sendiri jika pin ini tetap high selama minimum empat periode clock. Jika 8086 atua 8088 direset, akan mulai mengeksekusi instruksi pada lokasi memori FFFF0H dan mendisabel interrupt berikutnya dengan meng-clearkan bit flag IF. k. CLK : Pin clock menyediakan sinyal
waktu (timing) dasar ke mikroprosesor. Sinyal clock harus memiliki siklus kerja 33 persen untuk memberikan timing internal yang sesuai untuk 8088/8086. l. Vcc : Input catu daya ini menyediakan
sinyal +5,0 V, ± 10 % ke mikroprosesor. m. GND : Hubungan ground merupakan
28
n. MN/MX : Pin mode
minimum/maksimum memilih operasi mode minimum atau maksimum untuk mikroprosesor.
o. BHE/S7 : Pin bus high enable digunakan pada 8086 untuk enable bit bus data yang paling signifikan selama operasi baca atau tulis.
p. IO/M atau M/IO : Pin IO/M (8088) atau pin M/IO (8086) memilih memori atau I/O.
q. WR : Jalur write merupakan strobe yang menunjukkan bahwa 8088/8086 sedang mengeluarkan data ke memori atau alat I/O.
r. INTA : Sinyal intterupt acknowledge merupakan tanggapan terhadap pin
input INTR.
s. ALE : Address latch enable
menunjukkan bahwa bus alamat/data 8088/8086 berisi informasi alamat. t. DT/R : Sinyal data transmit/receive
menunjukkan bahwa bus data mikroprosesor sedang mengirim data atau menerima data.
u. DEN : Data bus enable mengaktifkan buffer bus data eksternal.
v. HOLD : Input hold meminta direct
memory access (DMA).
w. HLDA : Hold acknowledge
menunjukkan bahwa 8088/8086 memasuki status hold.
x. SS0 : Jalur status SS0 ekivalen dengan pin S0 pada operasi mikroprosesor mode maksimum.
y. S2, S1 dan S0 : Bit-bit status ini menunjukkan fungsi siklus bus saat itu. z. RO/GT1 dan RO/GT0 : Pin-pin
request/grant ini meminta direct memory access (DMA) selama operasi
mode maksimum.
aa. LOCK : Output lock digunakan untuk mengunci periferal dari sistem.
QS1 dan QS0 : Bit queue status menunjukkan status antrian instruksi internal.
Register dapat dibagi dalam lima
golongan, yaitu :
1. General Purpose Register
Register yang termasuk dalam kelompok ini adalah register AX, BX, CX, DX, yang masing–masing terdiri atas 16 bit.
Register–register ini mempunyai satu ciri khas,
yaitu dapat dipisah menjadi 2 bagian dimana masing–masing bagian terdiri atas 8 bit, seperti
register AX dapat dipecah menjadi register
AH, dan AL. Akhir H menunjukkan High dan akhiran L menunjukkan Low.
Secara umum register-register dalam kelompok ini dapat digunakan untuk berbagai keperluan, walaupun demikian ada pula penggunaan khusus dari masing-masing
register ini, yaitu :
1. Register AX, secara khusus digunakan
pada operasi aritmatika terutama dalam operasi pembagian dan pengurangan. 2. Register BX, biasanya digunakan
untuk menunjukkan suatu alamat offset dari suatu segmen.
3. Register CX, digunakan secara khusus
pada operasi looping dimana register ini menentukan berapa banyaknya
looping yang akan terjadi.
4. Register DX, digunakan untuk
menampung sisa hasil pembagian 16 bit.
2. Segment Register
Register yang termasuk dalam kelompok ini terdiri atas register CS, DS, ES, dan SS yang masing–masing merupakan register 16 bit. Register–register dalam kelompok ini secara umum digunakan untuk menunjukkan alamat dari suatu segmen memori.
Register CS (Code Segment) digunakan
untuk menunjukkan tempat dari segmen yang sedang aktif, sedangkan register SS (Stack Segment) menunjukkan letak dari segmen yang digunakan oleh stack.
Register DS (Data Segment) biasanya
digunakan untuk menunjukkan tempat segmen dimana data–data pada program disimpan. Umumnya isi register ini tidak perlu diubah kecuali pada program residen (program) yang menetap di memori walaupun eksekusi
program telah berakhir. Register ES (Extra Segment) sesuai dengan namanya adalah suatu
29
register tambahan yang tidak mempunyai tugas
khusus. Register ES biasanya digunakan untuk menunjukkan suatu alamat di memori, misalkan alamat memori video.
3. Pointer dan Index Register
Register IP (Instruction Pointer)
berpasangan dengan CS (CS:IP) menunjukkan alamat memori tempat dari instruksi selanjutnya yang akan dieksekusi. Register IP juga merupakan register 16 bit.
Register SP (Stack Pointer) yang
berpasangan dengan register SS (SS:SP) digunakan untuk menunjukkan alamat dari
stack, sedangkan register BP (Base Pointer)
yang berpasangan dengan register SS (SS:BP) mencatat suatu alamat di memori tempat data berada.
Register SI (Source Index) dan register
DI (Destination Index) biasanya digunakan pada operasi untai dengan mengakses secara langsung pada alamat memori yang ditunjuk kedua register ini.
4. Flag Register
Flags register merupakan suatu komposisi register 16 bit dimana komposisi bitnya dapat mengecek apakah sesuatu proses itu berfungsi atau tidak. Sebagai contoh, Sign
Flag menunjukkan apakah suatu bilangan
bertanda atau tidak.
Adapun flag yang terdapat pada mikroprosesor 8088 ke atas adalah sebagai berikut :
1. OF (Overflow Flag), jika terjadi overflow pada operasi aritmatika bit ini akan bernilai 1.
2. DF (Direction Flag), digunakan pada operasi untai untuk menunjukkan arah proses.
3. IF (Interrupt enable Flag), mikroprosesor akan mengabaikan interupsi yang terjadi jika bit ini 0.
4. TF (Trap Flag), digunakan untuk proses pelacakan langkah demi langkah.
5. SF (Sign Flag), jika digunakan bilangan bertanda bit ini akan bernilai 1.
6. ZF (Zero Flag), jika hasil operasi menghasilkan nol, maka bit ini akan bernilai 1.
7. AF (Auxiliary Flag), digunakan oleh operasi BCD, seperti pada perintah AAA. 8. PF (Parity Flag), digunakan untuk menunjukkan paritas bilangan, bit ini akan bernilai 1 bila bilangan yang dihasilkan merupakan bilangan genap. 9. CF (Carry Flag), jika terjadi peminjaman
(borrow) pada operasi pengurangan atau bawaan (carry) pada penjumlahan, maka bit ini akan bernilai 1.
Tabel 2.5. Susunan Flag Register 8088
Bit 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
Flag OF DF IF TF SF ZF AF PF CF
Sumber: (Barry B. Brey, , Mikroprosesor Intel 8086/8088/80186/80188/80286/ 80386/80486, 2003)
C. Kesimpulan
Setelah menyelesaikan
perancangan perangkat lunak pembelajaran penerapan operasi aritmatika pada
mikroprosesor intel 8088/8086 ini, penulis menarik kesimpulan sebagai berikut : 1. Perangkat Lunak ini dapat digunakan
untuk memahami modus pengalamatan
register dan segera serta beberapa operasi
aritmatika pada mikroprosesor intel 8088/8086.
2. Perangkat Lunak dijadikan sebagai media pendukung dalam proses pembelajaran mikroprosesor dasar dan system operasi. D. Saran
Penulis ingin memberikan beberapa saran yang mungkin dapat membantu dalam pengembangan perancangan perangkat lunak pembelajaran penerapan
34 operasi aritmatika pada mikroprosesor intel
8088/8086 yaitu :
1. Modus pengalamatan yang dibahas dapat diperbanyak seperti menambahkan mode pengalamatan langsung, tidak langsung,
base-plus-index, register relatif dan
indeks berskala.
2. Operasi yang dibahas dalam aplikasi dapat diperbanyak seperti menambahkan operasi aritmatika lainnya, operasi perbandingan, dan sebagainya.
3. Mikroprosesor yang digunakan dapat lebih dari 16-bit.
4. Bagi yang ingin menggunakan system pembelajaran ini dapat dikembangkan bahasa Assembly, sistem operasi, dan pemprosesannya.
DAFTAR PUSTAKA
Albert Paul Malvino, Elektronika Komputer
Digital : Pengantar Mikrokomputer,
Edisi Kedua, Penerbit Erlangga, 1994. Ario Suryokusumo, Microsoft Visual Basic
6.0, PT. Elex Media Komputindo, 2001.
Barry B. Brey, Mikroprosesor Intel 8086/8088/80186/80188/80286/
80386/80486 : Arsitektur
Pemrograman Antarmuka, Edisi 5,
Jilid 2, Penerbit Erlangga, 2003.
Hadi, Rahadian, Pemrograman Microsoft
Visual Basic dengan menggunakan Windows API, PT. Elex Media
Komputindo, Jakarta, 2001.
Muchlas, Rangkaian Digital, Penerbit Gava Media, Yokyakarta, Januari 2005. Soepono Soeparlan, Mikroprosesor 8088/8086,
80186, 80286, 80386, dan 80486
:Arsitektur, Pemrograman, dan Interfacing, Penerbit Gunadarma, Jakarta 1995.