题目: 实现计算
1
+
2
+
3
+
…
+
(
N
−
1
)
+
N
1+2+3+…+(N-1)+N
1+2+3+…+(N−1)+N 的值
(
N
>
0
)
(N>0)
(N>0) 的加法运算
- 在 C 语言程序中调用汇编子程序,汇编子程序实现两个数的加法运算
- 在汇编程序中调用 C 语言子程序,C 语言子程序实现两个数的加法运算
一、 C 语言调用汇编子程序
C 语言主程序
#define uint32 unsigned int
#define N 100
extern uint32 doadd(uint32 x,uint32 y);
uint32 sum;
int main()
{
uint32 i;
sum=0;
for(i=0;i<=N;i++)
{
sum=doadd(sum,i);
}
while(1);
return 0;
}
汇编加法子程序
;加法函数,原型为uint32 doadd(uint32 x,uint32 y)
AREA ASMADD,CODE,READONLY
EXPORT doadd ;将子程序输出
doadd ADD R0,R0,R1
MOV PC,LR
END
二、 汇编调用 C 语言程序
汇编主程序
N EQU 100 ;累加次数
;定义名为Adding的代码段
AREA Adding,CODE,READONLY
IMPORT MYADD ;引入 C 语言程序
ENTRY
MOV R0,#0 ;sum
MOV R1,#0 ;i
REPEAT BL MYADD
ADD R1,R1,#1
CMP R1,#N
BLE REPEAT
LDR R2,=RESULT
STR R0,[R2]
HERE B HERE
;定义名为Dataspace的数据段
AREA Dataspace,DATA,READWRITE
RESULT DCD 0
END
C 语言加法程序 (不需要输出即可在汇编中引用)
int MYADD(int x, int y) {
return x+y;
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)