Contoh 9

Contoh cpp 9

#include <conio.h>
#include <dos.h>
#include <stdio.h>
#include <stdlib.h>

#define VIDEO_INT 0x10
#define UCHAR unsigned char

void setMode(UCHAR mode);
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;
UCHAR pilih;

setMode(3);
setCursorPos(4, 4); writeChar(213, 0x17);
setCursorPos(4, 74); writeChar(184, 0x17);
setCursorPos(20, 4); writeChar(192, 0x17);
setCursorPos(20, 74); writeChar(217, 0x17);

for (baris = 5; baris < 20; baris++)
{
setCursorPos(baris, 4); writeChar(179, 0x17);
setCursorPos(baris, 74); writeChar(179, 0x17);
}

for (kolom = 5; kolom < 74; kolom++)
{
setCursorPos(4, kolom); writeChar(205, 0x17);
setCursorPos(20, kolom); writeChar(196, 0x17);
}
setCursorPos(4, 5); writeChar(181, 0x17);
setCursorPos(4, 6);
writeString("Bingkai dengan ASCII Danu Bradenli 13160482", 0x9f);
setCursorPos(4, 55); writeChar(198, 0x17);
for (baris = 20; baris < 20; baris++)
{
for (kolom = 20; kolom < 74; kolom++)
{
setCursorPos(baris, kolom);
writeChar(0x10, 0x1e);
}

}
setCursorPos(19, 47);
writeString("Akhiri program (Y/T)? [   ]", 0x5e);

for (;;)
{
setCursorPos(19, 71);
pilih = getch();
writeChar(pilih, 0x1e);
if ((pilih == 'Y') || (pilih == 'y'))
break;
}
return EXIT_SUCCESS;
}
void setMode(UCHAR mode)  // Mengubah mode
{                         // tampilan layar
asm mov ah, 0x00;       // Register AH = 0
asm mov al, mode;       // Register AL = mode
asm int VIDEO_INT       // Lakukan interupsi
return;
}
void getCursorPos(UCHAR *y, UCHAR *x)  // Baca posisi 20
{                                   // 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;
}

Output


Komentar