int 20h ; CLRSCR Proc mov ah,0fh int 10h mov ah,00 int 10h ret CLRSCR Endp ; Chu_hoa Proc mov al,[si] cmp al,"a" jb Bo_qua cmp al,"z" ja Bo_qua sub byte ptr[si],32 Bo_qua: ret Chu_hoa Endp ; Chu_thuong Proc mov al,[si] cmp al,"A" jb Boqua cmp al,"Z" ja Boqua add byte ptr [si],32 Boqua: ret Chu_thuong Endp ; Code Ends End Start 1. Tệp tin hợp ngữ nguồn: tập hợp các phát biểu hợp ngữ (Assembly language statment). Mỗi một phát biểu được viết trên 1 dòng. Đó có thể là 1 lệnh (Assembly language Instruction) hoặc 1 chỉ dẫn (Assembler directive). 2. Cấu trúc của 1 dòng lệnh/ chỉ dẫn của hợp ngữ * Khuôn dạng của 1 dòng lệnh hợp ngữ như sau: Nhãn chỉ thị toán hạng; lời bình - Nhãn: dùng để thay thế địa chỉ câu lệnh cho phép chương trình tham chiếu thông qua nhãn. Ở ví dụ 2 Printloop là 1 nhãn chỉ 1 địa chỉ. Writechar cũng là 1 nhãn chỉ 1 thủ tục. - Chỉ thị (Instruction) Các lệnh hợp ngữ xác định hành động mà CPU thực hiện. Còn các chỉ dẫn không phải là lệnh của CPU, nó chỉ dùng để điều khiển cách dịch của Assemler. Ví dụ: INT 21, MOV ah, 2h là những chỉ thị của hợp ngữ. - Toán hạng xác định các dữ liệu mà câu lệnh cần xử lý, các toán hạng là các hằng, thanh ghi, tên tượng trưng. Toán hạng thường là các hằng, tên thanh ghi, tên tượng trưng hay biểu thức - Chú thích: vùng này luôn bắt đầu bằng dấu: được sử dụng để ghi chú, chú giải * Khuôn dạng của 1 dòng chỉ dẫn hợp ngữ như sau: [tên] tên gợi nhớ [toán hạng] [;lời bình] Chỉ dẫn được dùng để định nghĩa tên tượng trưng, khai báo dữ liệu và biến, khai báo đoạn chương trình con, đánh dấu cuối đoạn, cuối chương trình con hay kết thúc chương trình. Macro Assemler có rất nhiều chỉ dẫn khác nhau. Có thể liệt kê một số nhóm chính như sau: + Nhóm định nghĩa tên tượng trưng: Name EQU <text> VD: x EQU count Name=Expression dong=10 + Nhóm khai báo dữ liệu [Name] DB data DB,DW,DD data MSG DB ‘Hellos’ khai báo chuỗi + Nhóm khai báo đoạn và chương trình con Chỉ dẫn: Segment và end Name SEGMENT Name ENDS Chỉ dẫn này được sử dụng để khai báo 1 đoạn. Nó chia chương trình nguồn thành các đoạn phân biệt. Có 4 kiểu đoạn CODE, DATA, EXTRA, STACK. Chỉ dẫn SEGMENT đánh dấu điểm bắt đầu của đoạn, còn chỉ dẫn ENDS đánh dấu điểm cuối của đoạn. Chỉ dẫn: ASSUME ASSUME Seg_reg: Seg_name ASSUME Seg_reg: NOTHING ASSUME NOTHING Chức năng: ASSUME giúp Assemler trong việc chuyển đổi các biến hay các nhãn trong chương trình sang các địa chỉ tương ứng. ASSUME giúp Assemler biến thanh ghi đoạn nào mà chương trình cần dùng để địa chỉ hoá các nhãn và các biến. - Seg_reg là tên các thanh ghi đoạn - Seg_name là tên của các đoạn đã được khai báo bằng chỉ dẫn SEGMENT. - Từ khoá NOTHING dùng để huỷ bỏ chỉ dẫn ASSUME trước đó. Ví dụ 1: ASSUME CS: cseg, DS: dseg + Chỉ dẫn PROC và ENDP Chỉ dẫn PROC và ENDP dùng để khai báo 1 chương trình con. + Nhóm chỉ dẫn điều khiển ORG Expression Chỉ dẫn dùng để báo cho Assemler biết các mã lệnh và dữ liệu ngay sau Directive ORG sẽ được nạp vào bộ nhớ bắt đầu tại địa chỉ offset được xác định. VD: ORG 100h Tác giả: NGUYỄN VĂN HOÀN Đơn vị: BM KTMT – Công Nghệ Thông Tin Trường Sĩ quan Chỉ Huy Kỹ Thuật Thông Tin Email: nguyenvanhoan76@gmail.com . đoạn và chương trình con Chỉ dẫn: Segment và end Name SEGMENT Name ENDS Chỉ dẫn này được sử dụng để khai báo 1 đoạn. Nó chia chương trình nguồn thành các đoạn phân biệt. Có 4 kiểu đoạn. Assemler trong việc chuyển đổi các biến hay các nhãn trong chương trình sang các địa chỉ tương ứng. ASSUME giúp Assemler biến thanh ghi đoạn nào mà chương trình cần dùng để địa chỉ hoá các nhãn. và biến, khai báo đoạn chương trình con, đánh dấu cuối đoạn, cuối chương trình con hay kết thúc chương trình. Macro Assemler có rất nhiều chỉ dẫn khác nhau. Có thể liệt kê một số nhóm chính