Minggu, 07 Desember 2014

Mengganti Fungsi PrtScr Menjadi Ctrl+Break (Residen)

Assalamu'alaikum
Jika ingin mendownload program ini silakan klik Program Residen
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++)
3. Jika sudah di ketik pada layar, simpanlah dengan file .ASM 
4. Pilih file> exit untuk kembali ke layar hitam 
5. Ketiklah seperti di bawah
6. Jika sudah, buka kembali file rontok.asm yang sudah kita buat sebelumnya, jika belum membuatnya, lihat postingan saya tentang Membuat Program Rontok
 
Ketika kita sedang menjalankan program rontok tersebut, lalu kita menekan pause break, maka program tersebut tidak akan berhenti, tetapi jika kita menekan ctrl+prtsc, maka program tersebut akan berhenti/pause

Nah, sekian dulu ya
Wassalamu'alaikum ...

0 komentar:

Posting Komentar