Định địa chỉ gián tiếp thanh ghi:

Một phần của tài liệu Cấu trúc vi xử lý 16bit 8086/88 (Trang 27 - 29)

II. CÁC PHƯƠNG PHÁP ĐỊNH ĐỊA CHỈ:

a.Định địa chỉ gián tiếp thanh ghi:

Cách định địa chỉ dùng thanh ghi giống như cách định địa chỉ trực tiếp tuy nhiên địa chỉ offset được lưu trong thanh ghi.

Địa chỉ offset có thể lưu trữ ở các thanh ghi BP, BX, Di hoặc SI. Các dấu ngoặc vuông [ ] dùng để chỉ cách định địa chỉ gián tiếp.

Ví dụ 4: Lệnh MOV AX, [SI]

Lệnh có chức năng “copy dữ liệu trong ô nhớ có địa chỉ offset lưu trong thanh ghi SI trong đoạn bộ nhớ dữ liệu vào thanh ghi AX” và quá trình được thực hiện như hình 3-16a và 3- 16b.

Trong lệnh này thì địa chỉ offset lưu trong SI bằng 1234H nằm trong vi xử lý. Địa chỉ offset này được cộng thêm địa chỉ của thanh ghi DS hiện hành sau khi nhân với 16 như sau:

PA = 02000H + 1234H = 03234H

Hình 3-16a. Trước khi thực hiện lệnh MOV AX,[SI].

Hình 3-16b. Sau khi thực hiện lệnh MOV AX,[SI].

Sau khi thực hiện lệnh thì thanh ghi IP tăng lên 2 đơn vị vì mã của lệnh này bằng 2 byte, dữ liệu trong 2 ô nhớ liên tiếp có địa chỉ 03234H và 03235H được copy vào thanh ghi AX theo thứ tự byte thấp trước byte cao sau.

Thanh ghi DS là thanh ghi địa chỉ đoạn dữ liệu mặc nhiên. Trong một số trường hợp không rõ ràng thì trình biên dịch cần thêm chỉ dẫn BYTE PTR hoặc WORD PTR để chỉ kích thước của địa chỉ dữ liệu bằng con trỏ bộ nhớ.

Ví dụ: lệnh MOV [DI],10H là lệnh không rõ ràng và có thể hiểu là cất dữ liệu 10H vào ô nhớ byte hay word. Để tránh hiểu nhầm ta phải thêm chỉ dẫn BYTE PTR hay WORD PTR như sau:

MOV BYTE PTR [DI], 10H MOV WORD PTR [DI], 10H MOV WORD PTR [DI], 10H

Cách định địa chỉ gián tiếp thanh ghi thường dùng để truy xuất bảng dữ liệu trong bộ nhớ.

Một phần của tài liệu Cấu trúc vi xử lý 16bit 8086/88 (Trang 27 - 29)