1、求两个数最大公约数

vbnet
.text
.globl _start
_start:
mov r0, #9
mov r1, #15
Loop: @ 循环
cmp r0,r1 @ 比较r0和r1的大小
beq stop @ 当r0和r1相等时,跳到stop标签
subhi r0,r0,r1 @ r0-r1>0 时,证明r0>r1,将r0-r1的值赋给r0,否则不执行
subcc r1,r1,r0 @ r1-r0>0 时,证明r1>r0,将r1-r0的值赋给r1,否则不执行
b Loop @ 跳转到Loop标签下的第一条指令,达到循环效果
stop:
b stop
.end
2、用for循环实现1-100之间和
C:
cs
for(i=1;i<=100;i++)
{
sum = sum + i;
}
汇编:
vbnet
.text
.globl _start
_start:
mov r0, #1 @ i,i=1
mov r1, #100 @ 条件变量i<=100
mov r2, #0 @ sum
Loop: @ 循环
cmp r0,r1 @ 比较r0和r1的大小
bhi stop @ 当r0>r1时,跳到stop标签
add r2,r2,r0 @ r2 = r2 + r0 ---> sum=sum+i
add r0,#(0x1 << 0) @ i++
b Loop @ 跳转到Loop标签下的第一条指令,达到循环效果
stop:
b stop
.end
3、从SVC模式切换到user模式简单写法
cpsr = 0xD0 ====> user模式

vbnet
.text
.globl _start
_start:
msr cpsr,0xD0
stop:
b stop
.end