在ARM的程序框架下,写一个内嵌的汇编程序,实现strcat的功能

在ARM的程序框架下,写一个内嵌的汇编程序,实现strcat的功能,第1张

#define U8 unsigned char

#include <string.h>

#include <stdio.h>

#define TRUE 1

#define FALSE 0

//#pragma import(__use_no_semihosting_swi) // ensure no functions that use semihosting

void my_strcat(const char* str1, const char* str2)

{

int ch1

__asm

{

loop:

ldrb ch1, [str1], #1

cmp ch1,#0

bne loop

sub str1,str1,#1

loop2:

ldrb ch1, [str2], #1

strb ch1, [str1],#1

cmp ch1,#0

bne loop2

}

}

int main(void)

{

const char* b = "Hello World!"迹友

char a[30]

strcpy(a,"链橘I am allright!")

printf("before strcat :b=%s\n",b)

__asm{

MOV R0, a

MOV R1, b

BL my_strcat, {R0, R1}

}

printf("after strcat :b=%s\n",b)

}

这个回棚州团答够标准了吧...

用法:

#include <string.h>

在C++中,则存在于<cstring>头文件中。

strcat原型:

extern char *strcat(char *dest,char *src)

功能:

把src所指字符串添加到dest结尾处(覆盖dest结尾处的'\0')并添茄锋加'\0'友纳陪。

说明:

src和dest所指内存区域不可以重叠且dest必须有足够的空间来容纳src的字符串。

返回指向dest的指针。

strcat()函数从名称来讲就是索的含义,用途:在一个好蠢字符串的末尾增加新的字符。

函数定义如下:

char *strcat(char *dest, const char *src)

扩展资料

代码实现如下:

char *strcat(char *dest, const char *src)

{

char *tmp = dest

while (*dest)

dest++

while ((*dest++ = *src++) != '\0')

return tmp

}

实现原理:

首先dest地址移动到最后一位,然后增加src参数值遇到’\0’结束拷贝。

strcat()也存在着与strcpy()类似的问题。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/12406993.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-25
下一篇 2023-05-25

发表评论

登录后才能评论

评论列表(0条)

保存