定义未初始化段的伪指令 (1).bss伪指令:用于在bss段中保留若干个空间。格式: .bss符号,字数[块标记]儿定位对齐标记]】 符号一对应于保留的存储空间第一个字的变量名称 。 字数一表示在bss段或标有名字的段中保留若干个存 储单元。 块标记一若非零值,则分配的字数空间连续,除非大 于一页,否则不跨页。 定位标记一表明字的对齐方式(C54x偶地址对齐) >每调用一次.bss伪指令,汇编器在相应的段保留更 多的空间。 16
(1) .bss伪指令: 用于在bss段中保留若干个空间。格式: .bss 符号, 字数 [, [块标记][, 定位对齐标记]] 符号—对应于保留的存储空间第一个字的变量名称。 字数—表示在bss段或标有名字的段中保留若干个存 储单元。 块标记—若非零值,则分配的字数空间连续,除非大 于一页,否则不跨页。 定位标记—表明字的对齐方式(C54x偶地址对齐) ➢ 每调用一次.bss伪指令,汇编器在相应的段保留更 多的空间。 16 定义未初始化段的伪指令
4.2.1分段结构 定义未初始化段的伪指令 (2).usect伪指令 用于为指定的命名段保留若干个空间。格式: 标号.usect “段名”,字数[块标记]儿定位标记] bss符号,字数[[块标记]儿,定位对齐标记] 建立一个自定义段但是没有初始化的段,在自 定义的段中保留空间。 每调用一次.usect伪指令,汇编器在指定的命 名段保留更多的空间。 17
(2) .usect伪指令 用于为指定的命名段保留若干个空间。格式: 标号 .usect “段名”, 字数 [, [块标记][, 定位标记]] 建立一个自定义段但是没有初始化的段,在自 定义的段中保留空间。 每调用一次.usect伪指令,汇编器在指定的命 名段保留更多的空间。 • 定义未初始化段的伪指令 17 4.2.1分段结构 .bss 符号, 字数 [, [块标记][, 定位对齐标记]]
4.2.1分段结构 ·例4-1:段定义程序举例。 .text .word 1,2,3,4,5,6,7,8 .data .word 9,10,11,12 .word 13,14 .word 15,16 .sect“var1" .word 17,18 .bssx1,19;为.bss段保留19个字单元空间。 y1.usect"var2”,40;为var2段保留40个单元空间。 18
• 例4-1:段定义程序举例。 .text .word 1,2,3,4,5,6,7,8 .data .word 9,10,11,12 .word 13,14 .word 15,16 .sect “var1” .word 17,18 .bss x1, 19 ;为.bss段保留19个字单元空间。 y1 .usect “var2”, 40; 为var2段保留40个单元空间。 18 4.2.1分段结构
例4-1:段定义程序举例。 程序建立了5个段,情沉如下: .text text段:8个16位字18。 Word1,2,3,4,5,6,7,8 .data段:8个16位字g~16。 .data .word 9,10,11,12 Var1段:2个16位字17,18。 .word 13,14 .word 15,16 .bss段:保留19个字连续空间, .sect “Var1” 首单元的标号是x1。 .word 17,18 .bssX1,19; Var2段:保留40个字连续空间, y1.usect“Var2”,40; 首单元的标号是y1。 19
.text段: 8个16位字1~8。 .data段: 8个16位字9~16。 Var1段: 2个16位字17, 18。 .bss段: 保留19个字连续空间, 首单 元的标号是x1。 Var2段: 保留40个字连续空间, 首单元的标号是y1。 例4-1:段定义程序举例。 .text .word 1,2,3,4,5,6,7,8 .data .word 9,10,11,12 .word 13,14 .word 15,16 .sect “var1” .word 17,18 .bss x1,19 ; y1 .usect “var2”, 40; 程序建立了5个段,情况如下: 19
4.2.2汇编器对段的建立 >当汇编器遇到.text或.data或.sect命令时,将停止对 当前段的汇编(相当于一条结束当前段汇编的命令), 然后将紧接着的程序代码或数据汇编到指定的段中, 直到再遇到另一条.text、.data或.sect命令为止。 .text :初始化文本段 Add:LD 0Fh,A :1字指令(DP直接寻址) Aloop:SUB #1,A :2字指令 BC Aloop,AGEQ :2字指令 .data :初始化数据段 ivals .word 0AAh, 0BBh,0CCh:3组数据放入.data段 20
20 4.2.2 汇编器对段的建立 ➢ 当汇编器遇到.text或.data或.sect命令时,将停止对 当前段的汇编(相当于一条结束当前段汇编的命令), 然后将紧接着的程序代码或数据汇编到指定的段中, 直到再遇到另一条.text、.data或.sect命令为止。 .text Add: LD 0Fh, A Aloop: SUB #1, A BC Aloop, AGEQ .data ivals .word 0AAh,0BBh,0CCh ;初始化文本段 ;1字指令(DP直接寻址) ;2字指令 ;2字指令 ;初始化数据段 ;3组数据放入.data段