JavaScript is required

Lệnh nào trong số các lệnh sau đây sử dụng kiểu định địa chỉ tương đối:

A.

SJMP rel

B.

ACALL rel

C.

LCALL rel

D.

MOV A, @A+DPTR

Trả lời:

Đáp án đúng: A


Kiểu định địa chỉ tương đối (relative addressing) sử dụng một offset được cộng vào địa chỉ của thanh ghi lệnh (program counter - PC) để xác định địa chỉ đích. Các lệnh nhảy (jump) thường sử dụng kiểu định địa chỉ này.

  • A. SJMP rel: SJMP (Short Jump) là lệnh nhảy ngắn, sử dụng kiểu định địa chỉ tương đối. rel là offset tương đối so với địa chỉ hiện tại của PC.
  • B. ACALL rel: ACALL (Absolute Call) gọi một subroutine trong phạm vi 2KB, sử dụng một phần của địa chỉ tuyệt đối kết hợp với địa chỉ trang hiện tại. Tuy nhiên, thường có một cách hiểu không chính xác về 'rel' ở đây. ACALL không thực sự sử dụng kiểu định địa chỉ tương đối thuần túy như SJMP.
  • C. LCALL addr16: LCALL (Long Call) gọi một subroutine bằng địa chỉ 16-bit tuyệt đối (addr16), không sử dụng định địa chỉ tương đối.
  • D. MOV A, @A+DPTR: Lệnh này sử dụng kiểu định địa chỉ gián tiếp thông qua thanh ghi DPTR, không phải định địa chỉ tương đối. Nó tính toán địa chỉ bằng cách cộng giá trị trong thanh ghi A vào DPTR.

Vậy, đáp án đúng nhất là A. SJMP rel, vì nó thể hiện rõ ràng việc sử dụng offset tương đối để nhảy đến một vị trí mới trong bộ nhớ.

Câu hỏi liên quan