Kata Pengantar
Puji dan syukur penulis panjatkan kepada Allah SWT karena atas berkat dan rahmat-Nya
Modul Pelatihan Pemrograman C++ Lanjutan ini dapat penulis susun. Modul ini merupakan
kelanjutan materi praktikum pemrograman C++ yang telah dipelajari pada semester terdahulu
pada Program Studi Diploma Tiga AMIK BSI jurusan Teknik Komputer.
Modul pelatihan ini ditujukan untuk instruktur laboratorium komputer AMIK Bina Sarana
Informatika, dengan pembahasan materi yang berhubungan dengan teknik-teknik pengaksesan
perangkat keras yang telah tersedia pada komputer secara umum. Dengan memanfaatkan
bahasa pemrograman C++ dan kompilator Borland C++ 5.02, instruktur diharapkan mampu
mengajarkan bahasa pemrograman C++ yang dapat memanipulasi perangkat keras komputer.
Bahasa pemrograman C++ merupakan bahasa pemrograman yang berorientasi objek, oleh
karena itu pembahasan pada modul pelatihan ini tidak hanya menggunakan fungsi-fungsi
pustaka yang dimiliki oleh Borland C++ 5.02 melainkan juga menggunakan struktur bahasa
pemrograman berorientasi objek itu sendiri, seperti class, constructor, desctructor, polimorfisme
dan lain-lain. Diharapkan pembaca telah memahami konsep-konsep pemrograman berorientasi
objek melalui praktikum pemrograman C++ pada semester terdahulu.
Pembahasan tentang teknik-teknik pengaksesan perangkat keras komputer akan
menggunakan beberapa cara, diantaranya adalah dengan menggunakan fungsi-fungsi pustaka
yang tersedia pada Borland C++ 5.02 dan membuat fungsi-fungsi tersendiri menggunakan teknik
inline assembly memanfaatkan referensi arsitektur komputer Intel x86. Dengan memandang
perangkat keras komputer sebagai suatu objek, maka pemrograman akan diutamakan pada
pembuatan class yang memiliki atribut dan metode suatu objek. Contohnya adalah objek layar
monitor memiliki atribut banyak baris dan kolom, warna karakter, jenis tampilan dan memiliki
metode mencetak karakter, mengubah posisi kursor, mengubah jenis tampilan dan lain
sebagainya.
Guna penyempurnaan modul pelatihan ini pada masa yang akan datang, penulis
berharap pembaca dan semua pihak yang menggunakan modul ini dapat memberikan saran-saran dan kritik yang sifatnya konstruktif. Akhir kata, penulis mengucapkan terima kasih kepada
Bapak Ir. Naba Aji Notoseputro selaku Direktur Bina Sarana Informatika, Bapak Anton, S.Kom
selaku Ketua Jurusan Teknik Komputer dan rekan-rekan Komisi Teknik Komputer serta semua
pihak yang telah membantu penyusunan Modul Praktikum Pemrograman C++ Lanjutan ini.
Modul Pelatihan Pemrograman C++ Lanjutan ini dapat penulis susun. Modul ini merupakan
kelanjutan materi praktikum pemrograman C++ yang telah dipelajari pada semester terdahulu
pada Program Studi Diploma Tiga AMIK BSI jurusan Teknik Komputer.
Modul pelatihan ini ditujukan untuk instruktur laboratorium komputer AMIK Bina Sarana
Informatika, dengan pembahasan materi yang berhubungan dengan teknik-teknik pengaksesan
perangkat keras yang telah tersedia pada komputer secara umum. Dengan memanfaatkan
bahasa pemrograman C++ dan kompilator Borland C++ 5.02, instruktur diharapkan mampu
mengajarkan bahasa pemrograman C++ yang dapat memanipulasi perangkat keras komputer.
Bahasa pemrograman C++ merupakan bahasa pemrograman yang berorientasi objek, oleh
karena itu pembahasan pada modul pelatihan ini tidak hanya menggunakan fungsi-fungsi
pustaka yang dimiliki oleh Borland C++ 5.02 melainkan juga menggunakan struktur bahasa
pemrograman berorientasi objek itu sendiri, seperti class, constructor, desctructor, polimorfisme
dan lain-lain. Diharapkan pembaca telah memahami konsep-konsep pemrograman berorientasi
objek melalui praktikum pemrograman C++ pada semester terdahulu.
Pembahasan tentang teknik-teknik pengaksesan perangkat keras komputer akan
menggunakan beberapa cara, diantaranya adalah dengan menggunakan fungsi-fungsi pustaka
yang tersedia pada Borland C++ 5.02 dan membuat fungsi-fungsi tersendiri menggunakan teknik
inline assembly memanfaatkan referensi arsitektur komputer Intel x86. Dengan memandang
perangkat keras komputer sebagai suatu objek, maka pemrograman akan diutamakan pada
pembuatan class yang memiliki atribut dan metode suatu objek. Contohnya adalah objek layar
monitor memiliki atribut banyak baris dan kolom, warna karakter, jenis tampilan dan memiliki
metode mencetak karakter, mengubah posisi kursor, mengubah jenis tampilan dan lain
sebagainya.
Guna penyempurnaan modul pelatihan ini pada masa yang akan datang, penulis
berharap pembaca dan semua pihak yang menggunakan modul ini dapat memberikan saran-saran dan kritik yang sifatnya konstruktif. Akhir kata, penulis mengucapkan terima kasih kepada
Bapak Ir. Naba Aji Notoseputro selaku Direktur Bina Sarana Informatika, Bapak Anton, S.Kom
selaku Ketua Jurusan Teknik Komputer dan rekan-rekan Komisi Teknik Komputer serta semua
pihak yang telah membantu penyusunan Modul Praktikum Pemrograman C++ Lanjutan ini.
Jakarta, Mei 2009
Penulis
Daftar Isi
Lembar Judul .................................................................................................................................. i
Kata Pengantar .............................................................................................................................. ii
Daftar Isi ........................................................................................................................................ iii
BAB I Dasar-Dasar Pengaksesan Perangkat Keras Komputer
Menggunakan Borland C++ 5.02
1.1. Pengenalan Register dan Interupsi pada Mikroprosesor ..........................................1
1.2. Pembuatan Project dan Kode Program .....................................................................4
1.3. Memanggil Interupsi BIOS dan DOS Menggunakan Fungsi int86 .........................
Kata Pengantar .............................................................................................................................. ii
Daftar Isi ........................................................................................................................................ iii
BAB I Dasar-Dasar Pengaksesan Perangkat Keras Komputer
Menggunakan Borland C++ 5.02
1.1. Pengenalan Register dan Interupsi pada Mikroprosesor ..........................................1
1.2. Pembuatan Project dan Kode Program .....................................................................4
1.3. Memanggil Interupsi BIOS dan DOS Menggunakan Fungsi int86 .........................
1.4. Memanggil Interupsi BIOS dan DOS Menggunakan
Teknik Inline Assembly ..............................................................................................9
1.5. Latihan-latihan Bab I ................................................................................................10
BAB II Operasi Layar Modus Teks
2.1. Interupsi BIOS untuk Operasi Layar pada Modus Teks ..........................................11
2.2. Memilih Mode Video ................................................................................................11
2.3. Menampilkan Karakter dan Memindahkan Posisi Kursor ........................................14
2.4. Membaca Karakter pada Posisi Kursor ...................................................................18
2.5. ASCII Extended Character Set ................................................................................19
2.6. Membuat Class untuk Operasi Layar pada Modus Teks .........................................22
2.7. Latihan-latihan BAB II ..............................................................................................28
Bab III Input Menggunakan Keyboard
3.1. Interupsi BIOS untuk Input Melalui Keyboard .........................................................30
3.2. Memasukan Satu Karakter dan Mendeteksi Penekanan Tombol Extended ..........30
3.3. Memasukan String Menggunakan Keyboard ........................................................ 33
3.4. Memasukan String Berupa Kata Sandi ................................................................. 35
3.5. Mengetahui Status Tombol On/Off ........................................................................ 38
3.6. Konversi Nilai String Menjadi Numerik atau Sebaliknya ........................................ 41
3.7. Membuat Class untuk Operasi pada Keyboard ..................................................... 44
3.8. Latihan-latihan Bab III ............................................................................................ 49
BAB IV Mendeteksi dan Menggunakan Mouse
4.1. Interupsi DOS untuk Mendeteksi, Mengaktifkan dan Menonaktifkan Mouse .........51
4.2. Mendeteksi Mouse dan Jumlah Tombol pada Mouse ............................................51
4.3. Menampilkan dan Menyembunyikan Pointer Mouse ............................................. 53
4.4. Mengaktifkan dan Menonaktifkan Driver Mouse ................................................... 56
4.5. Mengetahui Koordinat Pointer Mouse ................................................................... 58
4.6. Memindahkan Koordinat Pointer Mouse ............................................................... 60
4.7. Membatasi Posisi Horizontal dan Vertikal Mouse ................................................. 63
4.8. Mengetahui Status Penekanan dan Pelepasan Tombol Mouse ............................65
4.9. Membuat Class untuk Menggunakan Mouse ........................................................ 70
4.10. Latihan-latihan Bab IV ........................................................................................... 76
Daftar Pustaka ..............................................................................................................................78
Teknik Inline Assembly ..............................................................................................9
1.5. Latihan-latihan Bab I ................................................................................................10
BAB II Operasi Layar Modus Teks
2.1. Interupsi BIOS untuk Operasi Layar pada Modus Teks ..........................................11
2.2. Memilih Mode Video ................................................................................................11
2.3. Menampilkan Karakter dan Memindahkan Posisi Kursor ........................................14
2.4. Membaca Karakter pada Posisi Kursor ...................................................................18
2.5. ASCII Extended Character Set ................................................................................19
2.6. Membuat Class untuk Operasi Layar pada Modus Teks .........................................22
2.7. Latihan-latihan BAB II ..............................................................................................28
Bab III Input Menggunakan Keyboard
3.1. Interupsi BIOS untuk Input Melalui Keyboard .........................................................30
3.2. Memasukan Satu Karakter dan Mendeteksi Penekanan Tombol Extended ..........30
3.3. Memasukan String Menggunakan Keyboard ........................................................ 33
3.4. Memasukan String Berupa Kata Sandi ................................................................. 35
3.5. Mengetahui Status Tombol On/Off ........................................................................ 38
3.6. Konversi Nilai String Menjadi Numerik atau Sebaliknya ........................................ 41
3.7. Membuat Class untuk Operasi pada Keyboard ..................................................... 44
3.8. Latihan-latihan Bab III ............................................................................................ 49
BAB IV Mendeteksi dan Menggunakan Mouse
4.1. Interupsi DOS untuk Mendeteksi, Mengaktifkan dan Menonaktifkan Mouse .........51
4.2. Mendeteksi Mouse dan Jumlah Tombol pada Mouse ............................................51
4.3. Menampilkan dan Menyembunyikan Pointer Mouse ............................................. 53
4.4. Mengaktifkan dan Menonaktifkan Driver Mouse ................................................... 56
4.5. Mengetahui Koordinat Pointer Mouse ................................................................... 58
4.6. Memindahkan Koordinat Pointer Mouse ............................................................... 60
4.7. Membatasi Posisi Horizontal dan Vertikal Mouse ................................................. 63
4.8. Mengetahui Status Penekanan dan Pelepasan Tombol Mouse ............................65
4.9. Membuat Class untuk Menggunakan Mouse ........................................................ 70
4.10. Latihan-latihan Bab IV ........................................................................................... 76
Daftar Pustaka ..............................................................................................................................78
BAB I
Dasar-Dasar Pengaksesan
Perangkat Keras Komputer Menggunakan
Borland C++ 5.02
Perangkat Keras Komputer Menggunakan
Borland C++ 5.02
1.1. Pengenalan Register dan Interupsi pada Mikroprosesor
Setiap komputer memiliki sebuah bagian penting yang disebut Central Processing
Unit (CPU) atau yang lebih dikenal dengan mikroprosesor. Sebagaimana halnya Integrated
Circuit lainnya, mikroprosesor terdiri dari beberapa bagian kecil yang disebut dengan register.
Pada arsitektur Intel x86 yang diperkenalkan oleh Intel Corporation pada tahun 1985, setiap
mikroprosesor Intel memiliki beberapa jenis register berikut ini
Unit (CPU) atau yang lebih dikenal dengan mikroprosesor. Sebagaimana halnya Integrated
Circuit lainnya, mikroprosesor terdiri dari beberapa bagian kecil yang disebut dengan register.
Pada arsitektur Intel x86 yang diperkenalkan oleh Intel Corporation pada tahun 1985, setiap
mikroprosesor Intel memiliki beberapa jenis register berikut ini
a. General Purpose Register
b. Pointer dan Index Register
c. Segment Register
d. Flag Register
b. Pointer dan Index Register
c. Segment Register
d. Flag Register
Setiap jenis register memiliki fungsi-fungsi tersendiri. Berikut ini adalah rincian dari
masing masing register.
masing masing register.
1. General Purpose Register
General Purpose Register terdiri dari register AX, BX, CX dan DX. Masing-masing
register memiliki ukuran 16 bit (2 byte) dan masih dapat dibagi menjadi dua bagian, yaitu high
dan low. Artinya register AX terdiri AH dan AL, demikian juga BX (BH dan BL), CX (CH dan
CL) dan DX (DH dan DL). Masing-masing bagian high dan low berukuran 8 bit (1 byte).
Register AX disebut juga akumulator dan berhubungan dengan operasi khusus seperti
aritmatika, IN, OUT, shift, logika dan operasi binary decimal.
register memiliki ukuran 16 bit (2 byte) dan masih dapat dibagi menjadi dua bagian, yaitu high
dan low. Artinya register AX terdiri AH dan AL, demikian juga BX (BH dan BL), CX (CH dan
CL) dan DX (DH dan DL). Masing-masing bagian high dan low berukuran 8 bit (1 byte).
Register AX disebut juga akumulator dan berhubungan dengan operasi khusus seperti
aritmatika, IN, OUT, shift, logika dan operasi binary decimal.
Register BX disebut juga base register dan berfungsi pada operasi rotate, aritmatika,
shift dan logika. Register BX juga dapat digunakan untuk mereferensikan alamat memori.
Register yang khusus digunakan untuk operasi perulangan (loop) dan pencacah (counter)
adalah register CX. Data register atau register DX digunakan pada operasi perkalian (MUL)
dan menyimpan sebagian hasil perkalian 32 bit atau menyimpan nilai sisa dari operasi
pembagian (DIV). Register DX juga digunakan pada operasi input/output suatu port.
shift dan logika. Register BX juga dapat digunakan untuk mereferensikan alamat memori.
Register yang khusus digunakan untuk operasi perulangan (loop) dan pencacah (counter)
adalah register CX. Data register atau register DX digunakan pada operasi perkalian (MUL)
dan menyimpan sebagian hasil perkalian 32 bit atau menyimpan nilai sisa dari operasi
pembagian (DIV). Register DX juga digunakan pada operasi input/output suatu port.
Dalam mempelajari teknik-teknik pengaksesan perangkat keras menggunakan
Borland C++ 5.02, General Purpose Register akan banyak digunakan. Oleh karena itu,
sangatlah penting untuk memahami fungsi-fungsi dari register ini.
Borland C++ 5.02, General Purpose Register akan banyak digunakan. Oleh karena itu,
sangatlah penting untuk memahami fungsi-fungsi dari register ini.
2. Pointer dan Index Register
Pointer dan index register digunakan untuk menunjukan suatu alamat memori, terdiri
dari SP, BP, SI, DI dan IP. Register SP (Stack Pointer) dan BP (Base Pointer) berfungsi
menunjukan alamat stack saat terjadi operasi PUSH (menyimpan nilai ke dalam stack) dan
POP (membaca nilai di dalam stack).
Register SI (Source Index) dan DI (Destination Index) digunakan pada saat operasi
string jika kita membuat program dalam bahasa assembly murni. SI dan DI menyimpan nilai
offset suatu string dalam segmen data memori. Register IP (Instruction Pointer) berfungsi
menunjukan alamat suatu instruksi program dalam memori saat program dijalankan. Register
IP berpasangan dengan register CS (Code Segment) yang menyimpan semua kode program
Pointer dan index register digunakan untuk menunjukan suatu alamat memori, terdiri
dari SP, BP, SI, DI dan IP. Register SP (Stack Pointer) dan BP (Base Pointer) berfungsi
menunjukan alamat stack saat terjadi operasi PUSH (menyimpan nilai ke dalam stack) dan
POP (membaca nilai di dalam stack).
Register SI (Source Index) dan DI (Destination Index) digunakan pada saat operasi
string jika kita membuat program dalam bahasa assembly murni. SI dan DI menyimpan nilai
offset suatu string dalam segmen data memori. Register IP (Instruction Pointer) berfungsi
menunjukan alamat suatu instruksi program dalam memori saat program dijalankan. Register
IP berpasangan dengan register CS (Code Segment) yang menyimpan semua kode program
dalam bentuk binari saat program dijalankan dan dimuat dalam memori. Register IP dan CS
dituliskan dalam notasi CS:IP, misalkan:
dituliskan dalam notasi CS:IP, misalkan:
0F6C:0100 mov ah, 02
0F6C:0102 mov bl, 05
0F6C:0102 mov bl, 05
Arti instruksi diatas adalah saat program dijalankan register CS menunjukan alamat
0F6C heksadesimal dan register IP menunjukan alamat 0100 heksadesimal. Instruksi yang
tersimpan adalah mov ah, 02 (simpan nilai 2 heksadesimal ke register AH). Hal yang sama
juga terjadi pada baris kedua, pada baris kedua nilai register IP berubah menjadi 0102 yang
sebelumnya 0100. Hal ini terjadi karena instruksi mov pada baris pertama menggunakan
memori sebesar 2 byte.
Notasi CS:IP dapat dianalogikan dengan tabel atau matriks, dimana CS menunjukan
nomor baris sedangan register IP menunjukan nomor kolom. Dalam membuat program
menggunakan bahasa pemrograman C++ seorang programmer tidak harus mengubah nilai-nilai CS:IP karena nilai-nilai dalam kedua register tersebut diatur oleh kompilator. Merupakan
hal yang beresiko mengubah nilai-nilai pada register CS:IP karena pasangan register tersebut
menunjukan alamat instruksi. Kesalahan mengubah nilai register CS:IP akan menyebabkan
program berhenti melakukan eksekusi atau program mengalami hang.
3. Segment Register
Segment register terdiri dari CS (Code Segment), DS (Data Segment), SS (Stack
Segment) dan ES (Extra Segment) yang masing-masing berukuran 16 bit (2 byte). Register
CS berpasangan dengan IP berfungsi menyimpan alamat instruksi, register DS berpasangan
dengan register DX (DS:DX) yang menyimpan alamat data. Register SS (Stack Segment)
menyimpan alamat memori stack sedangkan ES (Extra Segment) menyimpan alamat
segment tambahan.
Dalam pemrograman C++ segment register umumnya tidak perlu diakses secara
langsung karena segment register telah diatur oleh kompilator.
0F6C heksadesimal dan register IP menunjukan alamat 0100 heksadesimal. Instruksi yang
tersimpan adalah mov ah, 02 (simpan nilai 2 heksadesimal ke register AH). Hal yang sama
juga terjadi pada baris kedua, pada baris kedua nilai register IP berubah menjadi 0102 yang
sebelumnya 0100. Hal ini terjadi karena instruksi mov pada baris pertama menggunakan
memori sebesar 2 byte.
Notasi CS:IP dapat dianalogikan dengan tabel atau matriks, dimana CS menunjukan
nomor baris sedangan register IP menunjukan nomor kolom. Dalam membuat program
menggunakan bahasa pemrograman C++ seorang programmer tidak harus mengubah nilai-nilai CS:IP karena nilai-nilai dalam kedua register tersebut diatur oleh kompilator. Merupakan
hal yang beresiko mengubah nilai-nilai pada register CS:IP karena pasangan register tersebut
menunjukan alamat instruksi. Kesalahan mengubah nilai register CS:IP akan menyebabkan
program berhenti melakukan eksekusi atau program mengalami hang.
3. Segment Register
Segment register terdiri dari CS (Code Segment), DS (Data Segment), SS (Stack
Segment) dan ES (Extra Segment) yang masing-masing berukuran 16 bit (2 byte). Register
CS berpasangan dengan IP berfungsi menyimpan alamat instruksi, register DS berpasangan
dengan register DX (DS:DX) yang menyimpan alamat data. Register SS (Stack Segment)
menyimpan alamat memori stack sedangkan ES (Extra Segment) menyimpan alamat
segment tambahan.
Dalam pemrograman C++ segment register umumnya tidak perlu diakses secara
langsung karena segment register telah diatur oleh kompilator.
4. Flag Register
Pada arsitektur awal Intel x86 terdapat beberapa flag register, yaitu:
CF (Carry Flag), menandakan jika suatu instruksi ADD menghasilkan nilai carry, atau
suatu instruksi SUB menghasilkan nilai borrow
PF (Parity Flag), menandakan jika suatu instruksi menghasilkan nilai genap atau ganjil.
Register ini akan bernilai 1 jika bilangan yang dihasilkan bernilai genap.
AF (Auxiliary Carry Flag), digunakan untuk operasi desimal berkode binari (BCD), seperti
pada operasi AAA (ASCII Adjust for Addition).
OF (Overflow Flag), menandakan jika suatu operasi aritmatika mengalami overflow
(melebihi jangkauan nilai yang telah ditentukan atau hasil operasi aritmatika melebihi
ukuran register).
SF (Sign Flag), digunakan pada operasi aritmatika yang menggunakan bilangan
bertanda (bilangan positif atau bilangan negatif).
ZF (Zero Flag), menandakan jika suatu operasi aritmatika menghasilkan nilai nol.
DF (Direction Flag), digunakan pada operasi string yang menunjukan arah proses.
IF (Interrupt Enable Flag), menandakan jika CPU akan memproses interupsi jika bernilai
1 atau mengabaikan interupsi jika bernilai nol.
TF (Trap Flag), digunakan saat debugging, dengan mode single step.
NT (Nested Task), digunakan untuk memantau jalannya interupsi yang terjadi secara
beruntun.
IOPL (I/O Protection Level), flag ini digunakan jika program berjalan pada mode
Pada arsitektur awal Intel x86 terdapat beberapa flag register, yaitu:
CF (Carry Flag), menandakan jika suatu instruksi ADD menghasilkan nilai carry, atau
suatu instruksi SUB menghasilkan nilai borrow
PF (Parity Flag), menandakan jika suatu instruksi menghasilkan nilai genap atau ganjil.
Register ini akan bernilai 1 jika bilangan yang dihasilkan bernilai genap.
AF (Auxiliary Carry Flag), digunakan untuk operasi desimal berkode binari (BCD), seperti
pada operasi AAA (ASCII Adjust for Addition).
OF (Overflow Flag), menandakan jika suatu operasi aritmatika mengalami overflow
(melebihi jangkauan nilai yang telah ditentukan atau hasil operasi aritmatika melebihi
ukuran register).
SF (Sign Flag), digunakan pada operasi aritmatika yang menggunakan bilangan
bertanda (bilangan positif atau bilangan negatif).
ZF (Zero Flag), menandakan jika suatu operasi aritmatika menghasilkan nilai nol.
DF (Direction Flag), digunakan pada operasi string yang menunjukan arah proses.
IF (Interrupt Enable Flag), menandakan jika CPU akan memproses interupsi jika bernilai
1 atau mengabaikan interupsi jika bernilai nol.
TF (Trap Flag), digunakan saat debugging, dengan mode single step.
NT (Nested Task), digunakan untuk memantau jalannya interupsi yang terjadi secara
beruntun.
IOPL (I/O Protection Level), flag ini digunakan jika program berjalan pada mode
terproteksi (protected mode).
PE (Protection Enable), flag ini digunakan untuk mengaktifkan mode terproteksi.
MP (Monitor Coprocessor), digunakan untuk memantau kerja coprocessor dan
menangani terjadinya instruksi WAIT.
EM (Emulate Coprocessor), digunakan jika prosesor akan mengemulasikan kerja
coprocessor.
ET (Extention Type), digunakan untuk menentukan jenis coprocessor (80287 atau
80387).
VF (Virtual 8086 Mode), digunakan jika ingin menjalankan aplikasi real mode pada
protected mode.
Pada pemrograman C++, nilai-nilai pada Flag Register tidak diberikan secara manual
oleh programmer, tetapi diatur oleh sistem operasi pada saat program C++ dijalankan.
Register-register yang telah dibahas sebelumnya hanya menyimpan data dan jenis
instruksi yang akan dijalankan oleh mikroprosesor. Lalu pertanyaannya adalah bagaimana
memerintahkan mikroprosesor melaksanakan instruksi tertentu. Jawabnya adalah dengan
melakukan interupsi (interrupt). Interupsi adalah permintaan kepada mikroprosesor untuk
melakukan tugas tertentu, ketika terjadi interupsi maka mikroprosesor menghentikan dahulu
instruksi yang sedang dikerjakan dan menjalankan tugas yang diminta sesuai dengan
interupsi yang diberikan.
Terdapat dua jenis interupsi, yaitu interupsi BIOS dan interupsi DOS. Interupsi BIOS
(Basic Input Output System) ditanam pada chip ROM BIOS oleh pabrik komputer sedangkan
interupsi DOS (Disk Operating System) hanya dapat digunakan jika komputer menjalankan
sistem operasi DOS atau Microsoft Windows. Berikut ini adalah tabel yang menjelaskan daftar
interupsi BIOS dan DOS.
PE (Protection Enable), flag ini digunakan untuk mengaktifkan mode terproteksi.
MP (Monitor Coprocessor), digunakan untuk memantau kerja coprocessor dan
menangani terjadinya instruksi WAIT.
EM (Emulate Coprocessor), digunakan jika prosesor akan mengemulasikan kerja
coprocessor.
ET (Extention Type), digunakan untuk menentukan jenis coprocessor (80287 atau
80387).
VF (Virtual 8086 Mode), digunakan jika ingin menjalankan aplikasi real mode pada
protected mode.
Pada pemrograman C++, nilai-nilai pada Flag Register tidak diberikan secara manual
oleh programmer, tetapi diatur oleh sistem operasi pada saat program C++ dijalankan.
Register-register yang telah dibahas sebelumnya hanya menyimpan data dan jenis
instruksi yang akan dijalankan oleh mikroprosesor. Lalu pertanyaannya adalah bagaimana
memerintahkan mikroprosesor melaksanakan instruksi tertentu. Jawabnya adalah dengan
melakukan interupsi (interrupt). Interupsi adalah permintaan kepada mikroprosesor untuk
melakukan tugas tertentu, ketika terjadi interupsi maka mikroprosesor menghentikan dahulu
instruksi yang sedang dikerjakan dan menjalankan tugas yang diminta sesuai dengan
interupsi yang diberikan.
Terdapat dua jenis interupsi, yaitu interupsi BIOS dan interupsi DOS. Interupsi BIOS
(Basic Input Output System) ditanam pada chip ROM BIOS oleh pabrik komputer sedangkan
interupsi DOS (Disk Operating System) hanya dapat digunakan jika komputer menjalankan
sistem operasi DOS atau Microsoft Windows. Berikut ini adalah tabel yang menjelaskan daftar
interupsi BIOS dan DOS.
Tabel I.1. Daftar Interupsi BIOS
Tabel I.2. Daftar Interupsi DOS
Posting Komentar untuk "BORLAN C++"