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