關於far 指標

2021-04-06 17:08:51 字數 538 閱讀 2963

far* 現在不用了, 以前用在16位**裡, 因為**是16位的, 所以指標不夠長. 為了表示32位的位址. 應該使用 **r 來修飾 乙個指標。

16位機情況:

由於pc機的儲存器位址是由段位址和偏移位址組合而成,每個段不能超過64k位元組位址,因此同乙個段內的位址訪問,

僅用偏移位址就可以實現,用指標時,16位就可以了。稱為近程指標nea*,當要在另乙個段內取資料時,就要跨越段,

即要指明訪問段的段位址和偏移位址,這時段位址暫存器所存段位址要變,因此在使用指標指向另乙個段內位址時,

far*為遠端指標 

cha* far*p=(cha* far*)0xb5000002;

因而用遠端指標可以指向任何的資料段內位址,在大資料記憶體模式下,當跨越段進行資料訪問時(即訪問超過64k的資料),可以採用

遠端指標。當使用far型指標時,因要進行跨段定址,資料段暫存器的值要更換,因而加長了程式的執行時間。

另外遠端指標的值在進行加減時,只有偏移的位址部分進行運算,段位址不參加運算,即段位址不變,因此會出現折回現象。 

關於far指標

標準c語言裡沒有far遠端指標。那是16位的dos下的定址方式的衍生物。在32位的作業系統下,位址是32位的,不像dos的實模式要用分段的方法。簡而言之,不用管far遠端指標,因為標準c語言裡沒有far遠端指標,現在也不需要用。dos 的設計是基於16位的cpu的,也就是cpu中的每個暫存器 reg...

near指標,far指標,huge指標

near指標和far指標 在dos下 實模式 位址是分段的,每一段的長度為64k位元組,剛好是16位 二進位制的十六位 near指標的長度是16位的,所以可指向的位址範圍是64k位元組,通常說near指標的定址範圍是64k。far指標的長度是32位,含有乙個16位的基位址和16位的偏移量,將基位址乘...

near指標,far指標,huge指標

near指標和far指標 在dos下 實模式 位址是分段的,每一段的長度為64k位元組,剛好是16位 二進位制的十六位 near指標的長度是16位的,所以可指向的位址範圍是64k位元組,通常說near指標的定址範圍是64k。far指標的長度是32位,含有乙個16位的基位址和16位的偏移量,將基位址乘...