小命 1.运行汇编程序 汇编器是名为asm500xe的可执行程序 axm500 input filelobject file listing filellll-options 例如 axm500 cjyasm -I-S -X 源程序 Cy.asm经汇编后将生成一个cy.ob目标 文件、列表文件、符号表(在目标文件中)以及交 叉引用表(在列表文件中)
17 1.运行汇编程序 axm500 [input file[object file[listing file]]][-options] 汇编器是名为asm500.exe的可执行程序 例如 axm500 cjy.asm -l -s -x 源程序cjy.asm经汇编后将生成一个cjy. obj目标 文件、列表文件、符号表(在目标文件中)以及交 叉引用表(在列表文件中)
小命 2.列表文件 列表文件中包括源程序语句和目标代码 TMS320C54x COFF Assembler Version 3. 70 Tue Oct 19 12: 42: 59 2004 Copyright(c)1996-2001 Texas Instruments Incorporated example. asm PAGE 1 k☆如☆☆☆☆☆☆☆☆如☆☆☆☆☆☆k☆☆☆☆☆☆ 2 example. asm y=alx1+a2*x2+a3*x3+a4*x4 s 六六kk☆如k☆k☆☆☆☆☆☆k☆k☆☆☆☆kk☆k☆ 5 mmregs ;定义存储器映象寄存器 600000 CK.sect" STACK",10h;分配10个单元的堆栈空间 7000000 为系数a分配4个单元的空间 8000004 bss 4 为变量x分配4个单元的空间 9000008 bss y, 为结果y分配1个单元的空间 10 global c into ;定义标号
18 2.列表文件 TMS320C54x COFFAssembler Version 3.70 Tue Oct 19 12:42:59 2004 Copyright (c) 1996-2001 Texas Instruments Incorporated example.asm PAGE 1 1 * * * * * * * * * * * * * * * * * * * * * * * * ** * * * * * * * 2 * example.asm y=a1*x1+a2*x2+a3*x3+a4*x4 * 3 * * * * * * * * * * * * * * * * * * * * * * * * ** * * * * * * * 5 .mmregs ;定义存储器映象寄存器 6 000000 STACK .usect "STACK",10h ;分配10个单元的堆栈空间 7 000000 .bss a,4 ;为系数a分配4个单元的空间 8 000004 .bss x,4 ;为变量x分配4个单元的空间 9 000008 .bss y,1 ;为结果y 分配1个单元的空间 10 .global _c_int00 ;定义标号 列表文件中包括源程序语句和目标代码
小命 11000000 data ;定义数据代码段 120000000 table:.word1,2,3,4;在标号 table开始的8个单元中 0000010002 0000020003 源文件的每一行都会在列表文件 0000030004 中生成一行。包括行号、段程序 130000040008 . word 8, 6. 0000050006 计数器SPC的数值、汇编后的目 0000060004 标代码、源程序语句。 0000070002 14000000 text ;定义文本代码段 150000028cint00STM#0, SWWSR;软件等待状态寄存器置0,不设等待 0000010000 160000027718 STM #STAL 第2字单独列一行,列出了 0000030016 的数值和目标代码 170000047711 STM#a,AR1;AR1指向a的地址 0000050000 18000006EC07 ;从程序存储器向数据存储器 190000077C91 hle,*AR1+;重复传送8个数据 00o条指令可以生成1或2个字的目标代码
19 11 000000 .data ;定义数据代码段 12 000000 0001 table: .word 1,2,3,4 ;在标号table开始的8个单元中 000001 0002 000002 0003 000003 0004 13 000004 0008 .word 8,6,4,2 ;为这8个单元赋初值 000005 0006 000006 0004 000007 0002 14 000000 .text ;定义文本代码段 15 000000 7728 _c_int00 STM #0,SWWSR ;软件等待状态寄存器置0,不设等待 000001 0000 16 000002 7718 STM #STACK+10h,SP ;设置堆栈指针初值 000003 0010- 17 000004 7711 STM #a,AR1 ;AR1 指向 a的地址 000005 0000- 18 000006 EC07 RPT #7 ;从程序存储器向数据存储器 19 000007 7C91 MVPD table,*AR1+ ;重复传送 8个数据 000008 0000" 源文件的每一行都会在列表文件 中生成一行。包括行号、段程序 计数器SPC的数值、汇编后的目 标代码、源程序语句。 一条指令可以生成1或2个字的目标代码。 第2字单独列一行,列出了 SPC的数值和目标代码
Field2段程序计数器 通去 SPC),用十六进制数 20000009F074 CALL SUM;调用SUM实现乘法累加和的子程序 00000a000D 21 00000b F073 end: B end ;循环等待 Field 4: 00000c000B 源程序语 22000773SUM:STM#a,AR3;将系数a的地址赋给AR右 00000e0000 2300000f7714 STM#x,AR4;将变量x的地址赋给AR3 0000100004- 24000011F071 RPTz A,#3;将A清0,并重复执行下条指令4次 0000120003 25000013B09A MAC*AR3+,*AR4+,A;执行乘法并累加,结果放在A中 260000148008 STLA,ay;将A的低字内容送结果单元y 27000015FC00 RET 盐击圣应 28 Field3目标代码 !未定义的外部引用。 NoAs ly Errors, No assembly Wa .text段重新定位。 data段重新定位 Field1源程序语句的 +.sect段重新定位。 行号,用十进制数表 .bss和. sect段重新定位
20 20 000009 F074 CALL SUM ;调用 SUM 实现乘法累加和的子程序 00000a 000D' 21 00000b F073 end: B end ;循环等待 00000c 000B' 22 00000d 7713 SUM: STM #a,AR3 ;将系数a的地址赋给AR3 00000e 0000- 23 00000f 7714 STM #x,AR4 ;将变量x的地址赋给AR3 000010 0004- 24 000011 F071 RPTZ A,#3 ;将A清0,并重复执行下条指令4次 000012 0003 25 000013 B09A MAC *AR3+,*AR4+,A ;执行乘法并累加,结果放在A中 26 000014 8008- STL A,@y ;将A的低字内容送结果单元y 27 000015 FC00 RET ;结束子程序 28 .end ;结束全部程序 No Assembly Errors, No Assembly Warnings Field 1源程序语句的 行号,用十进制数表 示 Field 2段程序计数器 (SPC),用十六进制数表 示 Field 4: 源程序语 句 Field 3目标代码 ! 未定义的外部引用。 ’ .text段重新定位。 ” .data段重新定位。 + .sect段重新定位。 - .bss和.usect段重新定位
小命 交叉引用清单 在运行汇编程序时,还可产生交叉引用清单,清单包 括符号、定义和引用的位置。 LABEL VALUE DEFN REF INT 000/+ 19 RE 32 p C 4 28 列出汇编时 列出引用此符 定义和引用 列出一个赋给符 号的语句的行 号的4位十六进 的每个符 制数值,或说明 列出定义符号的语号。如果此栏 符号属性的字符 句编号。如果此符是空格,表示 或名称 号未加定义,则此此符号还没有 栏是空格 被引用过
21 在运行汇编程序时,还可产生交叉引用清单,清单包 括符号、定义和引用的位置。 交叉引用清单 LABEL VALUE DEFN REF INT0 0002+ 19 1 ISR2 REF 3 21 proc REF 4 28 列出汇编时 定义和引用 的每个符号 列出一个赋给符 号的4位十六进 制数值,或说明 符号属性的字符 或名称。 列出引用此符 号的语句的行 号。如果此栏 是空格,表示 此符号还没有 被引用过。 列出定义符号的语 句编号。如果此符 号未加定义,则此 栏是空格