Ingin
mendapatkan tampilan seperti diatas? Ini listingnya:
#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
setCursorPos(5,10);
writeChar(0xc9,
0x1f); // Cetak Character
setCursorPos(5,69);
// Pindahkan kursor
writeChar(0xbb,
0x1f); // Cetak Character
setCursorPos(19,10);
writeChar(0xc8,
0x1f); // Cetak Character
setCursorPos(19,69);
// Pindahkan kursor
writeChar(0xbc,
0x1f); // Cetak Character
for(baris=6;
baris<19; baris++)
{
setCursorPos(baris,10);
writeChar(0xba,
0x1f); // Cetak Character
setCursorPos(baris,69);
// Pindahkan kursor
writeChar(0xba,
0x1f); // Cetak Character
}
for(kolom=11;
kolom<69; kolom++)
{
setCursorPos(5,kolom);
writeChar(0xcd,
0x1f); // Cetak Character
setCursorPos(19,kolom);
// Pindahkan kursor
writeChar(0xcd,
0x1f); // Cetak Character
}
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;
}
Tidak ada komentar:
Posting Komentar