Prosedur dan Makro
Prosedur Bentuk pemrograman terstruktur Ada dalam berbagai bahasa pemrograman Keyword : PROC, NEAR, FAR, RET, ENDP Fungsi : menyederhanakan pelaksanaan proses yang berulang-ulang sehingga mengefisienkan space program yang tersedia, dan memudahkan pelacakan kesalahan
Prosedur Bentuk : NamaP PROC NEAR/FAR isi prosedur RET NamaP ENDP NamaP : nama prosedur, sebaiknya mencerminkan apa yang dilakukan oleh prosedur tersebut PROC : keyword yang menyatakan sebuah prosedur NEAR / FAR : scope pemanggilan prosedur RET : prosedur harus kembali ke program utama ENDP : akhir deklarasi pembuatan prosedur Prosedur dalam bahasa mesin tidak dapat memakai paramater secara langsung, harus menggunakan register ataupun stack
NEAR / FAR ? NEAR : Prosedur hanya dapat dipanggil dalam satu segmen saja Pada saat RET, register IP akan di-POP sebagai alamat loncatan kembali ke program pemanggil Untuk program COM maupun EXE FEAR : Prosedur dapat dipanggil dalam satu segmen maupun dalam segmen yang berbeda Pada saat RET, register IP+CS akan di-POP sebagai alamat loncatan kembali ke program pemanggil Untuk program EXE
Pemanggilan Prosedur Menggunakan CALL Sintak : CALL NamaP Mengambil IP jika NEAR atau IP+CS jika FAR
Prosedur dan Stack Prosedur mengubah isi register Isi register harus diamankan sebelum dan sesudah pemanggilan prosedur Menjaga konsistensi status terakhir register pada program pemanggil Menggunakan PUSH dan POP
Macro Bentuk lain pemrograman terstrukstur untuk bahasa mesin Dapat memakai parameter Pemanggilan tidak memerlukan CALL Template program Lebih mudah dibuat daripada prosedur Keyword : MACRO, ENDM
Macro Bentuk : NamaM MACRO P1, P2, P3, … NamaM : Nama macro isi macro ENDM NamaM : Nama macro MACRO : penanda awal macro P1, P2, P3 : parameter macro (opsional) ENDM : penanda akhir macro
Proses Eksekusi Macro Macro dipanggil dengan menuliskan nama macro dan parameter yang diperlukan Program mengkopi isi macro ke baris program utama, dan mengkompile-nya Pemanggilan macro banyak => space program terpakai semakin besar Macro tidak melakukan lompatan => lebih cepat daripada prosedur
Label pada Macro Label menunjukkan tempat loncatan Label dalam program mesin tidak boleh sama(dalam satu program hanya boleh ada 1 label) => Error : symbol already used elsewhere LOCAL : Membuat sebuah label akan dibedakan jika terjadi pelabelan yang sama Sintak : LOCAL NamaLabel
Pustaka Macro Menyederhanakan penulisan macro agar tidak berulang-ulang Bentuk berupa file ASCII(editable) Penyertaan ke program utama menggunakan sintak : INCLUDE NamaFilePustakaMacro Contoh : INCLUDE macku.mcr File pustaka macro harus satu folder dengan program utama
Prosedur atau Macro Prosedur Macro Tidak memperbesar ukuran program Harus menggunakan CALL dan RET Tidak menggunakan CALL dan RET Memperlambat kerja program karena harus melompat Tidak memperlambat kerja program karena tidak ada lompatan Tidak dapat menggunakan parameter langsung, harus menggunakan register atau stack Dapat menggunakan parameter secara langsung Lebih kompleks Mudah dibuat
Prosedur atau Macro Macro : Prosedur : Fungsi jarang dipergunakan dalam program Fungsi kecil/tidak terlalu kompleks Prosedur : Fungsi sering dipergunakan dalam program Fungsi besar/kompleks