Lệnh nào trong số các lệnh sau đây sử dụng kiểu định địa chỉ dài:
Đáp án đúng: C
Để trả lời câu hỏi này, cần hiểu về các kiểu định địa chỉ khác nhau trong kiến trúc vi điều khiển, đặc biệt là với tập lệnh MCS-51 (thường dùng với 8051). Các lệnh nhảy và gọi chương trình con có các phiên bản khác nhau với tầm nhảy khác nhau, do đó sử dụng các kiểu định địa chỉ khác nhau.
A. SJMP rel: SJMP (Short Jump) sử dụng địa chỉ tương đối (relative addressing) với offset 8-bit. Tầm nhảy ngắn, chỉ trong khoảng -128 đến +127 byte so với địa chỉ hiện tại của bộ đếm chương trình (PC).
B. ACALL addr11: ACALL (Absolute Call) sử dụng địa chỉ tuyệt đối 11-bit. Điều này cho phép gọi chương trình con trong cùng một vùng nhớ 2KB.
C. LCALL addr16: LCALL (Long Call) sử dụng địa chỉ tuyệt đối 16-bit. Điều này cho phép gọi chương trình con ở bất kỳ đâu trong bộ nhớ chương trình 64KB. Đây là kiểu định địa chỉ dài.
D. MOV A, @A+DPTR: Lệnh này sử dụng kiểu định địa chỉ gián tiếp (indirect addressing) thông qua thanh ghi DPTR (Data Pointer). Nó không phải là một lệnh nhảy hay gọi chương trình con, mà là một lệnh di chuyển dữ liệu.
Vậy, đáp án đúng là C. LCALL rel vì nó sử dụng địa chỉ 16-bit, tức là kiểu định địa chỉ dài để có thể gọi đến bất kỳ địa chỉ nào trong bộ nhớ chương trình.