Menggunakan Macro dalam Assembly
Macro hampir sama dengan procedure, yang dapat membantu anda dalam membuat program yang besar. Dengan Macro anda tidak perlu menggunakan perintah "CALL" dan anda juga bisa menggunakan parameter dengan mudah. Suatu ciri dari pemrograman bahasa tingkat tinggi. Macro adalah lebih mudah dibuat daripada procedure.
Model Macro
"P1" dan "P2" adalah parameter yang bisa anda gunakan
pada macro. Parameter ini berbentuk optional, artinya bisa digunakan ataupun
tidak. Supaya lebih jelas bisa anda lihat pada program MAC1 yang menggunakan
macro ini untuk mencetak karakter. Berikut ini contoh program mencetak karakter huruf S.
Cetak_Kar MACRO Kar
MOV AH,2H
MOV DL,Kar
INT 21HENDM
.MODEL SMALL
.CODE
ORG 100h
Proses: Cetak_Kar 'S'
INT 20h
END Proses
Buka TASM 1.4 , kemudian ketikan
cd\ (enter)
cd 1ca\asm (enter)
Tambahkan edit.
Edit (enter)
Ketikan program tersebut pada layar berwarna biru.
Cetak_Kar MACRO Kar MOV AH,2H
MOV DL,Kar
INT 21HENDM
.MODEL SMALL
.CODE
ORG 100h
Proses: Cetak_Kar 'S'
INT 20h
END Proses
Kemudian jalankan program tersebut dengan Tasm dan cetak dengan Tlink.
Menggunakan
macro
Dari program MAC1 bisa anda lihat betapa mudahnya untuk menggunakan macro.
Pada procedure, setiap kali kita memanggilnya dengan perintah CALL maka program
akan melompat pada procedure tersebut, sehingga setiap procedure hanya terdapat
satu kali saja pada program. Lain halnya dengan Macro, setiap terjadi
pemanggilan terhadap macro atau dapat dikatakan secara kasar, setiap kita
memanggil macro dengan menuliskan nama macronya dalam program, maka seluruh isi
macro akan dipindahkan pada program yang memanggilnya. Dengan demikian bila
pada program anda memanggil suatu macro sebanyak 10 kali maka macro tersebut
akan disisipkan 10 kali pada program. Hal inilah yang menyebabkan program yang
menggunakan macro ukuran programnya menjadi lebih besar. Tetapi hal ini juga yang
menyebabkan program yang menggunakan macro lebih cepat daripada procedure,
karena pada procedure komputer harus melakukan lompatan tetapi pada macro tidak
perlu.Kita akan mencetak label pada macro satu parameter.
Cetak_Kar MACRO Kar
LOCAL Ulang
MOV CX,5…………………banyaknya karakter yang akan dicetak
MOV AH,02
MOV DL,Kar
Ulang:
INT 21h ; Cetak Karakter
LOOP Ulang
ENDM ; End Macro
.MODEL SMALL
.CODE
ORG 100h
Proses:
Cetak_Kar 'A' …………………………. Cetak Huruf A
Cetak_Kar 'Q' …………………………. Cetak Huruf Q
INT 20h
END Proses
LABEL PADA MACRO
Pada macro anda bisa menggunakan label seperti biasa. Tetapi anda harus
ingat, karena setiap pemanggilan Macro akan menyebabkan seluruh isi macro
tersebut disisipkan pada program, maka pada macro yang didalamnya menggunakan
label hanya dapat dipanggil sebanyak satu kali. Bila anda menggunakanya lebih dari
satu kali maka akan terjadi "**Error** Symbol already defined
elsewhere: ULANG" karena dianggap kita menggunakan label yang sama. Untuk menghindari hal itu, gunakanlah directif LOCAL. Dengan directif LOCAL assembler akan membedakan label tersebut setiap kali terjadi pemanggilan terhadapnya.
CETAK_KAR MACRO
MOV AH,02
MOV DL,KAR
MOV CX,26
ULANG :
INT 21H
INC DL
LOOP ULANG
ENDM
.MODEL SMALL
.CODE
ORG 100H
PROSES :CETAK_KAR’A’
INT 20H
END PROSES
Setelah melakukan langkah di atas, simpan program dengan nama MACR2 .ASM. Kemudian cek menggunakan TASM dan cetak menggunakan TLINK. Setelah program dijalankan maka hasilnya akan seperti berikut.
Selesai...............!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
Tidak ada komentar:
Posting Komentar