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.
Contoh 07.cpp:
#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("
DODY FAIZAL ", 0x9f); //Warna Dasar Biru
getCursorPos(&baris,
&kolom);
setCursorPos(baris,
++kolom);
writeChar('<',
0x1f); // Cetak karakter <
setCursorPos(baris,
++kolom); // Pindahkan kursor
getch();
return
EXIT_SUCCESS;
}
void
getCursorPos(UCHAR *y, UCHAR *x) // Baca posisi
{ // kursor
UCHAR row,
col;
asm mov ah,
0x03; // Register AH = 3 heksadesimal
asm mov bh,
0x00; // Register BH = 0 heksadesimal
asm int
VIDEO_INT; // Lakukan interupsi
asm mov row,
dh; // Salin register DH ke row
asm mov col,
dl; // Salin register DL ke col
*y = row; *x
= col; // Salin row ke y, col ke x
return;
}
void
setCursorPos(UCHAR y, UCHAR x) // Memindahkan
{ // Posisi
kursor
asm mov ah,
0x02; // Register AH = 3 heksadesimal
asm mov bh,
0x00; // Register BH = 0 heksadesimal
asm mov dh,
y; // Register DH = letak baris
asm mov dl,
x; // Register DL = letak kolom
asm int
VIDEO_INT; // Lakukan interupsi
return;
}
void
writeChar(UCHAR letter, UCHAR attr) // Mencetak
{ // huruf
asm mov ah,
0x09; // Register AH = 9 heksadesimal
asm mov al,
letter; // Register AL = hurufnya
asm mov bh,
0x00; // Register BH = 0 heksadesimal
asm mov bl,
attr; // Register BL = warna huruf
asm mov ch,
0x00; // Register CH dan CL menentukan
asm mov cl,
0x01; // banyak pencetakan
asm int
VIDEO_INT; // Lakukan interupsi
return;
}
void
writeString(UCHAR *str, UCHAR attr) // Mencetak
{ // string
UCHAR x, y;
getCursorPos(&y,
&x); // Simpan posisi kursor
for (; *str
!= '\0'; str++) // Loop sampai ditemukan
{ // NULL
if (x >
79)
{ // Jika
sudah sampai kolom
y++; x = 0;
// ke-80, pindah baris dan
} // pindah
ke kolom ke-1
setCursorPos(y,
x++); // Pindahkan posisi kursor
writeChar(*str,
attr); // Cetak per karakter
}
return;
}
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.

0 komentar:
Posting Komentar