Blogger Jateng

BORLAN C++



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.




 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  .........................
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





BAB I
 Dasar-Dasar Pengaksesan
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

a. General Purpose 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.  

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 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.

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.

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

dalam  bentuk  binari  saat  program  dijalankan  dan  dimuat  dalam memori.  Register  IP  dan  CS
dituliskan dalam notasi CS:IP, misalkan:


0F6C:0100 mov ah, 02
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.


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 


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.


Tabel I.1. Daftar Interupsi BIOS

 


Tabel I.2. Daftar Interupsi DOS







Posting Komentar untuk "BORLAN C++"