Segment: Offset

L

Lord Loh.

Guest
Trong 16 máy có 20 bit bus địa chỉ bit, bộ nhớ là phải có được chia thành nhiều phân đoạn có offsets của 0 thông qua 65535.

Đây là nghĩa vụ phải được thực hiện để lưu trữ địa chỉ 20 bit, vào sổ đăng ký hai 16 bit.

Một cuốn sách mà tôi đã nói:

Thông qua văn bản TSRs C bởi Yashwant Kanitkar đã viết:

... Tuy nhiên trong sổ đăng ký 16-bit, giá trị tối đa có thể được lưu trữ là 65.535.
Sau đó làm thế nào để chúng ta truy cập vào các địa điểm vượt ra ngoài byte thứ 65.535?
Bằng cách sử dụng hai thanh ghi (phân đoạn và bù đắp) kết hợp.
Đối với bộ nhớ này (1MB) tổng số được chia thành một số đơn vị mỗi gồm 65.536 địa điểm.
Mỗi một đơn vị như vậy được gọi là một phân đoạn.
Mỗi phân khúc luôn bắt đầu tại một số loation đó là chính xác chia hết cho 16.
Việc đăng ký phân đoạn chứa địa chỉ của nơi phân đoạn bắt đầu trong khi đăng ký bù đắp có chứa mã hiệu số của các số liệu từ các nơi phân đoạn bắt đầu.
Ví dụ: số lượng chứa trong đăng ký là đoạn 2 và trong đăng ký hiệu số là 5, địa chỉ của các số liệu và mã số sẽ được (16 * 2) 5 = 37
 
.

Trong 8.086 bộ vi xử lý gia đình, 20-bit địa chỉ vật lý bằng phân đoạn * 16 offset.Phân khúc thực sự chỉ là một điểm khởi đầu.Có có nhiều kết hợp của các phân đoạn và bù đắp điểm đó đến địa chỉ vật lý tương tự.Năm sau đó bộ vi xử lý Intel, các phân đoạn chế độ bảo vệ hoạt động rất khác nhau.

 
Tham chiếu thực hiện để thiết lập các phân khúc là gì?Hoặc là nó tùy ý?

Tôi hiểu rằng các phân đoạn 0 bắt đầu từ 00000h và phân đoạn 1 từ 10000h và phân đoạn 2 từ 20000h?

Cảm ơn bạn.

 
= 0 * 16 0 = 00000h.

Bắt đầu của phân đoạn 0 = segment * 16 offset
= 0 * 16 0 = 00000h.= 1 * 16 0 = 00010h.

Bắt đầu của phân đoạn 1 = segment * 16 offset
= 1 * 16 0 = 00010h.= 2 * 16 0 = 00020h.

Bắt đầu của phân đoạn 2 = segment * 16 offset
= 2 * 16 0 = 00020h.
...= 65535 * 16 0 = FFFF0h.

Bắt đầu của phân đoạn 65.535 = đoạn * 16 offset
= 65535 * 16 0 = FFFF0h.
= 0 * 16 65535 = 0FFFFh.

Cuối đoạn 0 = segment * 16 offset
= 0 * 16 65535 = 0FFFFh.= 1 * 16 65535 = 1000Fh.

Cuối đoạn 1 = segment * 16 offset
= 1 * 16 65535 = 1000Fh.= 2 * 16 65535 = 1001Fh.

Cuối đoạn 2 = segment * 16 offset
= 2 * 16 65535 = 1001Fh.
...= 65535 * 16 65535 = 0FFEFh (remember only 20 bits).

Cuối đoạn 65.535 = đoạn * 16 offset
= 65535 * 16 65535 = 0FFEFh (nhớ chỉ 20 bit).Cũng tìm kiếm của Google để biết thêm thông tin.Ví dụ:
http://thestarman.pcministry.com/asm/debug/Segments.html
Last edited by echo47 vào ngày 24 tháng 11 năm 2005 11:15; edited 2 lần trong tổng số

 
Điều này làm cho nó appeat rằng có thể có nhiều như 0FFF đoạn ... Tôi có percived nó chính xác?

Có thể có được không đầy đủ các phân đoạn?Vì vậy, tổng số là phân đoạn FFFF?

 

Welcome to EDABoard.com

Sponsor

Back
Top