1. Trang chủ
  2. » Tất cả

Chuong 09 macro

27 1 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

MACRO MACRO Định nghĩa Macro và gọi Macro Vaán ñeà truyeàn thoâng soá trong Macro Macro loàng nhau Söû duïng Macro ñeå goïi chöông trình con Caùc toaùn töû Macro Thö vieän Macro So saùnh vieäc duøng M[.]

MACRO Định nghĩa Macro gọi Macro Vấn đề truyền thông số Macro Macro lồng Sử dụng Macro để gọi chương trình Các toán tử Macro Thư viện Macro So sánh việc dùng Macro với Procedure Một số Macro mẫu CHUONG MACRO ĐỊNH NGHĨA MACRO Macro ký hiệu gán cho nhóm lệnh ASM – Macro tên thay cho nhóm lệnh.Tại cần có Macro : Trong lập trình nhiều lúc ta cần phải viết lệnh na ná nhiều lần mà ta không muốn viết dạng hàm dùng hàm tốn thời gian thực thi, thay ta phải viết đầy đủ nhóm lệnh vào CT, ta cần viết Macro mà ta gán cho chuùng CHUONG MACRO LÀM QUEN VỚI MACRO Khi ta có nhiều đoạn code giống nhau, dùng macro để thay thế, giống ta dùng define C Thí dụ thay đọan lệnh sau macro để in dấu xuống dòng MOV DL,13 ; đầu dòng MOV AH,2 INT 21H MOV DL,10 ; xuống dòng MOV AH,2 INT 21H CHUONG MACRO Thay phải viết lại dịng lệnh trên, ta tạo macro có tên @Newline để thay đoạn code : @NewLine Macro MOV DL,13 MOV AH,2 INT 21H MOV DL,10 MOV AH,2 Sau đó, chỗ cần xuống dịng, ta cần gọi macro @NewLine @NewLine INT 21H ENDM CHUONG MACRO MACRO (tt) Khi hợp dịch nội dung nhóm lệnh mà ta gán cho macro thay vào nơi có tên macro trước CT hợp Ex1thành : nhiều ta phải viết lại dịch filekhi OBJ nhiều lần đoạn lệnh xuất ký tự DL hình MOV AH, 21H Thay vìINT phải viết cặp lệnh cần xuất ký tự DL, ta viết Macro PUTCHARnhư MACRO PUTCHAR sau : ENDM MOV AH,2 INT 21H CHUONG MACRO MỞ RỘNG CỦA MACRO CÓ THỂ XEM TRONG FILE.LIST 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 CHUONG MACRO CHÚ THÍCH BẮT ĐẦU BẰNG DẤU ;; ĐỊNH NGHĨA MACRO CÚ PHÁP KHAI BÁO MACRO : MACRO_NAME MACRO [ ] STATEMENTS ENDM GỌI MACRO : MACRO_NAME [, ] 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 MACRO MACRO TRUYỀN THAM SỐ MODEL SMALL STACK 100H PUTCHAR MACRO KT MOV DL,KT MOV AH,2 INT 21H ENDM CODE MAIN PROC MOV DL, ‘A’ PUTCHAR MOV DL, ‘*” PUTCHAR MOV AH,4CH INT 21H MAIN ENDP END MAIN CHUONG MACRO SWAP MACRO BIEÁN1, BIEÁN2 MOV AX, BIEN1 XCHG AX, BIEN2 MOV BIEN1, AX ENDM GOÏI : SWAP TRI1, TRI2 CHUONG 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Ố MACRO CÓ THÔNG SỐ SỬ DỤNG MACRO CODE PUTCHAR MACRO CHAR MOV AH, MOV DL, CHAR PUTCHAR ‘A’ INT 21H PUTCHAR ‘B’ ENDM PUTCHAR ‘C’ CHUONG MACRO 10 TRAO ĐỔI THAM SỐ CỦA MACRO MACRO LOCATE : ĐỊNH VỊ CURSOR MÀN HÌNH SỬ DỤNG MACRO LOCATE MACRO ROW, COLUMN PUSH AX PUSH BX TA CÓ CÁC DẠNG SỬ PUSH DX DỤNG SAU : MOV BX, LOCATE 10,20 MOV AH, LOCATE ROW, COL MOV DH, ROW MOV DL, COLUMN LOCATE CH, CL INT 10H CHÚ Ý : KHÔNG POP DX POP BX DÙNG CÁC THANH GHI POP AX AH,AL,BH,BL VÌ SẼ ENDM ĐỤNG ĐỘ VỚI CÁC THANH GHI ĐÃ SỬ CHUONG MACRO DỤNG TRONG MACRO 13 MACRO LỒNG NHAU MỘT CÁCH ĐƠN GIẢN ĐỂ XÂY DỰNG MACRO LÀ XÂY DỰNG MACRO MỚI TỪ MACRO ĐÃ CÓ EX : HIỂN THỊ CHUỔI TẠI 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 CHUONG MACRO 14 ĐỊ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 SEMBLY GIẢI QUYẾT VẤN ĐỀ NÀY BẰNG CHỈ KHIỂN? Ị LOCAL CƯỢNG BỨC MASM TẠO RA TÊN DUY HẤT CHO MỖI MỘT LABEL KHI MACRO ĐƯC GỌI CÚ PHÁP : LOCAL LABEL_NAME CHUONG MACRO 15 Một số Macro yêu cầu user định nghóa thành phần liệu nhãn bên định nghóa Macro Nếu sử dụng Macro nhiều lần chương trình, trình ASM định nghóa thành phần liệu nhãn cho lần sử dụng  tên giống lặp lại khiến cho ASM báo lỗi Để đảm bảo tên nhãn tạo lần, ta dùng thị LOCAL sau phát Khi ASM thấy biến định nghóa biểu Macro LOCAL thay biến ký hiệu có dạng ??n, n số có chữ số Nếu có nhiều nhãn Ta cần biết điều để CT ta ??0000, ??0001, ??0002 không sử dụng biến hay nhãn đưới 16 CHUONG MACRO dạng Thí dụ minh họa thị Local Xây dựng Macro REPEAT có nhiệm vụ xuất count lần số ký tự char hình REPEAT MACRO CHAR, COUNT ASM SẼ DÙNG CƠ CHẾ ĐÁNH SỐ MOV CX, COUNT GIẢ SỬ GỌI : CÁC NHÃN (TỪ L1: MOV AH,2 REPEAT ‘A’, 10 0000H ĐẾN FFFFH) ĐỂ ĐÁNH DẤU MOV DL, CHAR REPEAT ‘*’, 20 CÁC NHÃN CÓ CHỈ ĐỊNH LOCAL INT 21H LOCAL L1 LOOP L1 ENDM SẼ ĐƯC DỊCH RA  CHUONG MACRO 17 MOV CX, 10 Thí dụ minh họa thị Local ??0000 : MOV AH,2 MOV DL, ‘A’ INT 21H LOOP ??0000 MOV CX, 20 ??0001 : MOV AH,2 MOV DL, ‘*’ Ử G I OÏ : 10 , Û A’ ‘ A T GI A E *’, ‘ P RE AT E P RE S INT 21H LOOP ??0001 CHUONG MACRO 18 Thí dụ minh họa Viết macro đưa từ lớn từ vào AX GETMAX WORD2 MACRO LOCAL EXIT MOV AX, WORD1 CMP AX, WORD2 WORD1, GIẢ SỬ FIRST,SECOND, THIRD LÀ CÁC BIẾN WORD SỰ THAM CHIẾU MACRO ĐƯC MỞ RỘNG NHƯ SAU : JG EXIT MOV AX, FIRST MOV AX, WORD2 CMP AX, SECOND EXIT : JG ??0000 ENDM MOV AX, SECOND ??0000: CHUONG MACRO 19 Thí dụ minh họa Viết macro đưa từ lớn vào AX LỜI GỌI MACRO TIẾP THEO : SỰ THAM CHIẾU LIÊN TIẾP MACRO NÀY HAY ĐẾN GETMAX SECOND, THIRD MACRO KHÁC KHIẾN TRÌNH BIÊN ĐƯC MỞ RỘNG NHƯ SAU : DỊCH CHÈN CÁC NHÃN ??0002, ??0003 VÀ MOV AX, SECOND CỨ NHƯ VẬY TRONG CHƯƠNG TRÌNH CÁC NHÃN CMP AX, THIRD NÀY LÀ DUY NHAÁT JG ??0001 ??0001 : CHUONG MACRO 20 ... TRONG MACRO ĐƯC IN RA TRỪ NHỮNG CHUONG MACRO CHÚ THÍCH BẮT ĐẦU BẰNG DẤU ;; ĐỊNH NGHĨA MACRO CÚ PHÁP KHAI BÁO MACRO : MACRO_ NAME MACRO [ ] STATEMENTS ENDM GỌI MACRO : MACRO_ NAME... GHI ĐÃ SỬ CHUONG MACRO DỤNG TRONG MACRO 13 MACRO LỒNG NHAU MỘT CÁCH ĐƠN GIẢN ĐỂ XÂY DỰNG MACRO LÀ XÂY DỰNG MACRO MỚI TỪ MACRO ĐÃ CÓ EX : HIỂN THỊ CHUỔI TẠI TOẠ ĐỘ CHO TRƯỚC DISPLAY_AT MACRO ROW,... ;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 CHUONG MACRO 14 ĐỊNH NGHĨA NHÃN BÊN TRONG MACRO

Ngày đăng: 24/03/2023, 16:42

Xem thêm: