4.2.2汇编器对段的建立 >当汇编器遇到.bss或.usect命令时,并不结束当前段的 汇编,只是暂时从当前段脱离出来,并开始对新的段 (.bss或.usect)进行汇编,结束后仍在离开时的段。 .data 初始化数据段 coeff .word 011h,022h,033h :3组数据放入.data段 .bss buffer,10 在.bss段保留10个单元 prt .word 0123h :.bss后0123h仍然在.data段 .text 初始化文本段 Add: LD 0Fh,A :1字指令(DP直接寻址) Aloop:SUB #1,A :2字指令 BC Aloop,AGEQ :2字指令 22
22 4.2.2 汇编器对段的建立 ➢ 当汇编器遇到.bss或.usect命令时,并不结束当前段的 汇编,只是暂时从当前段脱离出来,并开始对新的段 (.bss或.usect)进行汇编,结束后仍在离开时的段。 .data coeff .word 011h,022h,033h .bss buffer,10 prt .word 0123h .text Add: LD 0Fh, A Aloop: SUB #1, A BC Aloop, AGEQ ;初始化数据段 ;3组数据放入.data段 ;在.bss段保留10个单元 ;.bss后0123h仍然在.data段 ;初始化文本段 ;1字指令(DP直接寻址) ;2字指令 ;2字指令
4.2.2汇编器对段的建立 段程序计数器SPC 汇编器为每个段都安排了一个单独的程序计 数器称之为段程序计数器SPC。 SPC表示在程序代码或数据段内当前的地址。 开始时汇编器将每个SPC置0。当汇编器将程序 代码或数据加到段内时,增加相应的SPC值。若 再继续对某个段汇编,则相应的SPC就在先前的 数值上继续增加。 23
段程序计数器SPC 汇编器为每个段都安排了一个单独的程序计 数器称之为段程序计数器SPC。 SPC表示在程序代码或数据段内当前的地址。 开始时汇编器将每个SPC置0。当汇编器将程序 代码或数据加到段内时,增加相应的SPC值。若 再继续对某个段汇编,则相应的SPC就在先前的 数值上继续增加。 23 4.2.2 汇编器对段的建立
例4-2段定义应用举例 汇编语言源程序: .data :初始化数据段 coeff .word 011h,022h,033h :3组数据放入.data段 .bss buffer,10 :在.bss段保留10个单元 prt .word 0123h :.bss后0123h仍然在.data段 .text :初始化文本段 Add: LD 0Fh,A :1字指令(DP直接寻址) Aloop:SUB #1,A :2字指令 BC Aloop,AGEQ :2字指令 .data 初始化数据段 ivals .word0AAh,0BBh,0CCh:3组数据放入.data段 24
汇编语言源程序: .data coeff .word 011h,022h,033h .bss buffer,10 prt .word 0123h .text Add: LD 0Fh, A Aloop: SUB #1, A BC Aloop, AGEQ .data ivals .word 0AAh,0BBh,0CCh ;初始化数据段 ;3组数据放入.data段 ;在.bss段保留10个单元 ;.bss后0123h仍然在.data段 ;初始化文本段 ;1字指令(DP直接寻址) ;2字指令 ;2字指令 ;初始化数据段 ;3组数据放入.data段 24 例4-2 段定义应用举例
汇编语言源程序: var2 .usect“newvars”,1 ;建立newvars命名段,保留1个单元 inbuf,usect“newvars”,7 ;在newvars.段保留7个单元 .text 初始化文本段 Mpy:LD 0Ah,B :1字指令(DP直接寻址) Mloop:MPY #0Ah,B :2字指令 BC Mloop,BNOV:2字指令 sect“vectors” 建立vectors命名段 .word 011h,033h :2组数据放入vectorsi命名段 25
汇编语言源程序: var2 .usect “newvars”, 1 inbuf .usect “newvars”, 7 .text Mpy: LD 0Ah, B Mloop: MPY #0Ah, B BC Mloop, BNOV .sect “vectors” .word 011h,033h ;建立newvars命名段,保留1个单元 ;在newvars段保留7个单元 ;初始化文本段 ;1字指令(DP直接寻址) ;2字指令 ;2字指令 ;建立vectors命名段 ;2组数据放入vectors命名段 25
例4-2段定义应用举例 汇编语言源程序经过汇编后,共建立了5个段: >.text段一文本段,段内有10个字可执行的程序代码 >.data段一已初始化的数据段,段内有7个字的数据 >vectors.段一用.sect命令生成的命名段,段内有2个字 的初始化数据 >.bss段一未初始化的数据段,在存储器中为变量保留 10个存储单元 >newvars.段一用.usect命令建立的命名段,为变量保 留8个存储单元 26
汇编语言源程序经过汇编后,共建立了5个段: ➢.text段——文本段,段内有10个字可执行的程序代码 ➢.data段——已初始化的数据段,段内有7个字的数据 ➢vectors段——用.sect命令生成的命名段,段内有2个字 的初始化数据 ➢.bss段——未初始化的数据段,在存储器中为变量保留 10个存储单元 ➢newvars段——用.usect命令建立的命名段,为变量保 留8个存储单元 26 例4-2 段定义应用举例