Prosedur dan macro adalah fasilitas yang terdapat pada turbo assembler.
Prosedur
Prosedur adalah sekelompok instruksi yang dibangun untuk melakukan tugas-tugas tertentu agar dapat memperpendek jumlah baris program. Prosedur dapat dipanggil secara berulang-ulang oleh program utama dengan instruksi CALL.
Penggunaan prosedur dapat mengurangi jumlah alamat memori yang digunakan pada program.
Kerangka Dasar prosedur:
Nama_prosedur PROC NEAR/FAR ;nama prosedur
----------
---------- Isi Prosedur
----------
----------
RET ;kembali ke program utama
Nama_prosedur ENDP ;akhir prosedur
PROC = Procedur RET= RETURN
NEAR = Lokasi prosedur dekat dengan program utama
FAR = Lokasi prosedur jauh dari program utama
Contoh:
.model small
.code
org 100h
MULAI: MOV CX,05h ;isi CX dilooping 5 kali
MOV DL,’A’ ;Karakter A disimpan di DL
ULANG: CALL CETAK ;cetak di layar
INC DL ;tambahkan isi DL dengan 1
LOOP ULANG ;kembali ke ULANG
EXIT: INT 20h ;kembali ke DOS
CETAK PROC NEAR ;prosedur CETAK
MOV AH, 02h ;nomor servis 02H
INT 21h ;cetak di layar
RET ;kembali ke program utama
CETAK ENDP ;akhir prosedur
END MULAI
MACRO
Hampir mirip dengan prosedur dan tidak perlu dipanggil dengan CALL dan RET. Hanya cukup dipanggil dengan mengeksekusi namanya. Macro mengenal parameter yang bersifat optional (boleh ada atau tidak), tergantung kebutuhan.
Kerangka Umum:
Nama_makro MACRO [P1,P2] ;nama makro
.........
......... Isi makro
.........
ENDM ;akhir makro
[P1,P2] adalah parameter yang digunakan (optional)
Contoh 1:
;Program dengan Makro
CETAK MACRO KAR
MOV DL, KAR
MOV AH, 02h
INT 21h
ENDM
.model small
.code
org 100h
MULAI: CETAK ‘A’
CETAK ‘B’
CETAK ‘C’
CETAK ‘D’
CETAK ‘E’
EXIT: INT 20h
END MULAI
Contoh 2:
;Program Mencetak String (Kalimat)
CETAK MACRO KAL
LEA DX,KAL
MOV AH, 09h
INT 21h
ENDM
.model small
.code
org 100h
MULAI: JMP START
TULIS1 DB ‘Saya sedang belajar Assembler’,13,10
DB ‘Ternyata asyik juga$’
TULIS2 DB ‘Materi sekarang tentang makro$’
START: CETAK TULIS1
CETAK TULIS2
INT 20h
END MULAI
ADS HERE !!!