【#文档大全网# 导语】以下是®文档大全网的小编为您整理的《几道简单ARM汇编代码题》,欢迎阅读!
26.用ARM汇编代码实现以下C程序段(不要求程序格式,只需写出主要语句)。 if (x>64) x=0; else y=0;
27.用ARM汇编语言完成一个C语言嵌入汇编方式实现字符串(数组)拷贝的功能(要求有基本的程序格式)。
29.用ARM汇编代码实现以下C程序段(不要求程序格式,只需写出主要语句)。 if (x<100) x=1; else y=1;
25.有如下C语言代码段,请结合ARM处理器硬件特性,比较以下代码中fact1和fact2两个函数的性能, 并说明理由。 int fact1(int limit) {
for (i=1;i}
int fact2(int limit) {
for (i=limit; i!=0; i--) fact *= i;
}
我来回答你吧,研究ARM汇编也有段时间了,在查相关资料,这个应该可以解决的,要是考试,我的答案100分至少85分吧。
26. MOV R0,#X MOV R1,#64 CMP R0,R1 MOVHI RO,#0 MOVLS R2,#0
27. 字符串拷贝程序设计(用LDR和STR实现) AREA StrCopy, CODE, READONLY
ENTRY ; 程序入口 start
LDR r1, =srcstr ; 初始串的指针 LDR r0, =dststr ; 结果串的指针 BL strcopy ; 调用子程序执行复制 stop
MOV r0, #0x18 ; 执行中止 LDR r1, =0x20026 ; SWI 0x123456 ;
strcopy
LDRB r2, [r1],#1 ; 加载并且更新源串指针 STRB r2, [r0],#1 ; 存储且更新目的串指针; CMP r2, #0 ; 是否为0 BNE strcopy ; MOV pc,lr ;
AREA Strings, DATA, READWRITE
srcstr DCB "First string - source",0
dststr DCB "Second string - destination",0 END
29. 和26题差不多啊。 MOV R0,#X
MOV R1,#100 CMP R0,R1 MOVLS RO,#1 MOVHI R2,#1
25. 这题两个函数功能一样,处理器特性我就不说了,任何一本介绍ARM的书都有讲解。在效率方面第一个好些,因为i=1和i=limit中 i=1中,只要读i的地址,然后把2传递即可
i=limit中,既要读i的地址,也要读limit的地址,然后再传值 很明显第一个效率高。
我的这个回答是看过一本程序员面试宝典中的程序效率问题启发的,应该不会错的。呵呵……
希望我的回答对你有所收获。祝你进步!
本文来源:https://www.wddqxz.cn/52ae104ae45c3b3567ec8bc7.html