Rabu, 03 Mei 2017

CONTOH SCREEN CPP.11

BAB III
Input Menggunakan Keyboard


3.1. Interupsi BIOS untuk Input Melalui Keyboard

Keyboard atau papan ketik merupakan alat input utama pada sebuah PC. Umumnya
seseorang yang sedang mempelajari bahasa pemrograman C/C++ akan memanfaatkan fungsifungsi
standar
seperti
scanf,

getch, getchar, getche, gets dan cin untuk bisa melakukan input
melalui keyboard, maka pada bab ini akan dipelajari bagaimana fungsi-fungsi tersebut bekerja.

BIOS menyediakan sebuah nomor interupsi khusus yang digunakan untuk melakukan
input melalui keyboard, yaitu interupsi 16 heksadesimal. Operasi-operasi pada keyboard dapat
ditentukan melalui nomor service yang disimpan pada register AH.

3.2. Memasukan Satu Karakter dan Mendeteksi Penekanan Tombol Extended

Interupsi 16 heksadesimal servis 0 heksadesimal adalah nomor interupsi yang dapat
digunakan untuk melakukan input satu karakter melalui keyboard. Fungsi standar getch,
getchar, dan getche memanfaatkan interupsi ini. Berikut ini adalah prosedur yang harus
dilakukan untuk melakukan interupsi 16 heksadesimal servis 0 heksadesimal:

& Register AH harus bernilai 0.
& Jalankan interupsi 16 heksadesimal.

Setelah Interupsi dijalankan maka:

& Register AH akan berisi dengan kode scan papan ketik.
& Register AL berisi kode ASCII dari karakter yang diketikan atau bernilai 0 jika tombol
keyboard yang ditekan adalah tombol extended.

Dari penjelasan diatas, ada beberapa hal lagi yang harus lebih diperjelas. Karakter yang
diketikan melalui keyboard tidak akan ditampilkan pada layar monitor dan posisi kursor tidak
akan berpindah. Tombol keyboard yang diketikan dapat diketahui nilainya pada register AL, jika
register AL bernilai nol, maka dapat disimpulkan bahwa tombol keyboard yang ditekan adalah
tombol extended (tombol-tombol khusus).

Tombol extended atau tombol khusus adalah tombol yang disediakan untuk maksud-
maksud tertentu dari sebuah program. Contoh tombol-tombol khusus adalah tombol CTRL, ALT,
SHIFT, INS, F1, F2 dan sebagainya. Untuk mengetahui tombol khusus apa yang ditekan ketika
register AL bernilai nol, dapat diketahui dari nilai yang disimpan pada register AH. Nilai pada
register AH adalah keyboard scan code yang memberitahukan tombol khusus apa yang ditekan.

Berikut ini adalah contoh program yang menunjukan cara melakukan input satu karakter
menggunakan interupsi 16 heksadesimal servis 0 yang ditulis dengan teknik inline assembly
dan memanfaatkan pustaka class screen.cpp yang telah dibuat pada bab sebelumnya. Buatlah
sebuah project seperti yang dilakukan pada bab-bab sebelumnya, simpan project tersebut
dengan nama file contoh11.ide dengan file kode program contoh11.cpp pada direktori yang
sama dengan file screen.cpp

CONTOH SCREEN CPP.11

#include <stdlib.h>
#include "screen.cpp"
#define KEY_INT 0x16    /* Nomor interupsi keyboard */

UCHAR getKey(void);

int main(void)
{
   Screen *layar = new Screen();
   UCHAR karakter;

   layar->setMode(0x03);
   layar->setCursorPos(4, 14);
   layar->setAttribute(0x2f);//huruf putih latar hijau
   layar->writeString("Input satu karakter:");
   layar->setCursorPos(4, 35);
   layar->setAttribute(0xe5);//huruf ungu latar kuning
   karakter = getKey();

   layar->setCursorPos(5, 14);
   layar->writeString("Karakter yang anda ketik adalah");
   layar->setCursorPos(5, 46);
   layar->writeChar(karakter);
   layar->setCursorPos(6, 14);
   layar->writeString("Tekan sembarang tombol ...");

   getKey();

   delete layar;
   return EXIT_SUCCESS;
}

UCHAR getKey(void)
{
UCHAR key;

   asm mov ah, 0x00;  /* Register AH = 0                */
   asm int KEY_INT;   /* Lakukan interupsi              */
   asm mov key, al;   /* Salin nilai register AH ke key */

   return key;
}







0 komentar:

Posting Komentar

Template by:

Free Blog Templates