帮忙解释一下这段ARM汇编程序代码,谢谢!

帮忙解释一下这段ARM汇编程序代码,谢谢!,第1张

N

EQU

5

定义N

代表5

AREA

Adding,

CODE,

READONLY

定义段名Adding

读代码段

ENTRY

;指定程序雀闹入口

MOV

R0,#0

立即数0加载

R0

MOV指令

能加载8位立即数

MOV

R1,#1

立即数1加载

R1

#代表

立即数

REPEAT

设置标号

ADD

R0,R0,R1

R0

R1项加并存储

R0

ADD

R1,R1,#1

;;

R1

立即数1项加并存储

R1

CMP

R1,#N

;比较R1

立即数N

N前面定义代表5;

BLE

REPEAT

相等跳转

标号REPEAT

相等继续往

执行

LDR

R2,=RESULT

;加载表RESULT

R2

STR

R0,[R2]

R0存储

R2指向

HERE

B

HERE

B

条件跳转

标号告岁键HERE

AREA

DataSpace,

DATA,

READWRITE

定义段名DataSpace

读写数据段

RESULT

DCD

0;定义表

END

;程袜巧序结束

我来回答你吧,研究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的地址,然后再传值

很明显第山辩信一个效率高。

我的这个回答是看过灶罩一本程序员面试宝典中的程序效率问题启发的,应该不会错的。呵呵…逗轮…

希望我的回答对你有所收获。祝你进步!


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

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

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

发表评论

登录后才能评论

评论列表(0条)

保存