C语言调用ARM汇编实现字符串的拷贝

简单的实现将一个字符串复制到另外一个字符数组中。拷贝功能在ARM中实现。C语言调用汇编实现。

C语言代码:主要注意要将汇编中的函数导入进来。其余很简单!我这样赋值方便以后调试的时侯方便。

#include <stdio.h> 
extern void strcopy(char *d, const char *s); 
 
int main() 

    const char *srcstr="abcdefghi"; 
    char dststr[]="ighfedcba";   
    strcopy(dststr,srcstr); 
    return 0; 
}   

ARM汇编代码:在此汇编代码中,主要是注意将拷贝函数导出,将C语言main函数导入,注意在调试的时候你会发现,R0,R1寄存器存储的是两个传入参数的存储地址,所以后期通过LDR和STR即可实现,主要是要不断的调试你就会熟悉这个参数是怎么传入的,还有就是注意通过寻址观察目标字符数组的变化,是否复制成功。

STACK_TOP EQU 0x40002000 
    PRESERVE8 
    AREA SCopy, CODE, READONLY 
    EXPORT START 
    EXPORT strcopy 
    import main 
    ENTRY 
START 
    LDR R13,=STACK_TOP 
    B main 
strcopy                 
    LDRB r2, [r1],#1 
    STRB r2, [r0],#1 
    CMP  r2, #0         
    BNE  strcopy         
    MOV  pc,lr       
             
    END 

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:http://www.heiqu.com/af653a1f76b20e537df3b55dc59c3db4.html