Chương IV Chương trình và thực hiện chương trình
7. Các phương pháp đánh địa chỉ ô nhớ
7.7. Phương pháp đánh địa chỉ tương đối
Phương pháp đánh địa chỉ tương đối không cho địa chỉ của toán hạng trong lệnh mà cho gia số của địa chỉ ô nhớ chứa toán hạng và địa chỉ của ô nhớ chứa mã lệnh. Với phương pháp này ta có thể giảm bớt số bít cần sử dụng để cho địa chỉ trong lệnh.
Ví dụ nếu bộ nhớ quản lý được 216 ô nhớ (từ), chúng ta phải cần 2 byte để đánh địa chỉ các ô nhớ. Khi đó với cách đánh địa chỉ trực tiếp, ngoài 1 byte để cho mã lệnh, ta cần thêm 2 byte trong lệnh để cho địa chỉ của toán hạng.
Còn nếu sử dụng phương pháp đánh địa chỉ tương đối, gia số của địa chỉ chỉ cần 8 bit để biểu diễn.
Để hiểu rõ nhất cách đánh địa chỉ này ta so sánh với cách đánh địa chỉ trực tiếp. Với cách đánh địa chỉ trực tiếp, các bit tiếp theo trong lệnh là địa chỉ của toán hạng.
Còn với cách đánh địa chỉ tương đối, chúng là hiệu số của địa chỉ của toán hạng và địa chỉ của mã lệnh.
Ví dụ như với các máy tính 6800, sử dụng cách đánh địa chỉ tương đối lệnh sẽ gồm mã lệnh và gia số của địa chỉ gồm 8 bit (mã lệnh sẽ cho biết sử dụng cách đánh địa chỉ nào). Như vậy để nạp hết một lệnh chỉ cần 2 byte. Địa chỉ trong byte thứ hai của lệnh sẽ được cộng với địa chỉ của ô nhớ chứa mã lệnh và kết quả sẽ là địa chỉ của toán hạng. Địa chỉ trong byte thứ hai của lệnh được hiểu như là số bù 2 có dấu, do đó nó có thể trỏ tới một địa chỉ cao hơn hoặc thấp hơn so với địa chỉ chứa mã lệnh.
Một vấn đề quan trọng cần phải xác định đối với phương pháp đánh địa chỉ tương đối là độ lớn tối đa của gia số. Việc lựa chọn độ lớn này có tác động trực tiếp tới độ dài của lệnh cũng như vùng nhớ có thể truy cập được.