near指標和far指標?在DOS下(真實模式)地址是分段的,每一段的長度為64K位元組,剛好是16位(二進位制的十六位)。near指標的長度是16位的,所以可指向的地址範圍是64K位元組,通常說near指標的定址範圍是64K。far指標的長度是32位,含有一個16位的基地址和16位的偏移量,將基地址乘以16後再與偏移量相加,(所以實際上far指標是20位的長度。)即可得到far指標的1M位元組的偏移量。所以far指標的定址範圍是1M位元組,超過了一個段64K的容量。例如一個far指標的段地址為0x7000,偏移量為0x1244,則該指標指向地址0x71224.如果一個far指標的段地址是0x7122,偏移量為0x0004,則該指標也指向地址0x71224。 如果沒有指定一個指標是near或far,那麼預設是near。所以far指標要顯式指定。far指標工作起來要慢一些,因為每次訪問一個far指標時,都要將資料段或程式段的資料交換出來。另外,far指標的運算也比較反常,例如上面講到的far指標指向同一個地址,但是比較的結果卻不相同。什麼時候使用far指標?當使用小程式碼或小資料儲存模式時,不能編譯一個有很多程式碼或資料的程式。因為在64K的一個段中,不能放下所有的程式碼與資料。為了解決這個問題,需要指定以far函式或far指標來使用這部分的空間(64K以外的空間)。許多庫函式就是顯式地指定為far函式的形式。far指標通常和farmalloc()這樣的記憶體分配函式一起使用
near指標和far指標?在DOS下(真實模式)地址是分段的,每一段的長度為64K位元組,剛好是16位(二進位制的十六位)。near指標的長度是16位的,所以可指向的地址範圍是64K位元組,通常說near指標的定址範圍是64K。far指標的長度是32位,含有一個16位的基地址和16位的偏移量,將基地址乘以16後再與偏移量相加,(所以實際上far指標是20位的長度。)即可得到far指標的1M位元組的偏移量。所以far指標的定址範圍是1M位元組,超過了一個段64K的容量。例如一個far指標的段地址為0x7000,偏移量為0x1244,則該指標指向地址0x71224.如果一個far指標的段地址是0x7122,偏移量為0x0004,則該指標也指向地址0x71224。 如果沒有指定一個指標是near或far,那麼預設是near。所以far指標要顯式指定。far指標工作起來要慢一些,因為每次訪問一個far指標時,都要將資料段或程式段的資料交換出來。另外,far指標的運算也比較反常,例如上面講到的far指標指向同一個地址,但是比較的結果卻不相同。什麼時候使用far指標?當使用小程式碼或小資料儲存模式時,不能編譯一個有很多程式碼或資料的程式。因為在64K的一個段中,不能放下所有的程式碼與資料。為了解決這個問題,需要指定以far函式或far指標來使用這部分的空間(64K以外的空間)。許多庫函式就是顯式地指定為far函式的形式。far指標通常和farmalloc()這樣的記憶體分配函式一起使用