微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 硬件电路设计 > TI模拟硬件电路设计 > 混合编程调用子程序疑问?

混合编程调用子程序疑问?

时间:10-02 整理:3721RD 点击:
按照2812开发板的一个混和编程调用子程序做个实验
主程序如下:
int add(int a,int b);
int x=0,y=0,z=0;

main()
{
x=3; y=17;
while ( 1 )
{
z=add(x,y);
x+=1;
y+=1;

}
}
调用情况时,C子程序另存文件名add.c如下:
int add(int a,int b);
{
return(a+b);
}
C相对应的Disassembly相应段为
0800BF add:
0800BF FE02 ADDB SP,#2
0800C0 9742 MOV *-SP[2],AH
0800C1 9641 MOV *-SP[1],AL
0800C2 9242 MOV AL,*-SP[2]
0800C3 9441 ADD AL,*-SP[1]
0800C4 FE82 SUBB SP,#2
0800C5 0006 LRETR

而调用调用汇编,asm程序文件add.asm如下:

FP .set XAR2
.file \"add.c\"

.sect \".text\"
.global _add
.sym _add,_add, 36, 2, 0
.func 2

_add:
; .line 2
;* AL assigned to _a
.sym _a,0, 4, 17, 16
;* AH assigned to _b
.sym _b,1, 4, 17, 16
.sym _a,-1, 4, 1, 16
.sym _b,-2, 4, 1, 16
ADDB SP,#2
MOV *-SP[2],AH ; |3|
MOV *-SP[1],AL ; |3|
; .line 3
MOV AL,*-SP[2] ; |4|
ADD AL,*-SP[1] ; |4|
; .line 4
SUBB SP,#2 ; |4|
LRETR
; return occurs
.endfunc 5,000000000h,2

汇编情况下的disassembly和C的相同
为什么汇编的子程序中虚多加一些?什么作用?

有很多是引用说明呀!
还有一些。SECT等是伪指令

    .func        .sym        哪位兄弟能给解释一下?

我没用过28的,你看下书后的附录应该有讲解

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top