Ngày đăng: 22/08/2012, 09:35
Bài giảng MACRO CHUONG 9 MACROCHUONG 9 MACRO11MAC ROMAC RO Định nghĩa Macro và gọi MacroĐịnh nghĩa Macro và gọi Macro Vấn đề truyền thông số trong Macro.Vấn đề truyền thông số trong Macro. Macro lồng nhau.Macro lồng nhau. Sử dụng Macro để gọi chương trình con.Sử dụng Macro để gọi chương trình con. Các toán tử Macro.Các toán tử Macro. Thư viện MacroThư viện Macro So sánh việc dùng Macro với ProcedureSo sánh việc dùng Macro với Procedure Một số Macro mẫu.Một số Macro mẫu.
CHUONG 9 MACROCHUONG 9 MACRO22ĐỊNH NGHĨA MACRỊNH NGHĨA MACRO Macro là 1 ký hiệu được gán cho 1 nhóm 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 ASM – Macro là tên thay thế cho 1 nhóm lệnh.lệnh. 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. Tại sao cần có Macro :Tại sao cần có Macro :
CHUONG 9 MACROCHUONG 9 MACRO33LÀM QUEN VỚI MACROKh i t a c ó n h i u o n c o d e g i n g n h a u , ề đ ạ ốc h ú n g t a c ó t h d ù n g m a c r o t h a y ể đểt h , g i n g n h t a d ù n g d e f in e t r o n g C . ế ố ưTh í d c h ú n g t a t h a y t h a n l n h ụ ế đọ ệs a u b n g m a c r o i n d u x u n g d ò n g . ằ để ấ ốMO V DL,1 3 ; v u ề đầd ò n gMO V AH,2INT 2 1 HMO V DL,1 0 ; x u n g ốd ò n g m iớMO V AH,2INT 2 1 H
CHUONG 9 MACROCHUONG 9 MACRO44Th a y v ì p h i v i t l i 6 d ò n g ả ế ạl n h t r ê n , t a c ó t h t o 1 ệ ể ạm a c r o c ó t ê n @Ne w lin e đểt h a y t h o n c o d e n à y :ế đ ạ@Ne w Lin e Ma c r o MO V DL,1 3 MO V AH,2INT 2 1 HMO V DL,1 0MO V AH,2INT 2 1 HENDMSau đó, bất kỳ chỗ nào cần xuống dòng, ta chỉ cần gọi macro @NewLine. @NewLine
CHUONG 9 MACROCHUONG 9 MACRO55MAC 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 21HThay 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 MACROCHUONG 9 MACRO66MƠÛ 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 MACROCHUONG 9 MACRO77ĐỊ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 MACROCHUONG 9 MACRO88MACRO 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 PROCMAIN PROC MOV DL, ‘A’MOV DL, ‘A’ PUTCHARPUTCHAR MOV DL, ‘*”MOV DL, ‘*” PUTCHARPUTCHAR MOV AH,4CH INT 21HMAIN ENDPEND MAIN
CHUONG 9 MACROCHUONG 9 MACRO99SWAP MACRO BIEN1, BIEN2SWAP MACRO BIEN1, BIEN2 MOV AX, BIEN1MOV AX, BIEN1 XCHG AX, BIEN2XCHG AX, BIEN2 MOV BIEN1, AXMOV BIEN1, AX ENDMENDMGOẽI : SWAP TRI1, TRI2 GOẽI : SWAP TRI1, TRI2
CHUONG 9 MACROCHUONG 9 MACRO1010TRAO ĐỔI THAM SỐ CỦA MACROTRAO ĐỔI THAM SỐ CỦA MACROMỘ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 HARC HAR MO V AH, 2MO V AH, 2 MO V DL, C HARMO V DL, C HAR INT 2 1 HINT 2 1 HENDMENDM. C O DE . . . PUTC HAR ‘ A’ PUTC HAR ‘ B’ PUTCHAR ‘C’ .MACRO CÓ THÔNG SỐSƯÛ DỤNG MACRO
[...]... số trong Macro.
Macro lồng nhau.
Macro lồng nhau.
Sử dụng Macro để gọi chương trình con.
Sử dụng Macro để gọi chương trình con.
Các toán tử Macro.
Các toán tử Macro.
Thư viện Macro
Thư viện Macro
So sánh việc dùng Macro với Procedure
So sánh việc dùng Macro với Procedure
Một số Macro mẫu.
Một số Macro mẫu.
CHUONG 9 MACRO
CHUONG 9 MACRO
26
26
BÀI TẬP MACRO
BÀI TẬP MACRO
Bà...
CHUONG 9 MACRO
CHUONG 9 MACRO
21
21
THƯ VIỆN MACRO
THƯ VIỆN MACRO
CÁC MACRO MÀ CHƯƠNG TRÌNH THAM CHIẾU CÓ THỂ ĐẶT Ở FILE
RIÊNG TA CÓ THỂ TẠO 1 FILE THƯ VIỆN CÁC MACRO.
DÙNG 1 EDITOR ĐỂ SOẠN THẢO MACRO
LƯU TRỮ TÊN FILE MACRO. LIB
KHI CẦN THAM CHIẾU ĐẾN MACRO TA DÙNG CHỈ THị INCLUDE
TÊN FILE THƯ VIỆN
MỘT CÔNG DỤNG QUAN TRỌNG CỦA MACRO LÀ TẠO RA
CÁC LỆNH MỚI.
CHUONG 9 MACRO
CHUONG 9 MACRO
19
19
Thí...
CHUONG 9 MACRO
CHUONG 9 MACRO
9
9
SWAP MACRO BIEÁN1, BIEÁN2
SWAP MACRO BIEÁN1, BIEÁN2
MOV AX, BIEN1
MOV AX, BIEN1
XCHG AX, BIEN2
XCHG AX, BIEN2
MOV BIEN1, AX
MOV BIEN1, AX
ENDM
ENDM
GOÏI : SWAP TRI1, TRI2
GOÏI : SWAP TRI1, TRI2
CHUONG 9 MACRO
CHUONG 9 MACRO
1
1
MAC RO
MAC RO
Định nghĩa Macro và gọi Macro
Định nghĩa Macro và gọi Macro
Vấn đề truyền thông số trong Macro.
Vấn... 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
6
6
MỞ RỘNG CỦA MACRO CÓ THỂ XEM
MỞ RỘNG CỦA MACRO CÓ THỂ XEM
TRONG FILE.LIST.
TRONG... 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...
CHUONG 9 MACRO
CHUONG 9 MACRO
15
15
ĐỊNH NGHĨA NHÃN BÊN TRONG MACRO
ĐỊNH NGHĨA NHÃN BÊN TRONG MACRO
TRONG MACRO CÓ THỂ CÓ NHÃN.
GỌI MACRO NHIỀU LẦN NHIỀU NHÃN ĐƯC TẠO RA
LÀM SAO GIẢI QUYẾT VẤN ĐỀ NHẢY ĐIỀU KHIỂN?
ASSEMBLY GIẢI QUYẾT VẤN ĐỀ NÀY BẰNG CHỈ THỊ LOCAL
CƯỢNG BỨC MASM TẠO RA 1 TÊN DUY NHẤT CHO MỖI MỘT
LABEL KHI MACRO ĐƯC GỌI
CÚ PHÁP : LOCAL LABEL_NAME
CHUONG 9 MACRO
CHUONG 9 MACRO
10
10
TRAO... PROCTABLE LABEL WORD
IRP PROCNAME, <MOVEUP, MOVDOWN,MOVLEFT,MOVRGHT>
DW PROCNAME
ENDM
CHUONG 9 MACRO
CHUONG 9 MACRO
2
2
ĐỊNH NGHĨA MACRO
ĐỊNH NGHĨA MACRO
Macro là 1 ký hiệu được gán cho 1 nhóm
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 ASM – Macro là tên thay thế cho 1 nhóm
lệnh.
lệnh.
Trong lập trình nhiều lúc ta cần phải viết những
lệnh... 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
24
24
CÁC LỆNH LẶP...
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
7
7
ĐỊNH... AH,2
INT 2 1 H
MO V DL,1 0
MO V AH,2
INT 2 1 H
ENDM
Sau đó, bất kỳ chỗ nào
cần xuống dịng, ta chỉ
cần gọi macro
@NewLine.
@NewLine
CHUONG 9 MACRO
CHUONG 9 MACRO
16
16
Một số Macro yêu cầu user định nghóa các thành phần dữ liệu
và các nhãn bên trong định nghóa của Macro.
Nếu sử dụng Macro này nhiều hơn 1 lần trong cùng một
chương trình, trình ASM định nghóa thành phần dữ liệu hoặc
nhãn cho . CHUONG 9 MACROCHUONG 9 MACRO1 1MAC ROMAC RO Định nghĩa Macro và gọi Macro ịnh nghĩa Macro và gọi Macro Vấn đề truyền thông số trong Macro. Vấn đề truyền. Macro. Macro lồng nhau .Macro lồng nhau. Sử dụng Macro để gọi chương trình con.Sử dụng Macro để gọi chương trình con. Các toán tử Macro. Các toán tử Macro.
Xem thêm:
Bài giảng MACRO