Contoh
1
Berikut
ini adalah contoh
sederhana penggunaan int86
untuk mencetak karakter
menggunakan interupsi
BIOS 10 heksadesimal
servis 09 heksadesimal.
baris 1 sampai baris 3 pada program
diatas merupakan penentuan header yang akan
digunakan, yaitu conio.h, dos.h dan
stdlib.h. Header conio.h digunakan karena pada baris 18
kita akan menggunakan fungsi clrscr dan pada baris 20 kita akan
menggunakan fungsi getch.
Header
dos.h digunakan karena
pada baris 9
kita mendeklarasikan variabel
in dan out
menggunakan tipe union REGS serta pada
baris 19 kita akan memanggil fungsi int86. Header
stdlib.h
digunakan karena pada
baris 22 kita
akan menggunakan nilai
konstanta
EXIT_SUCCESS.
Pada baris 5 kita mendeklarasikan konstanta
dengan nama VIDEO_INT yang bernilai
10
heksadesimal. Konstanta ini
digunakan saat memanggil
fungsi video int86
untuk
menjalankan interupsi 10 heksadesimal
servis 9 heksadesimal.
Contoh
2
Berikut
ini adalah program
dengan tujuan yang
sama seperti pada
contoh01.cpp
untuk mencetak huruf A di layar.
Perbedaannya adalah fungsi int86 digantikan dengan kodekode inline
assembly.
Perhatikanlah baris
11 sampai dengan
baris 16! Instruksi
mov ah, 0x09
artinya
menyimpan nilai 9 heksadesimal kedalam
register AH. Demikian juga dengan instruksi
mov
bh, 0x00
atau mov cl, 0x01. Dalam
pemrograman bahasa assembly opcode mov digunakan
untuk memberikan nilai kedalam suatu
operand, dalam hal ini register AH, AL,
BH, BL dan
sebagainya. Kemudian
amati pula baris
17. Pada baris
17 instruksi int
VIDEO_INT bukan
berarti
mendeklarasikan variabel VIDEO_INT
dengan tipe data
integer, melainkan
menjalankan interupsi
yang nilai interupsinya
disimpan dalam konstanta
VIDEO_INT, yaitu
10
0x10
atau 10 heksadesimal.
Dalam pemrograman bahasa
assembly opcode int
digunakan
untuk menjalankan interupsi sesuai
dengan nomor interupsi sesudah kata kunci int.
Contoh
3
berikut
ini adalah program
untuk memilih mode
video 01
heksadesimal (16 warna, 25 baris dan 40
kolom) kemudian mengembalikannya menjadi mode
video
normal menggunakan fungsi
int86.
Pada
contoh diatas, setiap
terjadi pergantian mode
video akan selalu
menimbulkan
efek
clear screen. Bagaimana
cara menghilangkan efek clear
screen ini? Jawabnya
adalah
dengan
menset bit ke-7
pada register AL
menjadi 1.
Contoh
4
Berikut ini adalah
contoh yang sama
seperti
pada contoh3.cpp, namun
bit ke-7 pada register
AL akan diset
menjadi 1 dan
menggunakan teknik inline assembly.
Kedua
contoh program sebelumnya
digunakan untuk mengubah
mode video.
Bagaimana jika kita tidak mengetahui
mode video yang sedang digunakan? Jawabnya adalah
dengan menjalankan interupsi 10
heksadesimal servis 0f heksadesimal
.
Contoh
5
Register
AH berisi banyaknya
kolom, register AL berisi nomor
mode video yang digunakan
dan register BH berisi nomor halaman
tampilan yang digunakan
Berikut ini adalah contoh programnya.
Contoh
6
Berikut ini adalah contoh program untuk
menampilkan huruf A dan Z dengan warna
dasar biru dan warna huruf putih.
Program
diatas terdiri dari
empat fungsi, yaitu
fungsi main, getCursorPos, setCursorPos dan writeChar. Fungsi
getCursorPos berguna untuk mengetahui posisi kursor, fungsi ini
mengirimkan parameter y dan x
secara acuan. Setelah
pemanggilan fungsi, parameter x
menyimpan posisi kolom kursor sedangkan parameter y menyimpan posisi baris
kursor. Fungsi setCursorPos digunakan
untuk memindahkan posisi
kursor, fungsi ini mengirimkan parameter y dan x secara
nilai. Parameter y digunakan untuk menentukan posisi baris sedangkan
parameter x untuk
menentukan posisi kolom
kursor.
Fungsi
writeChar digunakan untuk
menampilkan karakter, fungsi
ini mengirimkan
parameter letter dan attr secara nilai.
Parameter letter berisi karakter yang akan ditampilkan
sedangkan parameter
attr menentukan atribut
karakter (warna karakter
dan warna dasar).
Contoh
7
Setelah memahami cara menampilkan
karakter dengan warna karakternya, tentu kita
akan bertanya bagaimana cara menampilkan
string (rangkaian karakter) dengan warna-warna
karakternya. Untuk menjawab pertanyaan
ini marilah pelajari kode program berikut ini.
Program contoh7.cpp merupakan pengembangan dari program
contoh06.cpp. Pada
program contoh7.cpp terdapat fungsi
writeString, fungsi ini menggunakan parameter str dan
attr. Parameter str dikirimkan secara
acuan dan berisi rangkaian karakter (string) yang akan
dicetak.
Sedangkan parameter attr
dikirimkan secara nilai
untuk menentukan warna
string
saat
ditampilkan. Fungsi writeString
memanggil fungsi writeChar
untuk mencetak rangkaian karakternya satu per satu.
Contoh
8
Berikut ini adalah contoh sederhana untuk
membaca karakter pada posisi tertentu dilayar. Untuk menyederhanakan kode
program, contoh berikut akan
menggunakan fungsi standar
gotoxy, textcolor, textbackground, cprintf dan int86.
Pada
program diatas, fungsi
yang dibuat untuk
membaca karakter dan
warna
atributnya adalah
fungsi getCharAttr. Fungsi
ini mengirimkan parameter
dengan tipe data
unsigned
character secara acuan.
Setelah fungsi tersebut
dijalankan, parameter attr
berisi
nilai
warna atribut dari
karakter sedangkan fungsi
getCharAttr sendiri mengembalikan
nilai karakter yang dibaca
Contoh
9
Berikut
ini adalah contoh
program yang sangat
sederhana untuk membuat
sebuah
bingkai.
Program ini akan
menggunakan fungsi writeChar,
writeString, setCursorPos yang
telah dibuat pada program sebelumnya.
Sebelum melanjutkan ke contoh 10, kita
sebelumnya harus membuat class yang nantinya digunkanan dalam menampilkan hasil
outpout program, nama classnya Screen.cpp yang ditulis ke text editor.
Contoh
10
berikut
ini adalah demonstrasi penggunaan pustaka screen.cpp.
Maksud dari programnya adalah untuk memberikan contoh penggunaan fungsi
anggota setActivePage dan
setVisualPage yang merupakan
fungsi anggota dari objek
Screen.
Ketika
program diatas dijalankan
maka muncul tulisan
“Halaman pertama” dan
“Halaman ke dua” secara bergantian
dengan jeda waktu selama tiga detik. Tulisan ”Halaman
pertama” ditampilkan pada halaman 0
sedangkan “Halaman ke dua” pada halaman 1.
Contoh
11
Berikut
ini adalah contoh
program yang menunjukan
cara melakukan input
satu karakter menggunakan
interupsi 16 heksadesimal
servis 0 yang ditulis dengan
teknik inline assembly dan
memanfaatkan pustaka class
screen.cpp yang telah
dibuat pada bab sebelumnya.
Pada kode program contoh11.cpp fungsi
getKey adalah fungsi yang digunakan untuk input
satu karakter. Fungsi
getKey tidak memerlukan
parameter d an mengembalikan
nilai bertipe unsigned character
(didefinisikan dalam file
screen.cpp sebagi UCHAR).
Nilai yang dikembalikan oleh
fungsi ini adalah karakter yang diketikan pada tombol keyboard. Fungsi ini sama dengan fungsi standar getch.
Contoh
12
Berikut
ini memberikan contoh
cara mendeteksi penekanan
tombol F1, F2,
F3, dan F4.
Pada
kode program contoh12.cpp
fungsi getSpecialKey adalah
fungsi yang digunakan untuk
mendeteksi penekanan tombol-tombol
khusus. Perhatikanlah pada
baris kelima sampai baris kedelapan, karena setiap tombol khusus memiliki
kode tersendiri maka pada baris kelima sampai kedelapan dideklarasikan konstanta
untuk tombol F1 sampai F4. Kode
scan untuk tombol
F1 adalah 3b
heksadesimal, F2 adalah
3c heksadesimal, dan seterusnya.
Contoh
13
Setelah
memahami ide dasar
memasukan rangkaian karakter,
project contoh13.ide
berikut
ini akan memberikan
contoh bagaimana menerapkan
ide tersebut menggunakan
Pada
program contoh13.cpp, fungsi
yang digunakan untuk
memasukan string
adalah
fungsi getString. Fungsi
getString menerima tiga
parameter, yaitu scr
dengan tipe
data Screen yang dikirimkan secara
referensi, str dengan tipe data unsigned character yang
dikirimkan secara
referensi dan parameter max
dengan tipe data
unsigned character yang
dikirimkan secara
nilai. Parameter scr
digunakan untuk mengetahui
posisi kursor dan
memindahkan posisi
kursor pada mode
layar yang digunakan
serta menampilkan karakter
yang
diketikan melalui keyboard.
Parameter str adalah
pointer karakter yang
digunakan
untuk
menunjukan alamat memori
dimana karakter-karakter yang
dimasukan melalui
keyboard disimpan dalam memori.
Sedangkan parameter max digunakan untuk menentukan
banyaknya karakter yang bisa dimasukan.
Contoh
14
Project
contoh14.ide berikut ini adalah
contoh penerapan ide
untuk memasukan password. Project
ini akan menggunakan pustaka class
screen.cpp.
Fungsi
getPwdString pada program
contoh14.cpp diatas adalah
fungsi yang digunakan untuk
memasukan string password. Perhatikanlah
pada baris 129 dan 138! Pada baris
129 ketika ada
karakter alphanumerik dan
simbol yang diketikan
maka yang akan ditampilkan adalah
sebuah asteriks, demikian
juga ketika tombol tab
yang ditekan. Perbedaan lain
antara fungsi getString
dan getPwdString adalah
karakter tab akan
tetap disimpan sebagai tab (ASCII 9) bukan sebagai spasi
Contoh
15
Berikut ini adalah contoh program untuk
mengetahui cara menggunakan interupsi
16 heksadesimal servis 2.
Pada
program contoh15.cpp, fungsi
getKeyState adalah fungsi
yang digunakan untuk mengetahui
status tombol. Perhatikanlah baris 7
sampai baris 14! Pada baris ketujuh sampai
keempat belas dideklarasikan konstanta
STATE_RSHIFT dan STATE_INS.
Konstanta-konstanta ini digunakan untuk
mengetahui status penekanan tombol Shift kanan
sampai
tombol Ins. Konstanta-konstanta inilah
yang dikirimkan sebagai
parameter pada
fungsi getKeyState. Pada baris 114,
setelah interupsi dijalankan nilai register AL di -AND-kan
dengan
nilai yang dikirimkan
parameter fungsi getKeyState.
Contoh
16
Fungsi atof digunakan untuk mengubah
nilai numerik float dan double
dalam bentuk representasi
string menjadi nilai
numerik double yang sesungguhnya. Prototype fungsi atof
dideklarasikan dalam file header math.h. Jika fungsi atoi dan atof digunakan
untuk mengkonversi nilai numerik dalam representasi string menjadi nilai numerik
sesungguhnya, maka fungsi gcvt digunakan untuk mengubah nilai numerik menjadi representasi
stringy
Untuk
lebih memahami ketiga
fungsi konversi yang
telah dibahas sebelumnya,
berikut
ini adalah contoh
program untuk mempraktekkan
ketiga fungsi tersebut.
Perhatikanlah baris 35 pada program contoh16.cpp! Pada baris
tersebut, nilai str
yang sebelumnya dimasukkan menggunakan
fungsi getString diubah menjadi nilai
numerik
yang sesungguhnya lalu disimpan dalam
variabel jari2. Kemudian perhatikan baris 46. Pada
baris
46 tertulis gcvt(luas,
10, str). Maksudnya
adalah nilai dari
variabel luas akan
diubah menjadi representasi stringnya yang disimpan pada variabel str. Banyak karakter yang dapat ditampung adalah
10 karakter. Demikian juga yang dilakukan pada baris 54
Sebelum lanjut ke contoh 17 kita harus membuat
class keyboard.cpp untuk mendukung input yang telah ditbuat di screen.cpp
Contoh
17
Untuk
mempraktekkan cara menggunakan
class Keyboard, berikut
ini akan diberikan contoh
program. Program berikut ini adalah program sederhana untuk menghitung besar
beda potensial dengan mengalikan besar tahanan dengan besar arus listrik.
Pengguna hanya harus memasukan
nilai kuat arus
listrik dan besar
tahanan.
Contoh
18
Berikut
ini adalah contoh
program untuk mempraktekkan
interupsi 33
heksadesimal servis 0.
Fungsi
detectMouse pada contoh18.cpp
menerima sebuah parameter
yang dikirimkan secara referensi,
yaitu btn. Setelah
fungsi detectMouse dijalankan
maka parameter btn berisi nilai yang menunjukan jumlah tombol mouse.
Fungsi detectMouse akan mengembalikan nilai lebih dari 0 jika mouse dan
drivernya terinstal dengan benar dan akan mengembalikan nilai 0 jika mouse atau
drivernya tidak terinstal.
Contoh
19
Berikut ini adalah contoh program untuk
mempraktekkan cara menampilkan pointer mouse.
gram contoh19.cpp ketika dijalankan akan
mendeteksi mouse. Jika mouse siap digunakan maka pointer mouse akan dimunculkan
menggunakan fungsi showMouse, tetapi jika
mouse tidak terdeteksi
maka akan ditampilkan
pesan bahwa mouse
tidak bis a digunakan. Agar
pointer mouse dapat
ditampilkan, program contoh19.cpp
harus dijalankan dalam mode
full screen, caranya
adalah dengan menekan tombol
kombinasi ALT+Enter. Program akan
berhenti secara otomatis setelah lima detik. Setelah bisa menampilkan pointer
mouse
Contoh
20
Program
contoh20.ide berikut ini
akan menunjukan cara
menyembunyikan pointer
mouse.
Program
contoh20.cpp menambahkan satu
fungsi baru, yaitu
fungsi hideMouse
1.
Deteksi mouse, jika mouse tidak siap digunakan maka pesan bahwa mouse
tidak siap digunakan ditampilkan. Kemudian
program berhenti secara
otomatis setelah jeda
lima
detik.
2.
Jika mouse terdeteksi, maka pointer mouse akan ditampilkan. Setelah jeda
selama tujuh
detik pointer mouse akan disembunyikan.
Setelah itu program berhenti secara otomatis
setelah jeda lima detik.
Contoh
21
Untuk mempraktekkan prosedur
mengaktifkan dan menonaktifkan mouse, pelajari
kode program project contoh21.
Pada
program contoh21.cpp diatas,
fungsi enableMouse digunakan
untuk mengaktifkan driver mouse dan fungsi disableMouse digunakan untuk
menonaktifkan driver mouse. Perbedaan
fungsi enableMouse dengan
fungsi disableMouse yang
telah dibuat adalah fungsi
disableMouse mengembalikan nilai
unsigned character yang
menunjukan apakah interupsi berhasil
dilakukan atau gagal,
sedangkan fungsi enableMouse
tidak mengembalikan nilai apapun.
Contoh
22
Dari prosedur yang telah dijelaskan
diatas, dapat disimpulkan bahwa interupsi 33 heksadesimal servis
3 selain dapat
digunakan untuk mengetahui
posisi koordinat pointer mouse, juga dapat digunakan untuk
mengetahui status penekanan tombol mouse. Berikut ini adalah contoh
program untuk mempraktekan
interupsi 33 heksadesimal
servis 3.
Pada program contoh22.cpp, fungsi
getMousePos menerima tiga parameter,
yaitu row, col dan
btn yang dikirimkan
secara referensi. Parameter
row dan col
yang bertipe unsigned integer
digunakan untuk menyimpan
posisi baris dan
kolom pointer mouse, sedangkan parameter
btn yang bertipe
unsigned character digunakan
untuk mengetahui apakah tombol
kiri atau kanan ditekan. Perhatikanlah baris
49! Pada baris 49, variabel baris
dan kolom dibagi dengan 8 setelah fungsi getMousePos dijalankan karena nilai
baris yang dikembalikan akan berkisar dari 0 s.d 479 dan nilai kolom yang
dikembalikan berkisar antara 0 s.d 639. Berikut ini adalah alur program
contoh22.cpp:
1.
Deteksi mouse. Jika mouse tidak siap digunakan maka program dihentikan.
2.
Jika mouse siap digunakan maka lakukan perulangan terus-menerus untuk
memeriksa
koordinat pointer mouse.
3.
Tampilkan posisi baris dan kolom pointer mouse.
4.
Periksa apakah tombol
kanan mouse diklik.
Jika tombol kanan
mouse diklik maka
hentikan perulangan dan program selesai.
Contoh
23
Berikut
ini adalah contoh
program untuk mempraktekkan
interupsi 33
heksadesimal servis
4.
Fungsi
setMousePos pada program
contoh23.cpp diatas digunakan
untuk memindahkan pointer mouse. Fungsi setMousePos menerima parameter
row dan col yang bertipe unsigned
integer yang dikrimkan
secara nilai. Parameter
row digunakan untuk menentukan posisi
vertikal pointer mouse,
sedangkan parameter col
digunakan untuk menentukan posisi
horizontal mouse. Program contoh23.cpp baru berhenti ketika pengguna menekan
tombol kiri mouse.
Contoh
24
Untuk
mempraktekkan teori yang
telah dijelaskan diatas,
project contoh24.ide berikut ini
memberikan contoh membatasi
posisi vertikal pointer
mouse antara baris
10 sampai 15 dan
posisi horizontal antara
kolom 30 sampai
60.
Pada
program contoh24.cpp fungsi
yang digunakan untuk
membatasi koodinat posisi mouse
adalah fungsi setMouseRegion. Fungsi
setMouseRegion menerima empat parameter bertipe
unsigned integer yang
dikirimkan secara nilai.
Parameter y1 dan y2
digunakan untuk menentukan
batas vertikal, sedangkan
parameter x1 dan
x2 digunakan untuk menentukan
batas horizontal.
Contoh 25
Berikut
ini adalah contoh
program untuk memberikan
contoh cara menggunakan interupsi 33
heksadesimal servis 5.
Fungsi
getButtonClick pada program
contoh25.cpp digunakan untuk
mendeteksi penekanan tombol sebanyak beberapa kali. Parameter btn yang
bertipe unsigned character digunakan
untuk menentukan tombol
mouse (tombol kiri
atau kanan) yang
akan dibatasi penekanannya. Parameter
col dan row
bertipe unsigned integer
yang dikirimkan secara referensi digunakan untuk mengetahui posisi baris dan kolom
pointer mouse ketika tombol mouse
terakhir kali ditekan.
Parameter maxclick bertipe
unsigned integer digunakan
untuk menentukan banyak penekanan tombol mouse.