Contoh 6
Contoh cpp 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 kursor
writeChar('1', 0x4f); // Cetak huruf 1
setCursorPos(baris, ++kolom); // Pindahkan kursor
writeChar('3', 0x6f); // Cetak huruf 3
setCursorPos(baris, ++kolom); // Pindahkan kursor
writeChar('1', 0x7f); // Cetak huruf 1
setCursorPos(baris, ++kolom); // Pindahkan kursor
writeChar('6', 0x2f); // Cetak huruf 6
setCursorPos(baris, ++kolom); // Pindahkan kursor
writeChar('0', 0x3f); // Cetak huruf 0
setCursorPos(baris, ++kolom); // Pindahkan kursor
writeChar('4', 0x10f); // Cetak huruf 4
setCursorPos(baris, ++kolom); // Pindahkan kursor
writeChar('8', 0x9f); // Cetak huruf 8
setCursorPos(baris, ++kolom); // Pindahkan kursor
writeChar('2', 0x11f); // Cetak huruf 2
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;
}
Output
#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 kursor
writeChar('1', 0x4f); // Cetak huruf 1
setCursorPos(baris, ++kolom); // Pindahkan kursor
writeChar('3', 0x6f); // Cetak huruf 3
setCursorPos(baris, ++kolom); // Pindahkan kursor
writeChar('1', 0x7f); // Cetak huruf 1
setCursorPos(baris, ++kolom); // Pindahkan kursor
writeChar('6', 0x2f); // Cetak huruf 6
setCursorPos(baris, ++kolom); // Pindahkan kursor
writeChar('0', 0x3f); // Cetak huruf 0
setCursorPos(baris, ++kolom); // Pindahkan kursor
writeChar('4', 0x10f); // Cetak huruf 4
setCursorPos(baris, ++kolom); // Pindahkan kursor
writeChar('8', 0x9f); // Cetak huruf 8
setCursorPos(baris, ++kolom); // Pindahkan kursor
writeChar('2', 0x11f); // Cetak huruf 2
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;
}
Output
Komentar
Posting Komentar