题目要求:用汇编语言实现1~100之间之和(5050 = 0x13BA)
.text @文本段
.global _start @声明一个_start的全局函数
_start: @ _start 代表函数入喉
mov r0,#0x1 @ 循环初始值
mov r1,#0x0 @ 用于求和的值
add_func:
add r1,r1,r0 @ r1 = r1+r0,更新r1
add r0,r0,#0x1 @ r0 = r0+1,每次相加后自增
cmp r0,#0x64 @ 比较r0是否自增到100
bhi stop @ 如果大于100就跳到stop
bls add_func @ 如果小于等于100就跳到add_func
stop:
b stop @跳转stop下的第一条指令进行指向,while(1)死循环
.end
求两个数最大的公约数
.text @文本段
.global _start @声明一个_start的全局函数
_start: @ _start 代表函数入喉
mov r0,#9 @ 初始值r0 = 9
mov r1,#15@ 初始值r1 = 15
loop:
cmp r0,r1 @ 比较大小 r0>r1?
bEQ stop @ 如果相等就跳转到末尾
subhi r0,r0,r1 @ 如果r0>r1,r0 = r0 - r1
subcc r1,r1,r0 @ 如果r0<r1,r1 = r1 - r0
b loop @ 跳转
stop:
b stop @跳转stop下的第一条指令进行指向,while(1)死循环
.end