Thứ Hai, 20 tháng 1, 2014
Bài giảng MACRO
CHUONG 9 MACRO
CHUONG 9 MACRO
5
5
MAC RO (t t )
MAC RO (t t )
Khi hợp dòch nội dung nhóm lệnh này mà ta đã
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ó
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
tên macro trước khi CT được hợp dòch thành file
OBJ.
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
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
xuất ký tự trong DL, ta có thể viết Macro
PUTCHAR như sau :
PUTCHAR như sau :
PUTCHAR MACRO
MOV AH,2
INT 21H
ENDM
CHUONG 9 MACRO
CHUONG 9 MACRO
6
6
MỞ RỘNG CỦA MACRO CÓ THỂ XEM
MỞ RỘNG CỦA MACRO CÓ THỂ XEM
TRONG FILE.LIST.
TRONG FILE.LIST.
3 DIRECTIVE BIÊN DỊCH SAU SẼ QUYẾT
3 DIRECTIVE BIÊN DỊCH SAU SẼ QUYẾT
ĐỊNH MỞ RỘNG MACRO NHƯ THẾ NÀO.
ĐỊNH MỞ RỘNG MACRO NHƯ THẾ NÀO.
.SALL (SUPRESS ALL) PHẦN MỞ RỘNG MACRO
.SALL (SUPRESS ALL) PHẦN MỞ RỘNG MACRO
KHÔNG ĐƯC IN. SỬ DỤNG KHI MACRO LỚN HAY
KHÔNG ĐƯC IN. SỬ DỤNG KHI MACRO LỚN HAY
MACRO ĐƯC THAM CHIẾU NHIỀU LẦN TRONG CT.
MACRO ĐƯC THAM CHIẾU NHIỀU LẦN TRONG CT.
.XALL CHỈ NHỮNG DÒNG MACRO TẠO MÃ NGUỒN
.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
MỚI ĐƯC IN RA.THÍ DỤ CÁC DÒNG CHÚ THÍCH
ĐƯC BỎ QUA. ĐÂY LÀ TUỲ CHỌN DEFAULT.
ĐƯC BỎ QUA. ĐÂY LÀ TUỲ CHỌN DEFAULT.
.LALL (LIST ALL) TOÀN BỘ CÁC DÒNG TRONG
.LALL (LIST ALL) TOÀN BỘ CÁC DÒNG TRONG
MACRO ĐƯC IN RA TRỪ NHỮNG CHÚ THÍCH BẮT
MACRO ĐƯC IN RA TRỪ NHỮNG CHÚ THÍCH BẮT
ĐẦU BẰNG 2 DẤU ;;
ĐẦU BẰNG 2 DẤU ;;
CHUONG 9 MACRO
CHUONG 9 MACRO
7
7
ĐỊNH NGHĨA MACRO
CÚ PHÁP KHAI BÁO MACRO :
MACRO_NAME MACRO [ <THÔNG SỐ HÌNH THỨC>]
STATEMENTS
ENDM
GỌI MACRO :
MACRO_NAME [<THÔNG SỐ THỰC>, ]
THÔNG SỐ HÌNH THỨC CHỈ CÓ TÁC DỤNG ĐÁNH DẤU VỊ TRÍ
CỦA THÔNG SỐ TRONG MACRO. QUAN TRỌNG NHẤT LÀ VỊ TRÍ
CÁC THÔNG SỐ.
CHUONG 9 MACRO
CHUONG 9 MACRO
8
8
MACRO TRUY N THAM SỀ Ố
MACRO TRUY N THAM SỀ Ố
.MODEL SMALL
.MODEL SMALL
.STACK 100H
.STACK 100H
PUTCHAR MACRO KT
MOV DL,KT
MOV AH,2
INT 21H
ENDM
.CODE
.CODE
MAIN PROC
MAIN PROC
MOV DL, ‘A’
MOV DL, ‘A’
PUTCHAR
PUTCHAR
MOV DL, ‘*”
MOV DL, ‘*”
PUTCHAR
PUTCHAR
MOV AH,4CH
INT 21H
MAIN ENDP
END MAIN
CHUONG 9 MACRO
CHUONG 9 MACRO
9
9
SWAP MACRO BIẾN1, BIẾN2
SWAP MACRO BIẾN1, BIẾN2
MOV AX, BIEN1
MOV AX, BIEN1
XCHG AX, BIEN2
XCHG AX, BIEN2
MOV BIEN1, AX
MOV BIEN1, AX
ENDM
ENDM
GỌI : SWAP TRI1, TRI2
GỌI : SWAP TRI1, TRI2
CHUONG 9 MACRO
CHUONG 9 MACRO
10
10
TRAO ĐỔI THAM SỐ CỦA MACRO
TRAO ĐỔI THAM SỐ CỦA MACRO
MỘT MACRO CÓ THỂ CÓ THÔNG SỐ HOẶC KHÔNG CÓ THÔNG SỐ.
PUTC HAR MAC RO
PUTC HAR MAC RO
C HAR
C HAR
MO V AH, 2
MO V AH, 2
MO V DL, C HAR
MO V DL, C HAR
INT 2 1 H
INT 2 1 H
ENDM
ENDM
. C O DE
. . .
PUTC HAR ‘ A’
PUTC HAR ‘ B’
PUTCHAR ‘C’
MACRO CÓ THÔNG SỐ
SỬ DỤNG MACRO
CHUONG 9 MACRO
CHUONG 9 MACRO
11
11
MACRO TRUYỀN THƠNG SỐ
Thí dụ : macro @Printstr
Viết chương trình in 2 chuổi ‘Hello’ và ‘Hi”.
.DATA
MSG1 DB ‘Hello’,13,10
MSG2 DB‘Hi’,13,10
.CODE
……….
MOV DX, OFFSET MSG1
MOV AH,9
INT 21H
MOV DX, OFFSET MSG2
MOV AH,9
INT 21H
……
Ta thấy đoạn 1
và đoạn 2 gần
giống nhau
có thể tạo macro
có tham số như
sau :
;1
;1
;1
;2
;2
;2
CHUONG 9 MACRO
CHUONG 9 MACRO
12
12
THÍ DỤ VỀ MACRO
THÍ DỤ VỀ MACRO
DISPLAY MACRO STRING
DISPLAY MACRO STRING
PUSH AX
PUSH AX
PUSH DX
PUSH DX
LEA DX, STRING
LEA DX, STRING
MOV AH,9
MOV AH,9
INT 21H
INT 21H
POP DX
POP DX
POP AX
POP AX
ENDM
ENDM
GỌI : DISPLAY CHUOI
CHUONG 9 MACRO
CHUONG 9 MACRO
13
13
TRAO ĐỔI THAM SỐ CỦA MACRO
TRAO ĐỔI THAM SỐ CỦA MACRO
MACRO LOCATE : ĐỊNH VỊ CURSOR MÀN HÌNH
LO C ATE MAC RO RO W,
LO C ATE MAC RO RO W,
C O LUMN
C O LUMN
PUS H AX
PUS H AX
PUS H BX
PUS H BX
PUS H DX
PUS H DX
MO V BX, 0
MO V BX, 0
MO V AH, 2
MO V AH, 2
MO V DH, RO W
MO V DH, RO W
MO V DL, C O LUMN
MO V DL, C O LUMN
INT 1 0 H
INT 1 0 H
PO P DX
PO P DX
PO P BX
PO P BX
PO P AX
PO P AX
ENDM
ENDM
TA CÓ CÁC DẠNG SỬ DỤNG
SAU :
LOCATE 10,20
LOCATE ROW, COL
LOCATE CH, CL
SỬ DỤNG MACRO
CHÚ Ý : KHÔNG DÙNG CÁC
THANH GHI AH,AL,BH,BL VÌ
SẼ ĐỤNG ĐỘ VỚI CÁC THANH
GHI ĐÃ SỬ DỤNG TRONG
MACRO
CHUONG 9 MACRO
CHUONG 9 MACRO
14
14
MACRO LỒNG NHAU
MACRO LỒNG NHAU
MỘT CÁCH ĐƠN GIẢN ĐỂ XÂY DỰNG MACRO LÀ XÂY DỰNG 1
MACRO MỚI TỪ MACRO ĐÃ CÓ.
EX : HIỂN THỊ 1 CHUỔI TẠI 1 TOẠ ĐỘ CHO TRƯỚC
EX : HIỂN THỊ 1 CHUỔI TẠI 1 TOẠ ĐỘ CHO TRƯỚC
DISPLAY_AT MACRO ROW, COL, STRING
LOCATE ROW, COL ;Gọi macro đònh vò cursor
DISPLAY STRING ; Gọi Macro xuất string
ENDM
MỘT MACRO CÓ THỂ THAM CHIẾU ĐẾN CHÍNH NÓ,
NHỮNG MACRO NHƯ VẬY GỌI LÀ MACRO ĐỆ QUI.
Đăng ký:
Đăng Nhận xét (Atom)
Không có nhận xét nào:
Đăng nhận xét