
- .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
C:
- for(i=1;i<=100;i++)
- {
- sum = sum + i;
- }
汇编:
- .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
cpsr = 0xD0 ====> user模式

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