第8章内存管理机制与TC编译模式教案分析.ppt

第8章内存管理机制与TC编译模式教案分析.ppt

  1. 1、本文档共27页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 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

您可能关注的文档

文档评论(0)

阿里山的姑娘 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档