Assalamu'alaikum
Oh ya, sebelum memulai membuat program residen, boleh lah kita baca dulu bagian-bagian ini ya...
VEKTOR INTERUPSI
Seperti yang telah dikatakan, setiap interupsi menggunakan 4 byte memory sebagai alamat awal interupsi, yaitu alamat yang akan dituju setiap terjadi interupsi. Keempat byte ini dicatat pada Interrupt Vektor Table yang terdapat pada memory rendah, 0000:0000 sampai 0000:03FFh. Dengan demikian, interupsi 00 akan menggunakan alamat 0000:0000-0000:0003, interupsi 01 akan menggunakan alamat 0000:0004-0000:0007, dan seterusnya. Untuk mencari alamat awal dari suatu nomor interupsi digunakan rumus:
Alamat Awal = 4 * Nomor-Interupsi
Sebagai contohnya, setiap kali kita menekan tombol PrtScr untuk mencetak isi layar pada printer akan selalu terjadi interupsi 05. Komputer kemudian akan menuju alamat awal interupsi 05, yaitu 0000:0020 (4*05=20). Dari alamat awal ini kemudian akan dilihat isi dari keempat byte, yaitu pada alamat 0000:0020 - 0000:0023. Keempat byte ini mencatat alamat CS(2 byte) dan IP(2 byte), yaitu alamat yang akan dituju oleh komputer selanjutnya. Misalkan isi dari keempat byte ini adalah 3200h:0D8Bh, artinya komputer akan melompat pada alamat tersebut dan menjalankan program yang terdapat pada alamat tersebut sampai bertemu dengan perintah IRET.
Program inilah yang disebut sebagai Interrupt Handler 05, yaitu program yang akan dilaksanakan setiap kali terjadi interupsi 05. Secara default program yang akan dilaksanakan terdapat pada BIOS, dimana program tersebut akan mencetak tampilan pada layar ke printer
MENDAPATKAN ALAMAT VEKTOR INTERUPSI
Untuk melihat isi dari alamat awal suatu vektor interupsi dapat digunakan dua cara. Cara pertama, adalah dengan membaca secara langsung keempat byte alamat awal yang mencatat alamat berturut-turut Offset Lo, Offset Hi, Segment Lo dan Segment Hi dari interrupt handler. Cara kedua adalah dengan menggunakan interupsi 21h fungsi 35h. Cara kedua lebih mudah untuk digunakan, oleh sebab itu akan kita gunakan pada program-program selanjutnya.
Untuk menggunakan fungsi ke 35h ini, isilah AH dengan 35h dan AL dengan nomor vektor interupsi sebelum dilaksanakan interupsi 21h. Hasil dariinterupsi ini akan disimpan pada pasangan register ES:BX. Dimana ES mencatat alamat segment dan BX mencatat alamat offset vektor interupsi dari nomor interupsi yang dimasukkan pada AL.
Ambil_Vec MACRO NoInt,Alamat
MOV AH,35h ; Servis untuk mencari vektor
MOV AL,NoInt ; No inteurpsi
INT 21h ; Laksanakan
MOV Alamat,BX ; Offset
MOV Alamat[2],ES ; Segment
ENDM
Untuk menggunakan macro ini anda bisa menyediakan suatu varibael 2 word untuk menampung alamat hasil dari interupsi ini, seperti: Alamat DW ?,?.
Mengganti fungsi PrtScr menjadi Ctrl+Break
Pada postingan sebelumnya, pada win 7, kita bisa langsung membuat programnya dengan command prompt, dan untuk win 8, kita menggunakan dosbox. Namun untuk program kali ini hanya bisa di jalankan dengan menggunakan dosbox.
1. Buka dosbox, lalu ketiklah edit
2.Maka akan muncul layar biru, pada layar biru tersebut ketiklah seperti berikut (saya menscreenshoot saya membukanya dengan notepad++)