Xem mẫu

ĐỊNH NGHĨA MACRO
Macro là 1 ký hiệu được gán cho 1 nhóm
lệnh ASM – Macro là tên thay thế cho 1 nhóm
lệnh.
Tại sao cần có Macro :
Trong lập trình nhiều lúc ta cần phải viết những
lệnh na ná nhau nhiều lần mà ta không muốn viết
dưới dạng hàm vì dùng hàm tốn thời gian thực thi,
thay vì ta phải viết đầy đủ nhóm lệnh này vào CT, ta
chỉ cần viết Macro mà ta đã gán cho chúng.
CHUONG 9 MACRO

1

LÀM QUEN VỚI MACRO
Khi ta cĩ nhiều đoạn code giống nhau, chúng ta cĩ thể
dùng macro để thay thế, giống như ta dùng define trong
C. Thí dụ chúng ta thay thế đọan lệnh sau bằng macro
để in dấu xuống dịng.

MOV DL,13 ; về đầu dịng
MOV AH,2
INT 21H
MOV DL,10 ; xuống dịng mới
MOV AH,2
INT 21H

CHUONG 9 MACRO

2

Thay vì phải viết lại 6 dịng lệnh trên, ta cĩ
thể tạo 1 macro cĩ tên @Newline để thay thế
đoạn code này :
@NewLine Macro
MOV DL,13
MOV AH,2
INT 21H
MOV DL,10

Sau đó, bất kỳ chỗ nào
cần xuống dòng, ta chỉ
cần gọi macro
@NewLine.
@NewLine

MOV AH,2
INT 21H
ENDM

CHUONG 9 MACRO

3

MACRO (tt)
Khi hợp dịch nội dung nhóm lệnh này mà ta đã gán
cho macro sẽ được thay thế vào những nơi có tên
macro trước khi CT được hợp dịch thành file OBJ.
Ex1 : nhiều khi ta phải viết lại nhiều lần đoạn lệnh
xuất ký tự trong DL ra màn hình.
MOV AH, 2
INT 21H
Thay vì phải viết cả 1 cặp lệnh trên mỗi khi cần
xuất ký tự trong DL, ta có thể viết Macro
PUTCHAR như sau :
PUTCHAR MACRO
MOV AH,2
INT 21H
ENDM

CHUONG 9 MACRO

4

MỞ RỘNG CỦA MACRO CÓ THỂ XEM
TRONG FILE.LIST.
3 DIRECTIVE BIÊN DỊCH SAU SẼ QUYẾT
ĐỊNH MỞ RỘNG MACRO NHƯ THẾ NÀO.
.SALL (SUPRESS ALL) PHẦN MỞ RỘNG MACRO
KHÔNG ĐƯỢC IN. SỬ DỤNG KHI MACRO LỚN HAY
MACRO ĐƯỢC THAM CHIẾU NHIỀU LẦN TRONG CT.
.XALL CHỈ NHỮNG DÒNG MACRO TẠO MÃ NGUỒN
MỚI ĐƯỢC IN RA.THÍ DỤ CÁC DÒNG CHÚ THÍCH
ĐƯỢC BỎ QUA. ĐÂY LÀ TUỲ CHỌN DEFAULT.
.LALL (LIST ALL) TOÀN BỘ CÁC DÒNG TRONG
MACRO ĐƯỢC IN RA TRỪ NHỮNG CHÚ THÍCH BẮT
ĐẦU BẰNG 2 DẤU ;;
CHUONG 9 MACRO

5

nguon tai.lieu . vn