2初始化段 初始化段包含可执行代码或者初始化数据;当程序被 装载时,它们就被放到处理器存储空间里 每个初始化段独立分配空间,可以引用在其他段定义 的标识( symbo)链接器自动处理这些段间引用; ●定义初始化段的指令:oe表示段指针PC的开 始值,只可以指定一次必须 ◆text[vaue] 在段第一次出现时指定。 edata [value] 默认SPC从0开始。 .sect"section name"L,value] 当汇编器遇到其中一个指令就停止当前段的汇编(就好像一个 当前段结束命令,而将后面的代码汇编到另外指定的段,直到 遇到另一个text、data或者sec指令。 18
2.初始化段 ⚫初始化段包含可执行代码或者初始化数据; 当程序被 装载时, 它们就被放到处理器存储空间里; ⚫每个初始化段独立分配空间, 可以引用在其他段定义 的标识(symbol), 链接器自动处理这些段间引用; ⚫定义初始化段的指令: ◆.text [value] ◆.data [value] ◆.sect ”section name”[,value] value表示段指针(SPC)的开 始值, 只可以指定一次,必须 在段第一次出现时指定。 默认SPC从0开始。 当汇编器遇到其中一个指令就停止当前段的汇编(就好像一个 当前段结束命令), 而将后面的代码汇编到另外指定的段, 直到 遇到另一个.text、.data或者.sect指令。 18
3自定义段 ●. sect创建像.bs段那样的段,这些段为变量在RAM 开辟存储空间。 sect创建像text和dat段那样包含代码和数据的段, 可以创建可重分配地址的自定义段。 用户可以创建多达32767个自定义段,段名可以多至 200个字符。 每次使用这两个指令可以用不同的 section name来创 建不同的段,如果用一个已经使用的 section name, 那么汇编器将代码和数据都汇编到同一个段
3.自定义段 ⚫ .usect 创建像.bss段那样的段,这些段为变量在RAM 开辟存储空间。 ⚫ .sect创建像.text和.data段那样包含代码和数据的段, 可以创建可重分配地址的自定义段。 ⚫ 用户可以创建多达32767个自定义段,段名可以多至 200个字符。 ⚫ 每次使用这两个指令可以用不同的section name来创 建不同的段,如果用一个已经使用的section name, 那么汇编器将代码和数据都汇编到同一个段。 19
4子段 子段是更大的段中的较小的段,链接器可以像段一样 操作它; 子段让用户可以更好的控制存储器映射; 可用se者usec指令来创建子段,子段名的格式为: section name: subsection name 同一个段中的子段可以独自分配地址,也可以一起 分配存储空间。 例,在段tex中创建一个func子段如下 ,sect“text:func” 用户可以为其单独分配地址,也可以和tex段的其他 部分一起分配地址
4.子段 ⚫ 子段是更大的段中的较小的段, 链接器可以像段一样 操作它; ⚫子段让用户可以更好的控制存储器映射; ⚫可用.sect或者.usect指令来创建子段,子段名的格式为: section name: subsection name ⚫同一个段中的子段可以独自分配地址,也可以一起 分配存储空间。 例,在段.text中创建一个_func子段如下: .sect “text:_func” 用户可以为其单独分配地址, 也可以和.text段的其他 部分一起分配地址。 20
5段指针 汇编器为每个段分配一个程序指针,这些程 序指针称为段指针(SPcs 个SPC指向一个段的当前地址: ◆初始时,汇编器设置每个SPC为0 ◆当汇编器在段中填充代码和数据时SPC 跟着增加 ◆如果重新开始汇编一个段汇编器会记得 该段SPC的原来值并继续增加SPC。 21
5.段指针 ⚫ 汇编器为每个段分配一个程序指针, 这些程 序指针称为段指针(SPCs); ⚫ 一个SPC指向一个段的当前地址: ◆初始时, 汇编器设置每个SPC为0; ◆当汇编器在段中填充代码和数据时, SPC 跟着增加; ◆如果重新开始汇编一个段, 汇编器会记得 该段SPC的原来值, 并继续增加SPC。 21
例-1段伪指令的使用一源程序(单独汇总) 汇编语言源程序 data 初始化数据段 coeff. word01h,022h,033h3组数据放入data段 bss buffer 10 在bss股保留10个单元 prt . word0123h;bss后0123h仍然在data段 text 初始化文本股 Add:MOV0Fh,AC0;2字訖(省略@DP直接寻址) Aloop: SUB #1, ACO 2字节指令 BcCA00p,AC0>=H0:3宇节指令 data 初始化数据段 ovals, word0AAh,0BBh,0CCh;3组数据放入data段 22
汇编语言源程序: .data coeff .word 011h,022h,033h .bss buffer, 10 prt .word 0123h .text Add: MOV 0Fh, AC0 Aloop: SUB #1, AC0 BCC Aloop, AC0>=#0 .data ivals .word 0AAh, 0BBh, 0CCh ;初始化数据段 ;3组数据放入.data段 ;在.bss段保留10个单元 ;.bss后0123h仍然在.data段 ;初始化文本段 ;2字节(省略@,DP直接寻址) ;2字节指令 ;3字节指令 ;初始化数据段 ;3组数据放入.data段 22 例5-1 段伪指令的使用---源程序(单独汇总)