关于far*指针

  <script type="text/javascript"> srcString = contentarea.value; srcString = ubbReplace(srcString, 'all'); document.write(srcString); srcString = signaturearea.value; showSign(srcString); </script>FAR* 现在不用了, 以前用在16位代码里, 因为代码是16位的, 所以指针不够长. 为了表示32位的地址. 应该使用 **r 来修饰 一个指针。

16位机情况:
由于PC机的存储器地址是由段地址和偏移地址组合而成,每个段不能超过64K字节地址,因此同一个段内的地址存取,
仅用偏移地址就可以实现,用指针时,16位就可以了。称为近程指针nea*,当要在另一个段内取数据时,就要跨越段,
即要指明存取段的段地址和偏移地址,这时段地址寄存器所存段地址要变,因此在使用指针指向另一个段内地址时,
就要用32位表示(即段地址:偏移地址),这类指针,称为远程指针,是***型.


far*为远程指针 
    
    远程指针是指32位的指针,它表示段地址:偏移地址,如定义远程指针P指向B500段的2号地址,即B500:0002,则可写作:
cha* far*p=(cha* far*)0xB5000002;
因而用远程指针可以指向任何的数据段内地址,在大数据内存模式下,当跨越段进行数据存取时(即存取超过64K的数据),可以采用
远程指针。当使用far型指针时,因要进行跨段寻址,数据段寄存器的值要更换,因而加长了程序的执行时间。
    另外远程指针的值在进行加减时,只有偏移的地址部分进行运算,段地址不参加运算,即段地址不变,因此会出现折回现象。 

 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值