当前位置: 首页 > news >正文

寻址 far near

C语言

far:远指针

在DOS下(实模式)地址是分段的,每一段的长度为64K字节,刚好是16位(二进制的十六位)。

near指针的长度是16位的,所以可指向的地址范围是64K字节,通常说near指针的寻址范围是64K。

far指针的长度是32位,含有一个16位的基地址和16位的偏移量,将基地址乘以16后再与偏移量相加,(所以实际上far指针是20位的长度。)即可得到far指针的1M字节的偏移量。所以far指针的寻址范围是1M字节,超过了一个段64K的容量。例如一个far指针的段地址为0x7000,偏移量为0x1224,则该指针指向地址0x71224。如果一个far指针的段地址是0x7122,偏移量为0x0004,则该指针也指向地址0x71224。

如果没有指定一个指针是near或far,那么默认是near。所以far指针要显式指定。far指针工作起来要慢一些,因为每次访问一个far指针时,都要将数据段或程序段的数据交换出来。另外,far指针的运算也比较反常,例如上面讲到的far指针指向同一个地址,但是比较的结果却不相同。

什么时候使用far指针?

当使用小代码或小数据存储模式时,不能编译一个有很多代码或数据的程序。因为在64K的一个段中,不能放下所有的代码与数据。为了解决这个问题,需要指定以far函数或far指针来使用这部分的空间(64K以外的空间)。许多库函数就是显式地指定为far函数的形式。far指针通常和farmalloc()这样的内存分配函数一起使用

汇编语言

在汇编语言中,FAR是指远过程调用,即子程序和主程序不在一个代码段,则使用FAR。远调用发生后,主程序堆栈中将压入CS、IP值保护起来。

使用范例: SUB1 PROC FAR; 调用不在同一代码段内的子程序SUB1

相关文章:

  • Session原理
  • DOM选择器
  • JavaScript 全局对象
  • CMake详解
  • CMake脚本编写
  • vs2015使用教程
  • vs项目配置
  • VS项目属性的一些配置项的总结
  • 引入Irvine32库
  • vs2019安装教程
  • cef3 Binary Distributions下载及示例编译
  • VS2019直接编译cmake项目
  • C++调用构造函数的方式
  • chrome和Chromium有什么区别
  • C++ 函数指针及delegate的几种方法
  • 5、React组件事件详解
  • Android路由框架AnnoRouter:使用Java接口来定义路由跳转
  • Apache的80端口被占用以及访问时报错403
  • extract-text-webpack-plugin用法
  • github指令
  • JAVA_NIO系列——Channel和Buffer详解
  • Java应用性能调优
  • Laravel核心解读--Facades
  • Redis提升并发能力 | 从0开始构建SpringCloud微服务(2)
  • 纯 javascript 半自动式下滑一定高度,导航栏固定
  • 给github项目添加CI badge
  • 计算机在识别图像时“看到”了什么?
  • 将回调地狱按在地上摩擦的Promise
  • 猫头鹰的深夜翻译:Java 2D Graphics, 简单的仿射变换
  • 数组大概知多少
  • 我是如何设计 Upload 上传组件的
  • ​DB-Engines 11月数据库排名:PostgreSQL坐稳同期涨幅榜冠军宝座
  • ​ssh-keyscan命令--Linux命令应用大词典729个命令解读
  • #include
  • #WEB前端(HTML属性)
  • %3cli%3e连接html页面,html+canvas实现屏幕截取
  • (2)STM32单片机上位机
  • (52)只出现一次的数字III
  • (阿里云万网)-域名注册购买实名流程
  • (二)学习JVM —— 垃圾回收机制
  • (二十三)Flask之高频面试点
  • (十一)c52学习之旅-动态数码管
  • (原創) 如何讓IE7按第二次Ctrl + Tab時,回到原來的索引標籤? (Web) (IE) (OS) (Windows)...
  • .dat文件写入byte类型数组_用Python从Abaqus导出txt、dat数据
  • .NET NPOI导出Excel详解
  • .net 发送邮件
  • .net 开发怎么实现前后端分离_前后端分离:分离式开发和一体式发布
  • .net 使用$.ajax实现从前台调用后台方法(包含静态方法和非静态方法调用)
  • .NET/C# 使窗口永不激活(No Activate 永不获得焦点)
  • .NET/C# 使用 SpanT 为字符串处理提升性能
  • .net开发时的诡异问题,button的onclick事件无效
  • @Mapper作用
  • @NestedConfigurationProperty 注解用法
  • @property括号内属性讲解
  • [20160807][系统设计的三次迭代]