1、求两个数最大公约数
.text
.globl _start_start:mov r0, #9mov 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:
for(i=1;i<=100;i++)
{sum = sum + i;
}
汇编:
.text
.globl _start_start:mov r0, #1 @ i,i=1mov r1, #100 @ 条件变量i<=100mov r2, #0 @ sumLoop: @ 循环cmp r0,r1 @ 比较r0和r1的大小bhi stop @ 当r0>r1时,跳到stop标签add r2,r2,r0 @ r2 = r2 + r0 ---> sum=sum+iadd r0,#(0x1 << 0) @ i++b Loop @ 跳转到Loop标签下的第一条指令,达到循环效果stop:b stop
.end
3、从SVC模式切换到user模式简单写法
cpsr = 0xD0 ====> user模式
.text
.globl _start_start:msr cpsr,0xD0
stop:b stop
.end