Volume 8 No 1, April 2017
JURNAL IT
VISUALISASI BANGUNAN PADA MASJID
Perangkat Lunak Pembelajaran
Modus Pengalamatan Dan Operasi Aritmatika
Pada Mikroprosesor
Intel 8088/8086
Muhammad Akbar
Sistem Komputer STMIK Handayani akbar.stmikhdy@gmail.com
Abstrak
Penelitian ini dibahas rancang dan pembuatan perangkat lunak pembelajaran modus pengalamatan dan operasi aritmatika pada mikroprosesor Intel 8088/8086. Sistem ini dibuat menggunakan bahasa pemprograman Microsofot Visual Basic dengan beberapa komponen standar. Instruksi - instruksi mikroprosesor INTEL 8088/8086 yang didukung di dalam perangkat lunak ini adalah modus pengalamatan (MOV), penjumlahan (ADD), penjumlahan dengan satu (INC), penjumlahan
dengan carry (ADC), pengurangan (SUB), pengurangan dengan satu (DEC), pengurangan dengan
pinjaman (SBB), perkalian (MUL) dan pembagian (DIV). Sedangkan register – register yang didukung adalah general purpose register, yaitu AX, BX, CX, DX, dan register flag, yaitu Z (Zero), C (Carry), A (Half-Carry), S (Sign), P (Parity) dan O (Overflow). Hasil dari penelitian ini User dapat mempelajarai dengan seksama modus pengalamatan dan operasi aritmatika pada mikroprosesor Intel 8088/8086 dengan cara meng-input instruksi – instruksi op-code yang didukung dan perangkat lunak akan mengeksekusi instruksi baris per baris dan menunjukkan perubahan isi register akibat dari instruksi yang dieksekusi
Kata kunci: Perangkat lunak Pembelajaran, Mikroprosesor Intel 8088/8086, register, instruksi.
1. Pendahuluan
Prosesor Intel 8088/8086 merupakan mikroprosesor yang menjadi mesin bagi
mikrokomputer-mikrokomputer IBM PC/XT dan kompatibelnya. Prosesor ini sering disebut dengan singkat sebagai “8088” atau “8086” saja. 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
Volume 8 No 1, April 2017
JURNAL IT
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 purpose register (AX, BX, CX dan DX), 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 modus pengalamatan dan operasi aritmatika pada bahasa Assembly dan mengamati perubahan isi register yang terjadi. Oleh karena itu, penulis
membuat penelitian dengan judul “Perangkat Lunak Pembelajaran Modus Pengalamatan dan
Operasi Aritmatika pada Mikroprosesor Intel 8088/8086”.
2. Tinjauan Pustaka
2.1. Perangkat Keras Mikroprosesor 8088/8086
CPU
Gambar. 1 (a) Pin-out mikroprosesor 8086; (b) pin-out mikroprosesor 8088
Gambar 1 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 perbedaan utama antara kedua mikroprosesor ini.
Volume 8 No 1, April 2017
JURNAL IT
2.2.Bahasa Assembler 8088/8086
Bahasa Assembler 8088 merupakan salah satu bagian dari bahasa komputer tingkat rendah,
dimana nilai 8088 ditujukan kepada mikroprosesor dengan arsitektur dasar 8088 buat Intel Corp.
Penulis memilih bahasa assembler 8086 sebagai bahasa tujuan dibanding bahasa assembler seperti 6800, Zilog, dikarenakan perangkat komputer 8086 merupakan perangkat keras yang paling banyak dipakai dewasa ini.
2.3.Perangkat Lunak Pembelajaran
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.
Beberapa istilah yang digunakan untuk menyatakan perangkat lunak pembelajaran dengan komputer adalah Computer Assisted Instruction (CAI), Computer Based Instruction (CBI), Computer Based Education (CBE), Computer Assisted Learning (CAL), atau Computer Based Training (CBT).
3. Metodologi Penelitian
Instruksi - instruksi mikroprosesor INTEL 8088/8086 yang didukung di dalam perangkat lunak ini adalah modus pengalamatan (MOV), penjumlahan (ADD), penjumlahan dengan satu
(INC), penjumlahan dengan carry (ADC), pengurangan (SUB), pengurangan dengan satu (DEC),
pengurangan dengan pinjaman (SBB), perkalian (MUL) dan pembagian (DIV). Sedangkan register – register yang didukung adalah general purpose register, yaitu AX, BX, CX, DX, dan register flag, yaitu Z (Zero), C (Carry), A (Half-Carry), S (Sign), P (Parity) dan O (Overflow).
Penulis merancang penerapan modus pengalamatan dan instruksi aritmatika pada sebuah perangkat lunak. User dapat meng-input instruksi – instruksi op-code yang didukung dan perangkat lunak akan mengeksekusi instruksi baris per baris dan menunjukkan perubahan isi register akibat dari instruksi yang dieksekusi.
Perangkat lunak pembelajaran ini dirancang dengan menggunakan bahasa pemrograman Microsoft Visual Basic 6.0 dengan beberapa komponen standar seperti TextBox, Microsoft Flex Grid, PictureBox, Image, Shape, Label, dan sebagainya.
Perangkat lunak pembelajaran ini memiliki beberapa form, seperti : 1. FormSplash Screen.
Volume 8 No 1, April 2017
JURNAL IT
2. FormInput Instruksi.
Gambar 3. Form Input Instruksi
3. FormTambah Instruksi.
Gambar 4. Form Tambah Instruksi
4. Form Proses Instruksi.
Volume 8 No 1, April 2017
JURNAL IT
4. Hasil dan Analisis Algoritma Program
Hasil kasus yang peneliti lakukan adalah suatu ekspresi aritmatika dalam bilangan heksa desimal (10FF * 2) + (((AB - 25) - (C / 3)) * F), dapat ditulis ke dalam bentuk op-code sebagai berikut (hasil operasi disimpan ke register AX) :
- MOV AX, AB
- MOV BX, 25
- SUB AX, BX
- MOV BX, AX
- MOV AX, C
- MOV CX, 3
- DIV CX
- SUB BX, AX
- MOV AX, F
- MUL BX
- MOV BX, AX
- MOV AX, 10FF
- MOV CX, 2
- MUL CX
- ADD AX, BX
Input instruksi pada perangkat lunak adalah barisan op-code di atas, maka output program adalah sebagai berikut :
Gambar 6. Tampilan Output
Output hasil eksekusi adalah sebagai berikut : =============================== 1. MOV AX, AB
===============================
Volume 8 No 1, April 2017
JURNAL IT
=============================== 2. MOV BX, 25
===============================
Instruksi MOV akan menyalin bilangan 25H ke register BX. Isi register BX sekarang = 25H = 00100101.
=============================== 3. SUB AX, BX
===============================
Instruksi SUB mengurangkan isi dari register AX dan BX. Hasil pengurangan dikembalikan ke register AX.
Isi dari register AX dikurang dengan isi register BX = 0000000010101011 - 0000000000100101 = 0000000010000110
Isi dari register AX berubah menjadi 0000000010000110 Flag Z = 0 -> Hasil pengurangan tidak nol.
Flag C = 0 -> bit carry dari operasi. Flag A = 0 -> bit half carry dari operasi. Flag S = 0 -> Hasil pengurangan positif. Flag P = 0 -> Jumlah Bit bernilai '1' = 3 (ganjil). Flag O = 0 -> Hasil operasi tidak overflow.
=============================== 4. MOV BX, AX
===============================
Instruksi MOV memindahkan data dari register AX ke BX.
Isi register BX sekarang = isi dari register AX = 0000000010000110 = 0086H.
=============================== 5. MOV AX, C
===============================
Instruksi MOV akan menyalin bilangan CH ke register AX. Isi register AX sekarang = CH = 1100.
=============================== 6. MOV CX, 3
===============================
Instruksi MOV akan menyalin bilangan 3H ke register CX. Isi register CX sekarang = 3H = 0011.
=============================== 7. DIV CX
===============================
Instruksi DIV melakukan operasi pembagian isi dari register DX-AX dengan CX. Hasil bagi disimpan ke register AX. Sisa bagi disimpan ke register DX.
Isi dari register DX-AX dibagi dengan isi dari register CX.
Hasil bagi dari 00000000000000000000000000001100 / 0000000000000011 = 0000000000000100
Sisa bagi dari 00000000000000000000000000001100 / 0000000000000011 = 0000000000000000 Isi dari register AX berubah menjadi 0000000000000100.
Volume 8 No 1, April 2017
JURNAL IT
Flag C = 0 -> MSB 16 bit = 1
Flag S = 0 -> Hasil pembagian positif.
Flag P = 0 -> Jumlah Bit bernilai '1' = 1 (ganjil). Flag O = 0 -> Hasil operasi tidak overflow.
=============================== 8. SUB BX, AX
===============================
Instruksi SUB mengurangkan isi dari register BX dan AX. Hasil pengurangan dikembalikan ke register BX.
Isi dari register BX dikurang dengan isi register AX = 0000000010000110 - 0000000000000100 = 0000000010000010
Isi dari register BX berubah menjadi 0000000010000010 Flag Z = 0 -> Hasil pengurangan tidak nol.
Flag C = 0 -> bit carry dari operasi. Flag A = 0 -> bit half carry dari operasi. Flag S = 0 -> Hasil pengurangan positif. Flag P = 1 -> Jumlah Bit bernilai '1' = 2 (genap). Flag O = 0 -> Hasil operasi tidak overflow. =============================== 9. MOV AX, F
===============================
Instruksi MOV akan menyalin bilangan FH ke register AX. Isi register AX sekarang = FH = 1111.
=============================== 10. MUL BX
===============================
Instruksi MUL melakukan operasi perkalian isi dari register BX dengan AX. Hasil perkalian disimpan ke register DX-AX.
Isi dari register BX dikali isi register AX = 0000000010000010 * 0000000000001111 = 00000000000000000000011110011110
Isi dari register DX berubah menjadi 0000000000000000. Isi dari register AX berubah menjadi 0000011110011110. Flag Z = 0 -> Hasil perkalian tidak nol.
Flag C = 0 -> MSB 16 bit = 0 Flag S = 0 -> Hasil perkalian positif.
Flag P = 1 -> Jumlah Bit bernilai '1' = 8 (genap). Flag O = 0 -> Hasil operasi tidak overflow.
=============================== 11. MOV BX, AX
===============================
Instruksi MOV memindahkan data dari register AX ke BX.
Isi register BX sekarang = isi dari register AX = 0000011110011110 = 079EH.
=============================== 12. MOV AX, 10FF
===============================
Volume 8 No 1, April 2017
JURNAL IT
=============================== 13. MOV CX, 2
===============================
Instruksi MOV akan menyalin bilangan 2H ke register CX. Isi register CX sekarang = 2H = 0010.
=============================== 14. MUL CX
===============================
Instruksi MUL melakukan operasi perkalian isi dari register CX dengan AX. Hasil perkalian disimpan ke register DX-AX.
Isi dari register CX dikali isi register AX = 0000000000000010 * 0001000011111111 = 00000000000000000010000111111110
Isi dari register DX berubah menjadi 0000000000000000. Isi dari register AX berubah menjadi 0010000111111110. Flag Z = 0 -> Hasil perkalian tidak nol.
Flag C = 0 -> MSB 16 bit = 0 Flag S = 0 -> Hasil perkalian positif.
Flag P = 0 -> Jumlah Bit bernilai '1' = 9 (ganjil). Flag O = 0 -> Hasil operasi tidak overflow.
=============================== 15. ADD AX, BX
===============================
Instruksi ADD menjumlahkan isi dari register AX dan BX. Hasil penjumlahan dikembalikan ke register AX.
Isi dari register AX ditambah dengan isi register BX = 0010000111111110 + 0000011110011110 = 0010100110011100
Isi dari register AX berubah menjadi 0010100110011100 Flag Z = 0 -> Hasil penjumlahan tidak nol.
Flag C = 0 -> bit carry dari operasi. Flag A = 1 -> bit half carry dari operasi. Flag S = 0 -> Hasil penjumlahan positif. Flag P = 0 -> Jumlah Bit bernilai '1' = 7 (ganjil). Flag O = 0 -> Hasil operasi tidak overflow.
Hasil operasi disimpan pada register AX, yaitu : 0010 1011 1011 1100 (dalam biner) atau 299C (dalam heksa desimal).
5. Kesimpulan
Setelah menyelesaikan perancangan perangkat lunak pembelajaran penerapan modus pengalamatan dan operasi aritmatika pada mikroprosesor intel 8088/8086 ini, penulis menarik kesimpulan bahwa perangkat lunak ini dapat digunakan untuk memahami modus pengalamatan register dan segera serta beberapa operasi aritmatika pada mikroprosesor intel 8088/8086. Perangkat lunak dapat dijadikan sebagai media pendukung dalam proses pembelajaran mikroprosesor dasar.
Volume 8 No 1, April 2017
JURNAL IT
Daftar Pustaka
[1] Albert Paul Malvino, Elektronika Komputer Digital : Pengantar Mikrokomputer, Edisi Kedua, Penerbit Erlangga, 2004.
[2] Ario Suryokusumo, Microsoft Visual Basic, PT. Elex Media Komputindo, 2011.
[3] Barry B. Brey, Mikroprosesor Intel 8086/8088/80186/80188/80286/ 80386/80486 : Arsitektur Pemrograman Antarmuka, Edisi 5, Jilid 2, Penerbit Erlangga, 2003.
[4] Hadi, Rahadian, Pemrograman Microsoft Visual Basic dengan menggunakan Windows API, PT. Elex Media Komputindo, Jakarta, 2011.