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.
berikut kode programnya:
#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->writeString("Input satu karakter:");
layar->setCursorPos(4, 34);
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;
}
hasil outputnya adalah:
Pada kode program contoh diatas fungsi getKey adalah fungsi yang digunakan untuk input satu karakter. Fungsi getKey tidak memerlukan parameter dan mengembalikan nilai bertipe unsigned character (didefinisikan dalam file screen.cpp sebagi UCHAR). Nilai yang dikembalikan oleh fungsi ini adalah karakter yang diketikan pada tombol keyboard. Fungsi ini sama dengan fungsi standar getch.
berikut kode programnya:
#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->writeString("Input satu karakter:");
layar->setCursorPos(4, 34);
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;
}
hasil outputnya adalah:
Pada kode program contoh diatas fungsi getKey adalah fungsi yang digunakan untuk input satu karakter. Fungsi getKey tidak memerlukan parameter dan mengembalikan nilai bertipe unsigned character (didefinisikan dalam file screen.cpp sebagi UCHAR). Nilai yang dikembalikan oleh fungsi ini adalah karakter yang diketikan pada tombol keyboard. Fungsi ini sama dengan fungsi standar getch.
cara mendeteksi penekanan tombol-tombol extended.
kode programnya adalah;
hasil outputnya adalah;
Pada kode program contoh diatas fungsi getSpecialKey adalah fungsi yang digunakan untuk mendeteksi penekanan tombol-tombol khusus. Perhatikanlah pada baris kelima sampai baris kedelapan, karena setiap tombol khusus memiliki kode tersendiri maka pada baris kelima sampai kedelapan dideklarasikan konstanta untuk tombol F1 sampai F4. Kode scan untuk tombol F1 adalah 3b heksadesimal, F2 adalah 3c heksadesimal, dan seterusnya. Bandingkanlah kode program contoh11.cpp dengan kode program contoh diatas pada fungsi getKey dan getSpecialKey. Pada fungsi getKey nilai yang dijadikan sebagai nilai kembali fungsi (return value) adalah nilai yang tersimpan di register AL, sedangkan pada fungsi getSpecialKey nilai yang dikembalikan adalah nilai yang tersimpan di register AL.
0 komentar:
Posting Komentar