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命名段,保留l个单元 inbuf.usect“newvarsi”,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组数据放入vectors命名段 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 段定义应用举例
例4-2经汇编后,得列表文件(.1st): 汇编语言源程序 (空行) *****************水*************** *汇编一个初始化表到.data段 ** 米*冰**************水***米************ data coeff word011h,022h,033h ********************************* *在.bss段中为变量保留空间* **宗********冰*****泳***********家**** bss buffer,10 ********* ************* *.bss结束后仍然在.data段中 ** ******************************** 汇编设置: prt word 0123h Project-→Build Options..→Compiler→Category(Assembly) →☑Generate Assembly Listing Files(al)
1 (空行) 2 ********************************** 3 ** 汇编一个初始化表到.data段 ** 4 ********************************** 5 .data 6 coeff .word 011h,022h,033h 7 ********************************** 8 ** 在.bss段中为变量保留空间 ** 9 ********************************** 10 .bss buffer,10 11 ********************************** 12 ** .bss结束后仍然在.data 段中 ** 13 ********************************** 14 prt .word 0123h 源程序的行号 汇编语言源程序 27 例4-2 经汇编后,得列表文件(.lst): Project→Build Options…→Compiler →Category(Assembly) → Generate Assembly Listing Files(al) 汇编设置: