Sabtu, 15 April 2017

Memilih Mode Video (Part. 2)

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. Simpan project berikut dengan nama contoh04.ide dan nama file kode program contoh04.cpp.


contoh04.cpp
1:  #include <conio.h>  
2:  #include <dos.h>  
3:  #include <stdio.h>  
4:  #include <stdlib.h>  
5:    
6:  #define VIDEO_INT 0x10                // Nomor interupsi 10h  
7:  #define UCHAR unsigned char  
8:    
9:  void setMode(UCHAR mode);           // Deklarasi fungsi untuk  
10:                                                    // mengubah mode video  
11:  int main(void)  
12:  {  
13:       printf("Tekan ENTER untuk mengubah mode...\n");  
14:       getch();  
15:    
16:       setMode(0x01);                     // Ubah mode video  
17:       printf("Mode 01 heksadesimal.\n"); // Informasi  
18:       printf("Tekan ENTER kembali ke mode normal...");  
19:       getch();  
20:    
21:       setMode(0x03);                     // Kembali ke mode normal  
22:       printf("Mode normal\n");  
23:       getch();  
24:    
25:       return EXIT_SUCCESS;  
26:  }  
27:    
28:  void setMode(UCHAR mode)  
29:  {  
30:       asm mov ah, 0x00;           // Register AH = 0  
31:       asm mov al, mode;           // Register AL = mode  
32:       asm or al, 0x80;                // OR-kan dengan 80 heksadesimal  
33:       asm int VIDEO_INT;           // Lakukan interupsi  
34:    
35:       return;  
36:  }  

Hasil:


Kedua contoh program sebelumnya digunakan untuk mengubah mode video. Bagaimana jika kita tidak mengetahui mode video yang sedang digunakan? Jawabnya adalah dengan menjalankan interupsi 10 heksadesimal servis 0f heksadesimal. Setelah interupsi ini dijalankan register AH berisi banyaknya kolom, register AL berisi nomor mode video yang digunakan dan register BH berisi nomor halaman tampilan yang digunakan. 

Tidak ada komentar:

Posting Komentar