Pages

MENCETAK PROGRAM RESIDENCE

Minggu, 14 Desember 2014
1. Sebelum kita membuat program tulisan rontok ke samping kiri, silahkan download terlebih dahulu program TASM, TLINK dan RTM. Jika belum punya silahkan download pada halaman Install Program Assembly. Masukkan program tersebut ke dalam folder yang telah kita buat sebelumnya.
2. Jika sudah, sekarang kita akan memulai membuat program tulisan rontok ke samping kiri.
3. Bukalah tampilan command prompt terlebih dahulu dengan cara klik start -> run -> cmd. Maka tampilan akan keluar seperti ini.



 4. Sekarang kita akan masuk ke dalam folder tasm, tlink, dan rtm yang telah kita buat tadi. Lalu kita akan masuk kedalam tampilan menu edit pada command prompt. Caranya sebagai berikut.
5. Lalu tekan enter setelah tulisan edit. Maka akan tampil seperti ini.
6. Selanjutnya kita akan menginput tulisan program residence merubah vektor interupsi tersebut pada menu edit ini. Caranya sebagai berikut.
Berikut kode program residence
.MODEL SMALL
.CODE
ORG 100h
TData : JMP Res_kan
Pesan DB ' Interupsi 5<PrtScr> telah di belokkan !! '
NoInt EQU 05h
Bag_Res PROC
PUSH AX ;
PUSH BX ;
PUSH CX ;
PUSH DX ;
PUSH ES ; Simpan isi semua register
PUSH DI ;
PUSH DS ;
PUSH SI ;
MOV AX,1300h ;
MOV BL,01001111b ;
MOV BH,00 ;
MOV DL,20 ;
MOV DH,12 ; Program interupt handler PrtScr
MOV CX,44 ; yang baru.
PUSH CS ;
POP ES ;
LEA BP,Pesan ;
INT 10h ;
POP SI ;
POP DS ;
POP DI ;
POP ES ;
POP DX ; Kembalikan isi semua register
POP CX ;
POP BX ;
POP AX ;
IRET ; Akhir dari interupt handler
Bag_Res ENDP
Res_Kan :
MOV AH,25h ;
MOV AL,NoInt ; Untuk merubah vektor interupsi
LEA DX,Bag_Res ; 05 menuju 'Bag_Res'
INT 21h ;
LEA DX,Res_Kan ;
INT 27h ; Untuk meresidenkan bagian
END TData ; "Bag_Res"

 Sesudah memasukan kode program atau coding, save as file nya dengan format (.ASM)
 7. Kemudian kita akan melakukan testing pada program dosbox. Kalo belum punya silahkan download terlebih dahulu lalu langsung di install. Jika sudah maka kita akan menginput tulisan sebagai berikut untuk mencoba program residence tersebut. Dengan cara sebagai berikut.
Bila program 24.2. dijalankan, maka tombol PrtScr sudah tidak akan berfungsi lagi. Setiap kali tombol PrtScr ditekan, pada posisi 20,12 akan ditampilkan pesan:
Interupsi 5<PrtScr> telah di belokkan !!
Perhatikanlah, bahwa pada program ini terdapat 2 bagian pokok, yaitu bagian yang residen dan bagian yang meresidenkan. Bagian yang meresidenkan hanya dijalankan sekali, sedangkan bagian yang residen akan dijalankan setiap kali terjadi penekanan tombol PrtScr. Bagian yang meresidenkan adalah:
Res_Kan :
MOV AH,25h ;
MOV AL,NoInt ; Untuk merubah vektor interupsi
LEA DX,Bag_Res ; 05 menuju 'Bag_Res'
INT 21h ;
LEA DX,Res_Kan ;
INT 27h ; Untuk meresidenkan bagian
END TData ; "Bag_Res"
Bagian ini tugasnya meresidenkan bagian Bag_Res. Sebelum bagian Bag_Res diresidenkan, vektor interupsi PrtScr(05) diubah menuju progam Bag_Res. Bila anda hanya merubah interupsi PrtScr menuju program Bag_Res tanpa diresidenkan, maka akan menyebabkan komputer anda menjadi hang, mengapa? Walaupun vektor interupsi tetap menunjuk pada lokasi atau alamat yang sama, tetapi tempat yang digunakan program kita telah diserahkan kepada Dos untuk digunakan oleh aplikasi lain.
Bag_Res PROC
PUSH AX ;
PUSH BX ;
PUSH CX ;
PUSH DX ;
PUSH ES ; Simpan isi semua register
PUSH DI ;
PUSH DS ;
PUSH SI ;
Ini adalah awal dari bagian yang residen. Simpanlah semua nilai register pada awal program residen untuk mencegah terganggunya program lain yang sedang berjalan pada saat tombol PrtScr ditekan.
MOV AX,1300h ;
MOV BL,01001111b ;
MOV BH,00 ;
MOV DL,20 ;
MOV DH,12 ; Program interupt handler PrtScr
MOV CX,44 ; yang baru.
PUSH CS ;
POP ES ;
LEA BP,Pesan ;
INT 10h ;
Bagian ini dapat dikatakan sebagai handler baru bagi interupsi PrtScr. Tombol PrtScr yang biasanya mencetak tampilan layar pada printer akan berubah menjadi mencetak pesan pada layar. dengan demikian anda bisa membuat handler baru yang akan melakukan sesuatu setiap kali terjadi penekanan tombol PrtScr.
Perhatikanlah! :
untuk mencetak pesan pada layar digunakan interupsi 10h, dan bukannya interupsi Dos fungsi 09 yang biasanya kita gunakan. Mengapa demikian ? Sebagian besar Interupsi Dos tidak bisa digunakan pada program residen, karena sifat dari Dos yang tidak reentrant. Masalah ini akan kita bicarakan lebih lanjut nantinya.
POP SI ;
POP DS ;
POP DI ;
POP ES ;
POP DX ; Kembalikan isi semua register
POP CX ;
POP BX ;
POP AX ;
IRET ; Akhir dari interupt handler
Bag_Res ENDP
Pada akhir program residen, kembalikanlah nilai semua register yang disimpan, disertai perintah IRET(Interrupt Return). Perintah IRET akan mengambil alamat CS dan IP serta nilai Flag pada stack untuk kembali menuju program yang diselanya. CS, IP dan nilai flag disimpan pada stack pada saat terjadi interupsi, inilah rahasianya mengapa program dapat berjalan normal kembali setelah mendapat interupsi.
Inilah tutorial bagaimana cara mencetak program residence.

Tidak ada komentar:

Posting Komentar