Trong đó cond: điều kiện tùy chọn
B: Dữ liệu 1 byte không dấu. Trong trƣờng hợp không sử dụng B thì dữ liệu là 4 byte
Rd: Dữ liệu từ ô nhớ đƣợc nạp vào thanh ghi.
Rn: Địa chỉ ô nhớ lƣu dữ liệu đƣợc chuyển vào thanh ghi Rm. Thanh ghi Rn phải khác với thanh ghi Rd và Rm.
Rm: Nội dung của thanh ghi Rm đƣợc lƣu vào ô nhớ. Rm có thể trùng với Rd. Trong trƣờng hợp này, lệnh sẽ thực hiện hoán chuyển nội dung giữa Rd và ô nhớ.
3.8. Các lệnh chỉ dẫn trong chƣơng trình
Align: Lệnh chỉ dẫn việc căn chỉnh vị trí ô nhớ hiện tại theo một kích thƣớc nhất định bằng cách
chèn thêm các bit 0 vào ô nhớ. Cú pháp: Align {expr{,offset}}
Trong đó: expr là số byte đƣợc căn chỉnh. Nếu expr không đƣợc chỉ ra, Align sẽ căn chỉnh vị trí lệnh tại từ nhớ tiếp theo.
Offset chỉ ra độ lệch từ vị trí đƣợc chỉ ra bởi expr.
Lệnh Align cho phép căn chỉnh các địa chỉ của lệnh tiếp theo tới vị trí ô nhớ (n*expr + offset), n là các giá trị 0, 1,…. Nếu expr không đƣợc chỉ ra, lệnh Align sẽ đặt lệnh tiếp theo ở vị trí từ nhớ tiếp theo tính từ lệnh trƣớc đó.
Ví dụ 1: Đoạn mã sau đây sử dụng 2 ô nhớ 1 byte gồm ô nhớ thứ nhất và ô nhớ thứ 4 trong 1 từ nhớ 4 byte để lƣu dữ liệu:
AREA OffsetExample, CODE Label DCB 0x5
ALIGN 4,3 ; ô nhớ tiếp theo là: 0*4 + 3 = 3 DCB 0x6
Nhãn Label là một mảng ô nhớ trong đó ô nhớ thứ nhất có giá trị là 5. Lệnh ALIGN 4,3 chỉ dẫn rằng lệnh tiếp theo đƣợc căn chỉnh 4 byte và cách ô nhớ trƣớc đó một đoạn 3 byte. Kết quả là lệnh DCB thứ hai đặt giá trị 0x6 vào byte cuối cùng của từ nhớ và giá trị 0 đƣợc chèn vào 2 byte giữa.
Ví dụ 2:
AREA OffsetExample1, CODE DCB 0x1
DCB 0x2 DCB 0x3
ALIGN 4,2 ; 1*4 + 2 DCB 0x4
Trong ví dụ 2, lệnh ALIGN chỉ dẫn lệnh tiếp theo đƣợc căn chỉnh 4 byte và lệch một đoạn 2 byte. Trong trƣờng hợp này, n = 1 vì 3 byte đầu của từ nhớ đã đƣợc sử dụng. Ngoài ra, giá trị 0 sẽ đƣợc chèn vào 3 byte tiếp theo lệnh DCB thứ 3.
52
1 2 3 0 0 0 4
Từ nhớ thứ 1 Từ nhớ thứ 2