BAGI AN 1 0 M AKRO
BAGI AN 1 0 M AKRO
Macros ham pir m irip prosedur, t et api set idaknya dia hanya ada hingga kode dikom pilasi, set elah kom pilasi dialkukan sem ua m akro akan dig ant i dengan inst ruksi m esin . Jika kit a m endeklarasikan m akro dan t idak pernah m enggunakannya dalam kode, com piler akan m engabaikannya. e m u8 0 8 6 .in c m erupakan cont oh bagaim ana m akro dapat dipakai, file ini berisi beberapa m akro unt uk m em perm udah pengkodean kit a.
Macro definit ion:
name MACRO [parameters,...]
<instructions>
ENDM
Tidak sepert i prosedur m akro harus didefinisikan diat as kode yang akan m em akainya, cont oh :
MyMacro MACRO p1, p2, p3
MOV AX, p1 MOV BX, p2 MOV CX, p3
ENDM
ORG 100h
MyMacro 1, 2, 3
MyMacro 4, 5, DX
RET
Kode diat as diperluas m enj adi:
MOV AX, 00001h MOV BX, 00002h MOV CX, 00003h
MOV AX, 00004h MOV BX, 00005h MOV CX, DX
Pebedaan m a cr os dan pr oce du r e s: • prosedur dipakai dengan inst ruksi CALL, contoh: CALL MyProc • Makro hanya m enuliskan nam anya saja, cont oh: MyMacro • Prosedure terletak pada alam at yang spesifik di m em ori, dan jika kita
m enggunakan procedur e yang sam a sebanyak 100 kali, CPU hanya m ent ransfer cont rol ke bagian m em ori. Kont rol akan dikem balikan dengan inst ruksi RET. St a ck yang digunakan unt uk m enyim pan alam at pengem balian. I nst ruksi CALL m em erlukan set idaknya 3 byt es, j adi ukuran out put execut able file- nya t idak besar ,t idak m asalah seberapa banyak pem anggilan pr osedur dilakukan.
• Macro akan m enam bah secara langsung dalam kode program . Jadi
j ika k it a m em akai 100 kali m akrokom piler akan m enam bah sebanyak 100 kali pada out put exe filnya set iap kali m akro t ersebut di pakai.
• Stack atau general purpose register harus digunakan untuk m engirim
param et er dalam prosedur. • Untuk m engirim kan param eter ke m akro kit a dapat m engetikkannya
set elah nam a m akronya, cont oh: MyMacro 1, 2, 3
• Untuk m enandai akhir m akro gunakan direktiv EN DM sudah cukup. • Untuk m em andai akhir procedure harus m engetikan nam a prosedur
sebelum dir ekt ive EN D P.
Makro akan diperluas secara langsug dalam kode, sehingga j ika ada label didalam definisi m akro kit a akan m endapat kan pesan error " Duplicat e declarat ion" saat m akro dipakai dua kali at au lebih. Unt uk m enghindari ini gunakan direct ive LOCAL diikut i nam a variabelnya , nam a label at au procedure, cont oh:
MyMacro2 MACRO LOCAL label1, label2
CMP AX, 2 JE label1 CMP AX, 3 JE label2 label1:
ORG 100h
Jika kit a akan m erencanakan m engunakan m akro pada program , m ungkin lebih baik m enem pat ka m akro pada file yang berbeda. Tem pat kan di folder I nc dan gunakandirekt ive I N CLUD E file - name unt uk m enggunakan m akro.
BAGI AN 1 1