- 1、本文档共27页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
* * 五、与地址操作有关的几个函数 1、FP_SEG 功? 能:获取远地址中的段值 原型:unsigned FP_SEG(void far *farptr); 例8.1 #include dos.h #include stdio.h int main() { char far *filename = “fpseg.c”; printf(%04x\n,FP_SEG(filename)); //0表示用0补足4位 return 0; } * * 五、与地址操作有关的几个函数 2、FP_OFF 功??能: 获取远地址中的偏移地址 原型: unsigned FP_OFF(void far *farptr); 例8.2 #include dos.h #include stdio.h int main() {? char far *str = fpoff.c; ? printf(%04x\n , FP_OFF(str)); ? return 0; } * * 五、与地址操作有关的几个函数 3、MK_FP 功能:由段值和偏移地址组成一个远程指针。 原型:void far *MK_FP(unsigned seg, unsigned off); 例8.3 (主要程序段): char far *p; unsigned seg, off; p = MK_FP(0xb000, 0x20); seg = FP_SEG(p); off = FP_OFF(p); printf(“far p:%Fp,seg:%04X,off:%04X\n”, p,seg,off); ? * * 五、与地址操作有关的几个函数 4、peekb和peek 功能:按给定的地址从内存读取一个字节或一个字 原型: char peekb(unsigned seg, unsigned off); int peek(unsigned seg, unsigned off); 例如: char c, s[]=“hello”; //s数组在栈区 c=peekb(_SS, s); printf(%c\n, c); 输出结果是:h * * 五、与地址操作有关的几个函数 5、pokeb和poke 功能:向指定的位置写一个字节或一个字 原型: void pokeb(unsigned seg, unsigned off, char value); void poke (unsigned seg, unsigned off, int value); 例如: char s[10]; int a=0x0041; poke(_SS, s, a); printf(“%s\n”, s); 输出结果是:A * * 第三节 TC的编译模式 微模式(Tiny) 小模式(Small) 中模式(Medium) 紧凑模式(Compact) 大模式(Large) 巨模式(Huge) * * 问 题 若要使寄存器AX存储3,C中应如何表达? 实地址模式如何寻址? 常用的段寄存器有哪些?分别存储什么? 什么是近程指针、远程指针?如何定义?使用时注意什么? 如何从一个远程指针分离出段地址和偏移地址? 如何由段地址和偏移地址得到一个远程指针? TC的编译模式有哪些?适用于什么情况? 小模式下是否需要远程指针? 什么情况下需要? 若程序中访问数据段用的是far指针,则TC哪些编译模式不能用? 第十三章 文 件 第十三章 文 件 第十三章 文 件 第十三章 文 件 第十三章 文 件 第十三章 文 件 第十三章 文 件 第十三章 文 件 第十三章 文 件 第十三章 文 件 第十三章 文 件 第十三章 文 件 * * 第八章 内存管理机制与TC编译模式 寄存器和伪变量 内存的寻址模式 TC的编译模式 * * 第一节 寄存器和伪变量 寄存器是CPU中的部件,用来存储数据、地址和指令 C语言中,程序员在编程时可以直接使用寄存器 CPU中,寄存器的个数以及每个寄存器的位数会有所不同,取决于CPU的型号 * * 第一节 寄存器和伪变量 8086、8088、80286的CPU只有14个寄存器,都是16位寄存器,如右图 其中:AX、BX、CX、DX是多用途寄存器,又称通用寄存器 AX、BX、CX、DX,每个都可以分为两个8位寄存器来使用 * * 第一节 寄存器和伪变量 CS: 代码段寄存器,用来“指明” 代码段在内存中的起始位置 DS: 数据段寄存器,用来“指明”数据段的起始位置 数据段可以细分成三部分: 初始化为非零的数据区 BSS(Block Star
您可能关注的文档
- 第7课海湾战争1(人教版选修三)上课用教案分析.ppt
- 第7课华盛顿体系的建立教案分析.ppt
- 第7课启蒙运动的兴起教案分析.ppt
- 第7课人教版世界反法西斯战争的胜利教案分析.ppt
- 第三编中小学学校教案分析.ppt
- 第7课世界反法西斯战争的胜利(共94张)教案分析.ppt
- 第三部分_软件设计与建模软件设计教案分析.ppt
- 第三部分第十三章第二节地理信息技术在区域地理环境研究中的应用教案分析.ppt
- 第三部分摄像操作技术教案分析.ppt
- 第7课我国的民族区域自治制度和宗教政策教案分析.ppt
- 小学科学:ESP8266智能插座电路原理与动手实践研究教学研究课题报告.docx
- 《金融开放浪潮下我国多层次监管体系构建与创新研究》教学研究课题报告.docx
- 区域教育质量监测中人工智能应用的数据质量分析与优化策略教学研究课题报告.docx
- 《金融科技监管中的数据治理与合规性要求》教学研究课题报告.docx
- 《3D打印技术在航空航天领域中的多材料制造与复合材料应用》教学研究课题报告.docx
- 《绿色金融发展中的政府职能与市场机制研究》教学研究课题报告.docx
- 《植物工厂多层立体栽培光环境调控技术对植物生长发育节律的调控机制探讨》教学研究课题报告.docx
- 销售团队年度业绩总结.docx
- 银行风险管理与金融危机防范.docx
- 银行网络攻击预警与快速响应机制.docx
文档评论(0)