小命 第四章DSP软件开发过程 第一节汇编语言程序的编写方法 第二节汇编语言程序的汇编 第三节COFF的一般概念 第四节目标文件的链接
2 第四章 DSP软件开发过程 第一节 汇编语言程序的编写方法 第二节 汇编语言程序的汇编 第三节 COFF的一般概念 第四节 目标文件的链接
小命 第一节汇编语言程序的编写方法 软件开发过程 C源文件 宠源文件 C编译器 助记符到代数式 文档管理器 汇编语言源文件 指令翻译器 有调试器的评估模块 宏文件库 汇编器 汇编语言源文件 文档管理器卜F目标文件」[建厍实用程序 有调试器的扩展开发 目标文件库 链接器 运行支持库 系统硬件仿真器 上十六进制转换程序卜可执行F文件 PC机 软件仿真器 EFRM编程器绝对制表程序「交叉引用制表程序c54x
3 软件开发过程 第一节 汇编语言程序的编写方法
小命 汇编语言程序的编辑、汇编和链接过程 CILO 链接命令文件 out 立太源文件 目标文件 输出文件 接器 调试程序 : 十六进制 1st lILa 转换程序 列表文件存储器映象文件 HEX500
4 汇编语言程序的编辑、汇编和链接过程
小命 1.汇编语言源程序的句法格式 要点 以.asm为扩展名 每一行由4个部分组成 格式 标号][:]空格[助记符]空格[操作数]空格[;注释] []中的 供本程序的其它部分或其它程序调 内容为可用。标号是任选项,标号后面可以 选择部分 加也可以不加冒号“:
5 1.汇编语言源程序的句法格式 要点 以.asm为扩展名 每一行由4个部分组成 格式 [标号][:] 空格 [助记符] 空格 [操作数] 空格 [;注释] [ ]中的 内容为可 选择部分 供本程序的其它部分或其它程序调 用。标号是任选项,标号后面可以 加也可以不加冒号“ : ”
小命 要点 1.标号必须从第1列写起, 2.标号最多可达32个字符,可以是A~Z,a~z,0~9 ,以及$,但标号的第1个字符不能是数字 3.引用标号时,标号的大小写必须一致。 4.标号的值就是段程序计数器SPC的值 5.如果不用标号,则第一个字母必须为空格、分号 或星号(米)
6 要 点 1.标号必须从第1列写起, 2.标号最多可达32个字符,可以是A~Z,a~z,0~9, _,以及$,但标号的第1个字符不能是数字。 3.引用标号时,标号的大小写必须一致。 4.标号的值就是段程序计数器SPC的值。 5.如果不用标号,则第一个字母必须为空格、分号 或星号(*)
小命 [标号][:]空格[助记符]空格[操作数]空格[;注释] 要点可以是助记符指令、汇编指令、宏 指令和宏调用命令。 建议 1.助记符指令,一般用大写; 2.汇编命令和宏命令,以句号“.” 开始,且为通常用小写
7 要点 建议 [标号][:] 空格 [助记符] 空格 [操作数] 空格 [;注释] 可以是助记符指令、汇编指令、宏 指令和宏调用命令。 1.助记符指令,一般用大写; 2.汇编命令和宏命令,以句号“.” 开始,且为通常用小写
小命 [标号][:]空格[助记符]空格[操作数]空格[;注释] 要点 1.指令中的操作数或汇 编命令中定义的内容 2.操作数之间必须用逗 号“,”分开。 1.从分号“;”开始 要点2.可以放在指令或汇编命令后面, 也可以放在单独的一行或数行
8 要点 [标号][:] 空格 [助记符] 空格 [操作数] 空格 [;注释] 1.指令中的操作数或汇 编命令中定义的内容 2.操作数之间必须用逗 号“ , ”分开。 1.从分号“ ; ”开始 2.可以放在指令或汇编命令后面, 也可以放在单独的一行或数行。 要点
小命 2.汇编语言源程序的数据型式 二进制:如1110001b或11110B; 八进制:226q或572Q; 十进制:1234或+1234或-1234(缺省型) 十六进制:0A40h或0A40H或0xA40 浮点数:1.623e-23(仅C语言程序中能用,汇编程序不能用 字符:“D 字符串:“thi IS is a string
9 2.汇编语言源程序的数据型式 二进制:如1110001b或1111001B; 八进制:226q或572Q; 十进制:1234或+1234或-1234(缺省型) 十六进制:0A40h或0A40H或0xA40 浮点数:1.623e-23(仅C语言程序中能用,汇编程序不能用) 字符:‘D’ 字符串:“thisis a string
小命 3.汇编命令 汇编命令是用来为程序提供数据和控制汇编进程的。C54x汇 编器共有64条汇编命令,根据它们的功能,可以将汇编命令 分成8类: (1)对各种段进行定义的命令。 (2)对常数(数据和存储器)进行初始化的命令。 (3)调整SPC(段寄存器)的指令。 (4)对输出列表文件格式化的命令。 (5)引用其它文件的命令。 (6)控制条件汇编的命令。 (7)在汇编时定义符号的命令。 (8)执行其它功能的命令
10 3.汇编命令 汇编命令是用来为程序提供数据和控制汇编进程的。C54x汇 编器共有64条汇编命令,根据它们的功能,可以将汇编命令 分成8类: (1)对各种段进行定义的命令。 (2)对常数(数据和存储器)进行初始化的命令。 (3)调整SPC(段寄存器)的指令。 (4)对输出列表文件格式化的命令。 (5)引用其它文件的命令。 (6)控制条件汇编的命令。 (7)在汇编时定义符号的命令。 (8)执行其它功能的命令
小命 例4-1编写计算y=a*x1+2*x2+3*x3+a4*x4的汇编源程序 kk;六κκκk六κκκ六κκκκ;;κκκ;☆κκk六六κ s example. asm y=al*xl+a2*x2+a3*x3+a4 x4 s title“ example.asmi 为汇编源程序取名 mregs ;定义存储器映象寄存器 STACK, sect“ STACK”,10h;分配10个单元的堆栈空间 bss a 4 为系数a分配4个单元的空间 bss 为变量x分配4个单元的空间 bss y ;为结果y分配1个单元的空间 def c intoo ;定义标号_cint00 data ;定义数据代码段 table: word 1.2 3.4 ;在标号 table开始的8个单元 中 d8.6.4.2 为这8个单元脑初值
11 例4-1 编写计算y=a1*x1+a2*x2+a3*x3+a4*x4的汇编源程序 * * * * * * * * * * * * * * * * * * * * * * * * ** * * * * * * * * example.asm y=a1*x1+a2*x2+a3*x3+a4*x4 * * * * * * * * * * * * * * * * * * * * * * * * * ** * * * * * * * .title “example.asm” ;为汇编源程序取名 .mmregs ;定义存储器映象寄存器 STACK .usect “STACK”,10h ;分配10个单元的堆栈空间 .bss a,4 ;为系数a分配4个单元的空间 .bss x,4 ;为变量x分配4个单元的空间 .bss y,1 ;为结果y 分配1个单元的空间 .def _c_int00 ;定义标号_c_int00 .data ;定义数据代码段 table: .word 1,2,3,4 ;在标号table开始的8个单元 中 .word 8,6,4,2 ;为这8个单元赋初值