intTypePromotion=1
zunia.vn Tuyển sinh 2024 dành cho Gen-Z zunia.vn zunia.vn
ADSENSE

Chương 6 - Viết các Macro

Chia sẻ: Bùi Trọng Quốc Viễn | Ngày: | Loại File: PDF | Số trang:15

100
lượt xem
19
download
 
  Download Vui lòng tải xuống để xem tài liệu đầy đủ

Tham khảo tài liệu 'chương 6 - viết các macro', công nghệ thông tin, kỹ thuật lập trình phục vụ nhu cầu học tập, nghiên cứu và làm việc hiệu quả

Chủ đề:
Lưu

Nội dung Text: Chương 6 - Viết các Macro

  1. Chöông 6: Vieát caùc Macro Macro là gì? - Macro là một định nghĩa cụ thể cho một nhóm chỉ thị - Sử dụng Macro nhằm mục đích: * Đơn giản hóa và giảm số lần lặp lại của các chỉ thị được lặp lại * Giảm các lỗi gây ra * Sắp xếp chương trình hợp lý
  2. Chöông 6: Vieát caùc Macro Định nghĩa Macro Yêu cầu: - * Một macro phải xuất hiện trước bất kỳ segment nào được định nghĩa * Tên macro tuân theo quy ước chung - Cấu trúc macro: MACRO ;Định nghĩa ....... ;Thân Macro ;Kết thúc macro ENDM Code 1: Code 2: .DATA THONGBAO MACRO MSG ‘Hello$’ MSG DB MOV AH,9 .CODE LEA DX,MSG MOV AH,9 INT 21h LEA DX,MSG ENDM INT 21h .DATA ‘Hello$’ .... MSG DB .CODE THONGBAO MSG
  3. Chöông 6: Vieát caùc Macro Định nghĩa một số Macro cho một số nhóm lệnh thường dùng 1. Nhập ký tự từ bàn phím: a. Macro: NHAPLIEU MACRO MOV AH,1 INT 21 h ENDM b.Sử dụng: NHAPLIEU MACRO MOV AH,1 INT 21 h ENDM .CODE NHAPLIEU ....
  4. Chöông 6: Vieát caùc Macro Định nghĩa một số Macro cho một số nhóm lệnh thường dùng 2. Xuất ký tự ra màn hình: a. Macro: INKT MACRO KYTU MOV AH,2 MOV DL,KYTU INT 21h ENDM b.Sử dụng: INKT MACRO KYTU MOV AH,2 MOV DL,KYTU INT 21h ENDM .CODE ‘?’ INKT ....
  5. Chöông 6: Vieát caùc Macro Định nghĩa một số Macro cho một số nhóm lệnh thường dùng 3. Xuất chuỗi ra màn hình: a. Macro: INCHUOI MACRO CHUOI MOV AH,9 LEA DX,CHUOI INT 21 h ENDM b.Sử dụng: INCHUOI MACRO CHUOI MOV AH,9 LEA DX,CHUOI INT 21 h ENDM .CODE ‘I love ASM$’ INCHUOI ....
  6. Chöông 6: Vieát caùc Macro Định nghĩa một số Macro cho một số nhóm lệnh thường dùng 4. Thoát khỏi chương trình: a. Macro: THOAT MACRO MOV AH,4Ch INT 21 h ENDM b.Sử dụng: THOAT MACRO MOV AH,4Ch INT 21 h ENDM .CODE ....... THOAT
  7. Chöông 6: Vieát caùc Macro Định nghĩa một số Macro cho một số nhóm lệnh thường dùng • Sử dụng Macro để định nghĩa một Macro: Bằng cách sử dụng một Macro tham chiếu đến một macro đã định nghĩa 4. Thoát khỏi chương trình: b.Sử dụng: a. Macro: {Macro đã định nghĩa ở bên} INCHUOI MACRO CHUOI .DATA MOV AH,9 MSG DB ‘Nhan phim...$’ LEA DX,CHUOI .CODE INT 21h ....... ENDM THOAT NHAPLIEU MACRO MOV AH,1 INT 21h ENDM THOAT MACRO INCHUOI MSG NHAPLIEU MOV AH,4Ch INT 21h ENDM
  8. Chöông 6: Vieát caùc Macro Chỉ dẫn LOCAL Sử dụng định nghĩa các thành phần/nhãn của chỉ thị bên trong Macro - Đối số/nhãn được định bởi chỉ dẫn LOCAl chỉ hoạt động trong phạm vi - Macro - Cú pháp: LOCAL Ví dụ: Viết hàm chức năng chia lấy số nguyên bằng phép tính trừ - Phương pháp: - Lấy số bị chia trừ số chia - Kiểm tra số bị chia nhỏ hơn số chia? - Nếu chưa, tăng biến đếm lên 1 - Nếu nhỏ hơn, lưu kết quả Ví dụ: Tính kết quả chia lấy nguyên của 9/2 bằng phép tính trừ 9
  9. Chöông 6: Vieát caùc Macro Chỉ dẫn LOCAL .MODEL SMALL CHIA MACRO SBC,SC,KQ .DATA LOCAL SOSANH S1 DW 9 LOCAL THOAT S2 DW 2 KQ DW ? MOV AX,SBC MOV BX,SC .CODE XOR CX,CX MOV AX,@DATA MOV DS,AX SOSANH: CMP AX,BX CHIA S1,S2,KQ JL THOAT MOV BX,KQ SUB AX,BX INC CX ..................... JMP SOSANH THOAT: MOV KQ,CX ENDM
  10. Chöông 6: Vieát caùc Macro Chỉ dẫn INCLUDE Trên thực tế, các Macro thường được sử dụng lặp lại trong nhiều chương - trình Để tránh lặp lại việc định nghĩa Macro, liệt kê các Macro trong một thư - viện Phương pháp: Tập hợp các Macro đã định nghĩa là lưu trong một tập tin - (Ví dụ: MACRO.LIB) Sử dụng bằng cách gọi chỉ dẫn INCLUDE: - \ INCLUDE Ví dụ: File MACRO.LIB lưu tại D:\ASM\LIB, để sử dụng: - INCLUDE D:\ASM\LIB\MACRO.LIB ... INCHUOI MSG NHAPLIEU ....
  11. Chöông 6: Vieát caùc Macro Chỉ dẫn PURGE Chỉ dẫn INCLUDE xác định tất cả các Macro có trong thư viện - Hiện tượng dư thừa với những Macro không sử dụng trong thư viện - Chỉ dẫn PURGE giúp xóa đi các Macro không cần thiết. - - Cú pháp: PURGE [,Macro2,Macro3,..] Ví dụ: File MACRO.LIB lưu tại D:\ASM\LIB, có 3 Macro INCHUOI, - NHAPLIEU, XUATKYTU, nhưng chương trình chỉ sử dụng macro NHAPLIEU: INCLUDE D:\ASM\LIB\MACRO.LIB PURGE INCHUOI,XUATKYTU ;Xóa Macro ... ;Không hợp lệ INCHUOI MSG ;Hợp lệ NHAPLIEU ....
  12. Chöông 6: Vieát caùc Macro Các chỉ dẫn lặp lại trong Macro Chỉ dẫn REPT Lặp lại một nhóm các chỉ thị - Kết thúc bởi khóa ENDM - - Cú pháp: REPT ..... ENDM Ví dụ: Macro phát ra 5 lần tiếng Beep: - BEEP MACRO MOV AH,2 ;Mã ký tự Beep MOV DL,7 ;Lặp 5 lần REPT 5 INT 21 H ENDM ENDM
  13. Chöông 6: Vieát caùc Macro Các chỉ dẫn điều kiện trong Macro (điều kiện) ... ELSE .... ENDIF - Cú pháp: IFxx - Các chỉ dẫn thường dùng Thực thi khi biểu thức cho kết quả khác 0 1. IF expression : Thực thi khi biểu thức cho kết quả bằng 0 2. IFE expression: Thực thi khi đối số trống 3. IFB argument: Thực thi khi đối số không trống 4. IFNB argument: 5. IFIDN arg1,arg2: Thực thi khi chuỗi arg1 giống chuỗi agr2 Thực thi khi chuỗi arg1 khác chuỗi arg2 6. IFDIF arg1,arg2: Có thể sử dụng IF và IFE với các toán tử quan hệ EQ (bằng), NE - (không bằng), LT (nhỏ hơn), LE (nhỏ hơn hoặc bằng), GT (lớn hơn) và GE (lớn hơn hoặc bằng) V í dụ: IF exp1 EQ exp2
  14. Chöông 6: Vieát caùc Macro Các chỉ dẫn điều kiện trong Macro Ví dụ: Một số chỉ thị INT 21h cần giá trị trong DX  Kiểm tra đối số không rỗng để nạp cho DX DOS21 MACRO DOSFUNC,DXADDRESS MOV AH,DOSFUNC IFNB DXADDRESS MOV DX,OFFSET DXADDRESS ENDIF INT 21h ENDM  Macro DOS21 lúc này có thể sử dụng để nhập liệu: DOS21 01h  Macro DOS21 cũng có thể sử dụng để in chuỗi: DOS21 09h,MSG
  15. Chöông 6: Vieát caùc Macro Chỉ dẫn EXITM Với điều kiện đúng, trình dịch thoát khỏi Macro/chỉ thị lặp và tiếp tục - xử lý chỉ thị sau ENDM Cấu trúc: (điều kiện) - IFxx .... EXITM ENDM Ví dụ: - CHIA MACRO SBC,SC,KQ LOCAL SOSANH LOCAL THOAT ;Nếu chưa có giá trị SBC IFB SBC EXITM ENDIF ;Nếu chưa có giá trị SC IFB SC EXITM ENDIF ...... ENDM
ADSENSE

CÓ THỂ BẠN MUỐN DOWNLOAD

 

Đồng bộ tài khoản
7=>1