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ì
Trang 1int 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
Trang 2cmp 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)
Trang 3Cá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
Trang 4[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
Trang 5- 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