A. Menampilkan Karakter dan
Memindahkan Posisi Kursor
Program
contoh01.cpp dan dan contoh02.cpp pada bab 1 merupakan contoh program untuk
menampilkan karakter/huruf pada layar monitor. Pada sub bab ini akan dibahas
cara menampilkan karakter menggunakan interupsi 10 heksadesimal servis 09
heksadesimal secara lebih mendalam. Untuk lebih jelasnya, berikut ini adalah
prosedur untuk menjalankan interupsi 10 heksadesimal servis 09 heksadesimal:
Register AH berisi nilai 9
heksadesimal.
Register AL berisi kode ASCII
dari huruf/karakter yang akan dicetak.
Register BH berisi halaman
layar, halaman pertama nilainya 0.
Register BL berisi nilai warna
huruf/karakter (warna asal adalah 7).
Register CH dan CL menentukan
banyaknya karakter pada AL akan dicetak.
Permasalahan mencetak karakter
menggunakan interupsi 10 heksadesimal servis 09 heksadesimal adalah setelah
karakter ditampilkan dilayar, posisi kursor tidak berpindah ke kolom
berikutnya. Akibatnya adalah ketika karakter berikutnya akan ditampilkan maka
karakter yang sebelumnya akan tertimpa dengan karakter yang baru. Solusi untuk
mengatasi permasalahan ini adalah sebelum karakter ditampilkan kita harus
mengetahui posisi kursor, kemudian mencetak karakter tersebut dan mengubah posisi
kursor setelah karakter dicetak. Untuk melakukan hal tersebut maka kita harus
tahu cara mengetahui posisi kursor dan cara memindahkan posisi kursor.
Untuk mengetahui posisi kursor
dapat menggunakan interupsi 10 heksadesimal servis 03 heksadesimal. Berikut ini
adalah prosedur untuk menjalakan interupsi 10 heksadesimal servis 03
heksadesimal:
Register AH harus bernilai 3
heksadesimal.
Register BH berisi nomor
halaman tampilan, halaman pertama nilainya 0.
Setelah interupsi dilakukan maka
register DH berisi nomor baris dan register DL berisi nomor kolom. Sedangkan
untuk memindahkan posisi kursor adalah dengan menggunakan interupsi 10
heksadesimal servis 02 heksadesimal. Berikut ini adalah prosedurnya:
Register AH harus bernilai 2
heksadesimal.
Register BH berisi nomor
halaman tampilan, halaman pertama nilainya 0.
Register DH berisi nomor baris
(dimulai dari 0 sampai 24).
Register DL berisi nomor kolom
(dimulai dari 0 sampai batas akhir dikurangi 1).
Berikut ini adalah contoh program
untuk menampilkan huruf A dan Z dengan warna dasar biru dan warna huruf putih.
Simpan project berikut ini dengan nama file contoh06.ide dan nama file kode
program contoh06.cpp:
Contoh
6:
#include <conio.h>
#include <dos.h>
#include <stdlib.h>
#define VIDEO_INT 0x10
#define UCHAR unsigned char
void getCursorPos(UCHAR *y, UCHAR *x);
void setCursorPos(UCHAR
y, UCHAR x);
void writeChar(UCHAR
letter, UCHAR attr);
int main(void)
{
UCHAR baris, kolom;
getCursorPos(&baris,
&kolom); // Baca posisi kursur
writeChar('A', 0x1f);
// Cetak huruf A
setCursorPos(baris,
++kolom); // Pindahkan kursor
writeChar('Z', 0x1f);
// Cetak huruf Z
setCursorPos(baris,
++kolom); // Pindahkan kursor
getch();
return EXIT_SUCCESS;
}
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 getCursorPos hampir mirip dengan fungsi wherex dan wherey milik
Borland C++ atau Turbo Pascal, sedangkan fungsi setCursorPos hampir mirip
dengan fungsi gotoxy.
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).
Fungsi ini tidak mengubah posisi kursor, oleh karena itu sesudah pemanggilan
fungsi, untuk memindahkan posisi kursor digunakan fungsi setCursorPos.
Conto 7:
#include <conio.h>
#include <dos.h>
#include <stdlib.h>
#define VIDEO_INT 0x10
#define UCHAR unsigned char
void getCursorPos(UCHAR *y, UCHAR *x);
void setCursorPos(UCHAR y, UCHAR x);
void writeChar(UCHAR letter, UCHAR attr);
void writeString(UCHAR *str, UCHAR attr);
int main(void)
{
UCHAR baris, kolom;
getCursorPos(&baris, &kolom); // Baca posisi kursor
writeChar('>', 0x1f); // Cetak karakter >
setCursorPos(baris, ++kolom); // Pindahkan kursor
writeString(” Mencetak String “, 0x4f);
getCursorPos(&baris, &kolom);
setCursorPos(baris, ++kolom);
Program contoh07.cpp merupakan
pengembangan dari program contoh06.cpp. Pada program contoh07.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.


Tidak ada komentar:
Posting Komentar