Địa chỉ địa chỉ dịch chuyển Ờ Displacement

Một phần của tài liệu giáo trình kiến trúc mạng máy tính (Trang 172 - 173)

Một chế ựộ ựược tổng hợp từ hai chế ựộ: ựịa chỉ trực tiếp và ựịa chỉ gián tiếp thanh ghi. Cách tắnh ựịa chỉ thực như sau:

EA = A + (R)

Chế ựộ này ựòi hỏi trong mã lệnh phải có hai trường ựịa chỉ, một trường cho ựịa chỉ thanh ghi (R) và một trường cho ựịa chỉ trực tiếp bộ nhớ (A). địa chỉ thực là tổng của ựịa chỉ A với giá trị ựịa chỉ chứa trong thanh ghi R.

Một cách ựành ựịa chỉ dịch chuyển hay dùng là dạng ựánh ựịa chỉ

Ộchỉ sốỢ (Indexing). Có nhiều thuật toán ựòi hỏi một số thao tác trên dãy

các cấu trúc dữ liệu ựược chứa trong các vị trắ nhớ liên tiếp. Vắ dụ chúng ta xem một khối gồm N từ chiếm các vị trắ nhớ:

A, A+1, A+2,Ầ, A+N-1

Giả sử chúng cần ựược chuyển tới vị trắ nhớ: B, B+1, B+2,Ầ, B+N-1

Và giả sử ta dùng lệnh máy

MOVE B,A

ựể chuyển nội dung vị trắ nhớ A ựến vị trắ nhớ B. Máy thi hành lệnh này và sau ựó sửa lại thành

MOVE B+1,A+1

rồi thi hành lệnh này, rồi lại sửa lại, lại thi hànhẦ. cứ lặp ựi lặp lại chu kỳ này cho ựến khi tất cả N word ựược copy xong.

Bài toán như thế ựược giải quyết tốt nhất bằng cách sử dụng một thanh ghi gọi là thanh ghi chỉ số (Index register ) và chúng làm việc như sau:

Trường ựịa chỉ sẽ có hai phần: một con số của thanh ghi chỉ số và một hằng số. Trong vắ dụ trên nếu cả hai ựịa chỉ ựều ựược ựánh chỉ số sử dụng một index register (IR) có chứa số nguyên k, thi lệnh MOVE B,A sẽ chuyển nội dung của vị trắ nhớ A+k tới B+k. Bằng cách khởi tạo cho IR giá trị ban ựầu 0 và tăng nó lên bằng kắch thước một word mỗi khi copy xong một word, thì chúng ta chỉ cần sử dụng một thanh ghi cho vòng lặp copy.

Việc ựánh ựịa chỉ Index ựược sử dụng rộng rãi ựể ựánh ựịa chỉ một trường tại một khoảng cách ựã biết tắnh từ ựiểm ựầu của cấu trúc dữ liệu ựã cho.

Một phần của tài liệu giáo trình kiến trúc mạng máy tính (Trang 172 - 173)