三、段定义 上 段定义:确定代码组织与数据存储的方式 2种:完整的段定义和简化的段定义 (MASM5.0以上) 完整的段定义包括: (1)segment.和end段定义 (2)ASSUME段分配 (3) GROUP段组定义 Ji Lin University China COMPUTER SCIENCE AND TECHNOLOGY
COMPUTER SCIENCE AND TECHNOLOGY COMPUTER SCIENCE AND TECHNOLOGY 三、段定义 • 段定义:确定代码组织与数据存储的方式 • 2 种 : 完整的段定义和 简 化 的 段 定 义 (MASM 5.0以上) • 完整的段定义包括: (1)segment和end段定义 (2)ASSUME段分配 (3)GROUP 段组定义
CHINA segment7和end段定义 (1) ● 格式: 段名 segment[定位类型][组合类型] [字长类型][类别'] s●● 段名 end 功能:定义段名、段属性。 一般情况下,选项可以不用,用默认值,但若需 连接本程序和其他程序,就要使用这些说明。 段名是段的标识符,指明段的基址,由程序员指 定。 Ji Lin University China COMPUTEP CIRNCE AND里COGY
COMPUTER SCIENCE AND TECHNOLOGY COMPUTER SCIENCE AND TECHNOLOGY segment和end段定义 (1) • 格式: 段名 segment [定位类型][组合类型] [字长类型][‘类别’] … … 段名 end • 功能:定义段名、段属性。 • 一般情况下,选项可以不用,用默认值,但若需 连接本程序和其他程序,就要使用这些说明。 • 段名是段的标识符,指明段的基址,由程序员指 定
segment7和end段定义(2) 上 ①定位类型 ● 定位类型:指定段起始边界,5种 ● BYTE:任意位置 ● WORD:偶地址,地址低1位为0 DWORD:4的倍数地址,地址低2位为0 PARA:16的倍数地址,地址低4位为0 PAGE:256的倍数地址,地址低8位为0,一页 的起点,默认值。 Ji Lin University China COMPUTER SCIENCE AND TECHNOLOGY
COMPUTER SCIENCE AND TECHNOLOGY COMPUTER SCIENCE AND TECHNOLOGY segment和end段定义 (2) ①定位类型 • 定位类型:指定段起始边界,5种 • BYTE: 任意位置 • WORD: 偶地址,地址低1位为0 • DWORD:4的倍数地址,地址低2位为0 • PARA: 16的倍数地址,地址低4位为0 • PAGE: 256的倍数地址,地址低8位为0,一页 的起点,默认值
segment和end段定义 (3) ②组合类型 组合类型:表示本段与其它段之间,具有相同段名的各段的组合 关系,为连接程序提供信息,属于连接类型,6种。 PUBLIC:本段连接时将与有相同段名.public类型的其它段连接在 一起,连接次序由连接命令指定(共用一个段),即同名段连接 在一起,有共同段地址。 STACK:用于说明堆栈段,把不同程序段中的具有SARCK类型的 同名段组合而形成一个堆栈段,其长度为各原有段的总和: LINK自动将新段的段地址送SS,长度送SP,若未定义SARCK类 型,需在程序中用指令设置SS、SP。 2MPN:本段连接时,使具有COMMON类型的同名段具奉 ● 同一个起始地址,所以会产生覆盖,新段的长度是最 COMMON段的长度,新段的内容取决于依次覆盖的最后内容。 MEMORY:表示该段应定位在所有段的最下面(即地址最大的区 域),如果模块中不止一个MEMORY段,以第一个遇到的作为 MEMORY段,其它段作为COMMON段处理,而LINK程序在 处理MEMORY时与PUBLICI同样对待。 PRIVATE:独立段,与其它段逻辑上没有关系,不与同名段合并, 默认值。 AT表达式指定本段起始地址为“表达式”,偏移量为0,不能 用于代码段,Lin University China
COMPUTER SCIENCE AND TECHNOLOGY COMPUTER SCIENCE AND TECHNOLOGY segment和end段定义 (3) ②组合类型 • 组合类型:表示本段与其它段之间,具有相同段名的各段的组合 关系,为连接程序提供信息,属于连接类型,6种。 • PUBLIC:本段连接时将与有相同段名.public类型的其它段连接在 一起,连接次序由连接命令指定(共用一个段),即同名段连接 在一起,有共同段地址。 • STACK:用于说明堆栈段,把不同程序段中的具有SARCK类型的 同名段组合而形成一个堆栈段,其长度为各原有段的总和, LINK自动将新段的段地址送SS,长度送SP,若未定义SARCK类 型,需在程序中用指令设置SS、SP。 • COMMON:本段连接时,使具有COMMON类型的同名段具有 同 一 个起 始地 址 , 所 以会 产生 覆盖 , 新 段的 长 度是 最 长 COMMON段的长度,新段的内容取决于依次覆盖的最后内容。 • MEMORY:表示该段应定位在所有段的最下面(即地址最大的区 域),如果模块中不止一个MEMORY段,以第一个遇到的作为 MEMORY段,其它段作为COMMON段处理,而LINK程序在 处理MEMORY时与PUBLIC同样对待。 • PRIVATE:独立段,与其它段逻辑上没有关系,不与同名段合并, 默认值。 • AT 表达式:指定本段起始地址为“表达式”,偏移量为0,不能 用于代码段
segment和end段定义(4) ③字长类型 字长类型:386以后,说明使用16位寻址方式 还是32位寻址方式。 .USE16:16位寻址方式,段长≤64KB,16位段 地址,16位偏移量,默认值。 .USE32:32位寻址方式,段长≤4GB,16位段 地址,32位偏移量。 ④类别 类别:引号括起的字符串,连接时,'类别”相 同的分段(他们可能不同名)均放在连续的存储空 间中,但他们仍然是不同的分段(连续空间)。 Ji Lin University China COMPUTER SCIENCE AND TECHNOLOGY
COMPUTER SCIENCE AND TECHNOLOGY COMPUTER SCIENCE AND TECHNOLOGY segment和end段定义 (4) ③字长类型 • 字长类型: 386以后,说明使用16位寻址方式, 还是32位寻址方式。 • .USE16: 16位寻址方式,段长≤64KB,16位段 地址,16位偏移量,默认值。 • .USE32: 32位寻址方式,段长≤4GB,16位段 地址,32位偏移量。 ④类别 • 类别:引号括起的字符串,连接时,’类别’相 同的分段(他们可能不同名)均放在连续的存储空 间中,但他们仍然是不同的分段(连续空间)