打印
[MCU]

数据相加的测试程序

[复制链接]
311|6
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
jlyuan|  楼主 | 2019-9-1 20:18 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
如下面的数据相加的测试程序:
C源程序
BYTE* ptr;
BYTE m[10],n[10],sum[10];
ptr = add(m,n,10,sum);//想要指针指向计算结构sum数组的首地址!
汇编:
loop:
    LDB  .D1T1  *A4++[1], A_m
  LDB  .D2T2  *B4++[1], B_n
nop 4
ADD  .L2  A_m, B_n, B_sum
STB .D2 B_sum, *B6++[1]
[A_loopcount] BDEC .S2 loop, A_loopcount
NOP 5
*======loop end ======*
B .S2 B3   ;return
MV .S1 B6, A4 ;return 1
NOP 4
由于A4返回int型,所以如上程序会报错int不能被赋值到BYTE*中

使用特权

评论回复

相关帖子

沙发
dengdc| | 2019-9-1 20:21 | 只看该作者
汇编的数组指针怎么返回?

使用特权

评论回复
板凳
dengdc| | 2019-9-1 20:25 | 只看该作者
不懂,帮顶

使用特权

评论回复
地板
jlyuan|  楼主 | 2019-9-1 20:27 | 只看该作者

请问如果想要指针指向计算结构sum数组的首地址,如上汇编需怎么返回,谢谢

使用特权

评论回复
5
jiaxw| | 2019-9-1 20:30 | 只看该作者
loop:
LDB .D1T1 *A4++[1], A_m
LDB .D2T2 *B4++[1], B_n
nop 4
ADD .L2 A_m, B_n, B_sum
STB .D2 B_sum, *B6++[1] ; <= 循环结束时B6指向sum数组的结尾,并不是数组头。需在循环前先备份B6的值。
[A_loopcount] BDEC .S2 loop, A_loopcount
NOP 5
*======loop end ======*
B .S2 B3 ;return
MV .S1 B6, A4 ;return 1 <= 将备份的sum数组首地址赋给A4
NOP 4

使用特权

评论回复
6
jiaxw| | 2019-9-1 20:33 | 只看该作者
C在调用汇编前先声明extern BYTE * add(BYTE *, BYTE *, int ,BYTE*);

使用特权

评论回复
7
jlyuan|  楼主 | 2019-9-1 20:38 | 只看该作者
嗯,预料中的结果,先结贴吧,多谢大家啦

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

880

主题

12030

帖子

4

粉丝