Project #06 ( Menampilkan Karakter dan Memindahkan Posisi Kursor )
#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;
}
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;
}
Komentar
Posting Komentar