CONTOH CPP 4
CONTOH CPP 4
#include <conio.h>
#include <dos.h>
#include <stdio.h>
#include <stdlib.h>
#define VIDEO_INT 0x10 // Nomor interupsi 10h
#define UCHAR unsigned char
void setMode(UCHAR mode); // Deklarasi fungsi untuk
// mengubah mode video
int main(void)
{
printf("Tekan ALT untuk mengubah mode...\n");
getch();
setMode(0x01); // Ubah mode video
printf("Mode 01 heksadesimal.\n"); // Informasi
printf("Tekan CTRL kembali ke mode normal...");
getch();
setMode(0x03); // Kembali ke mode normal
printf("Mode normal\n");
getch();
return EXIT_SUCCESS;
}
void setMode(UCHAR mode)
{
asm mov ah, 0x00; // Register AH = 0
asm mov al, mode; // Register AL = mode
asm or al, 0x80; // OR-kan dengan 80 heksadesimal
asm int VIDEO_INT; // Lakukan interupsi
return;
}
#include <conio.h>
#include <dos.h>
#include <stdio.h>
#include <stdlib.h>
#define VIDEO_INT 0x10 // Nomor interupsi 10h
#define UCHAR unsigned char
void setMode(UCHAR mode); // Deklarasi fungsi untuk
// mengubah mode video
int main(void)
{
printf("Tekan ALT untuk mengubah mode...\n");
getch();
setMode(0x01); // Ubah mode video
printf("Mode 01 heksadesimal.\n"); // Informasi
printf("Tekan CTRL kembali ke mode normal...");
getch();
setMode(0x03); // Kembali ke mode normal
printf("Mode normal\n");
getch();
return EXIT_SUCCESS;
}
void setMode(UCHAR mode)
{
asm mov ah, 0x00; // Register AH = 0
asm mov al, mode; // Register AL = mode
asm or al, 0x80; // OR-kan dengan 80 heksadesimal
asm int VIDEO_INT; // Lakukan interupsi
return;
}
Pada contoh 03.cpp, setiap terjadi pergantian
mode video akan selalu menimbulkan efek clear screen. Bagaimana
cara menghilangkan efek clear screen ini? Jawabnya adalah dengan menset bit
ke-7 pada register AL menjadi 1. Berikut ini adalah contoh yang sama seperti
pada contoh03.cpp, namun bit ke-7 pada register AL akan diset menjadi 1 dan
menggunakan teknik inline assembly.
Contoh 04.cpp:
Komentar
Posting Komentar