ĐỊNH NGHĨA MACRO<br />
Macro là 1 ký hiệu được gán cho 1 nhóm<br />
lệnh ASM – Macro là tên thay thế cho 1 nhóm<br />
lệnh.<br />
Tại sao cần có Macro :<br />
Trong lập trình nhiều lúc ta cần phải viết những<br />
lệnh na ná nhau nhiều lần mà ta không muốn viết<br />
dưới dạng hàm vì dùng hàm tốn thời gian thực thi,<br />
thay vì ta phải viết đầy đủ nhóm lệnh này vào CT, ta<br />
chỉ cần viết Macro mà ta đã gán cho chúng.<br />
CHUONG 9 MACRO<br />
<br />
1<br />
<br />
LÀM QUEN VỚI MACRO<br />
Khi ta cĩ nhiều đoạn code giống nhau, chúng ta cĩ thể<br />
dùng macro để thay thế, giống như ta dùng define trong<br />
C. Thí dụ chúng ta thay thế đọan lệnh sau bằng macro<br />
để in dấu xuống dịng.<br />
<br />
MOV DL,13 ; về đầu dịng<br />
MOV AH,2<br />
INT 21H<br />
MOV DL,10 ; xuống dịng mới<br />
MOV AH,2<br />
INT 21H<br />
<br />
CHUONG 9 MACRO<br />
<br />
2<br />
<br />
Thay vì phải viết lại 6 dịng lệnh trên, ta cĩ<br />
thể tạo 1 macro cĩ tên @Newline để thay thế<br />
đoạn code này :<br />
@NewLine Macro<br />
MOV DL,13<br />
MOV AH,2<br />
INT 21H<br />
MOV DL,10<br />
<br />
Sau đó, bất kỳ chỗ nào<br />
cần xuống dòng, ta chỉ<br />
cần gọi macro<br />
@NewLine.<br />
@NewLine<br />
<br />
MOV AH,2<br />
INT 21H<br />
ENDM<br />
<br />
CHUONG 9 MACRO<br />
<br />
3<br />
<br />
MACRO (tt)<br />
Khi hợp dịch nội dung nhóm lệnh này mà ta đã gán<br />
cho macro sẽ được thay thế vào những nơi có tên<br />
macro trước khi CT được hợp dịch thành file OBJ.<br />
Ex1 : nhiều khi ta phải viết lại nhiều lần đoạn lệnh<br />
xuất ký tự trong DL ra màn hình.<br />
MOV AH, 2<br />
INT 21H<br />
Thay vì phải viết cả 1 cặp lệnh trên mỗi khi cần<br />
xuất ký tự trong DL, ta có thể viết Macro<br />
PUTCHAR như sau :<br />
PUTCHAR MACRO<br />
MOV AH,2<br />
INT 21H<br />
ENDM<br />
<br />
CHUONG 9 MACRO<br />
<br />
4<br />
<br />
MỞ RỘNG CỦA MACRO CÓ THỂ XEM<br />
TRONG FILE.LIST.<br />
3 DIRECTIVE BIÊN DỊCH SAU SẼ QUYẾT<br />
ĐỊNH MỞ RỘNG MACRO NHƯ THẾ NÀO.<br />
.SALL (SUPRESS ALL) PHẦN MỞ RỘNG MACRO<br />
KHÔNG ĐƯỢC IN. SỬ DỤNG KHI MACRO LỚN HAY<br />
MACRO ĐƯỢC THAM CHIẾU NHIỀU LẦN TRONG CT.<br />
.XALL CHỈ NHỮNG DÒNG MACRO TẠO MÃ NGUỒN<br />
MỚI ĐƯỢC IN RA.THÍ DỤ CÁC DÒNG CHÚ THÍCH<br />
ĐƯỢC BỎ QUA. ĐÂY LÀ TUỲ CHỌN DEFAULT.<br />
.LALL (LIST ALL) TOÀN BỘ CÁC DÒNG TRONG<br />
MACRO ĐƯỢC IN RA TRỪ NHỮNG CHÚ THÍCH BẮT<br />
ĐẦU BẰNG 2 DẤU ;;<br />
CHUONG 9 MACRO<br />
<br />
5<br />
<br />