在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 <stdio.h>

#include <string.h>

main()

{

char i,j,s1[50],s2[50]

scanf("%s%s",s1,s2)//输入二串字含槐符 s1,s2

for(i=0i<51i++)//控制次数

{

s2[i]=s2[i]//计算 s2的字符数,确定 i的值临界值

if(s2[i]=='\0') //如果达到临界值 '\0’

{

for(j=ii<100i++) //使变谈并友量蔽游 j=i i继续增加

{

s2[i]=s1[i-j] //s2[i]等于 i-j(值为:0,1,2,3……)

if(s2[i]=='\0')

{break} //s2[i]等于'\0' 就结束循环

}

}

}

printf("\n输出S2的字符串= %s",s2) //输出s2的值s2的字符串数不超过50;

printf("\n===================================================")

printf("\n使用strcat= %s",strcat(s2,s1)) //拿别人编好的来用。

getch()

}


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

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

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

发表评论

登录后才能评论

评论列表(0条)

保存