Procedure
Procedure???? Procedure merupakan suatu alat bantu yang sangat berguna. Dengan procedure, suatu program yang besar dapat disusun secara terstruktur sehingga masalah bisa diselesaikan dengan lebih mudah. Fungsi dalam C Proses pencarian kesalahan pun akan lebih mudah bila digunakan procedure.
Penulisan Procedure
NEAR vs FAR Dibelakang kata "PROC" anda harus memilih bentuk dari procedure tersebut, yaitu "NEAR" atau "FAR". Bentuk "NEAR" digunakan jika procedure tersebut nantinya dipanggil oleh program yang letaknya masih satu segment dari procedure tersebut. Pada program COM yang terdiri atas satu segment, kita akan selalu menggunakan bentuk "NEAR". Sebaliknya bentuk "FAR" ini digunakan bila procedure dapat dipanggil dari segment lain. Bentuk ini akan kita gunakan pada program EXE.
CALL - RET Perintah "RET(Return)" digunakan untuk mengembalikan Kontrol program pada sipemanggil procedure. Pada bentuk NEAR perintah RET ini akan memPOP atau mengambil register IP dari stack sebagai alamat loncatan menuju program pemanggil procedure. Sedangkan pada bentuk "FAR" perintah RET akan mengambil register IP dan CS dari stack sebagai alamat loncatan menuju program pemanggil procedure. Alamat kembali untuk procedure disimpan pada stack pada saat procedure tersebut dipanggil dengan perintah "CALL", dengan syntax: CALL NamaP Perintah Call ini akan menyimpan register IP saja bila procedure yang dipanggil berbentuk "NEAR". Bila procedure yang dipanggil berbentuk "FAR", maka perintah "CALL" akan menyimpan register CS dan IP.
.MODEL SMALL.CODE ORG 100h Proses : CALL Cetak_Kar ; Panggil Cetak_Kar INT 20h Cetak_Kar PROC NEAR MOV AH,02h MOV DL,'S' INT 21h ; Cetak karakter RET ; Kembali kepada si pemanggil Cetak_Kar ENDP ; END Procedures END Proses
Penjelasan "NamaP" adalah nama dari procedure yang kita definisikan sendiri. Untuk memudahkan nama untuk procedure bisa anda definisikan sesuai dengan fungsi dari procedure tersebut, seperti CLS untuk procedure yang tugasnya menghapus layar.
.MODEL SMALL.CODE ORG 100h Data: JMP Proses Pesan DB 'ABCDXYZ' Panjang DB 7 Proses : XOR CH,CH MOV CL, Panjang; MOV CL, LENGTHOF Pesan LEA SI, Pesan; MOV SI, OFFSET Pesan Cetak: MOV DL, [SI] INC SI CALL Cetak_Kar ; Panggil Cetak_Kar LOOP Cetak INT 20h Cetak_Kar PROC NEAR MOV AH,02h INT 21h ; Cetak karakter RET ; Kembali kepada si pemanggil Cetak_Kar ENDP ; END Procedures END Proses