ARM汇编程序逻辑控制实现源码实例教程。
AREA Example4,CODE,READONLY ; 声明代码段Example4
  ENTRY    ; 标识程序入口
  CODE32    ; 声明32位ARM指令
  
START  ; if(x>y) z=100;
  ;  else  z=50;
  ; 设x为R0,y为R1,z为R2 (x、y、z均为无符号整数)
  MOV  R0,#76  ; 初始化x的值
  MOV  R1,#243  ; 初始化y的值
  CMP  R0,R1  ; 判断x>y?
  MOVHI R2,#100  ; x>y条件正确,z=100
  MOVLS R2,#50  ; 条件失败,z=50
  
  ; for(i=0; i<10; i++)
  ; {  x++;
  ; }
  ; 设x为R0,i为R2 (i、x均为无符号整数)
  MOV  R0,#0  ; 初始化x的值
  MOV  R2,#0  ; 设置i=0
FOR_L1  CMP  R2,#10  ; 判断i<10?
  BHS  FOR_END  ; R2>=10,退出循环
  
  ADD  R0,R0,#1 ; 循环体,x++
  
  ADD  R2,R2,#1 ; i++
  B  FOR_L1  
FOR_END  NOP
  ; while(x<=y) 
  ; {  x *= 2;
  ; }
  ; 设x为R0,y为R1 (x、y均为无符号整数)
  MOV  R0,#1  ; 初始化x的值
  MOV  R1,#20  ; 初始化y的值
  B  WHILE_L2 ; 首先要判断条件
  
WHILE_L1 MOV  R0,R0,LSL #1 ; 循环体,x *= 2
WHILE_L2 CMP  R0,R1  ; 判断x≤y?   
  BLS  WHILE_L1 ; 若条件正确,继续循环
WHILE_END NOP
  ; do
  ; {  x–;
  ; } while(x>0);
  ; 设x为R0 (x为无符号整数)
  MOV  R0,#5  ; 初始化x的值
  
DOWHILE_L1 ADD  R0,R0,#-1 ; 循环体,x–
  
DOWHILE_L2 MOVS R0,R0  ; R0 <= R0,并影响条件码标志  
  BNE  DOWHILE_L1 ; 若R0不为0(即x不为0),则继续循环
DOWHILE_END NOP   
  
  
  ; switch(key&0x0F)
  ; {  case  0:
  ;    case  2:
  ;    case  3:  x = key + y;
  ;              break;
  ;    case  5:  x = key – y;
  ;              break;
  ;    case  7:  x = key * y;
  ;              break;
  ;    default:  x = 168;
  ;              break;      
  ; }
  ; 设x为R0,y为R1,key为R2 (x、y、key均为无符号整数)
  MOV  R1,#3  ; 初始化y的值
  MOV  R2,#2  ; 初始化key的值
SWITCH  AND  R2,R2,#0x0F ; switch(key&0x0F)
 
CASE_0  CMP  R2,#0  ; case 0:
CASE_2  CMPNE R2,#2  ; case 2:
CASE_3  CMPNE R2,#3  ; case 3:
  BNE  CASE_5 
  ADD  R0,R2,R1 ;   x = key + y
  B  SWITCH_END ;   break
  
CASE_5  CMP  R2,#5  ; case  5:
  BNE  CASE_7
  SUB  R0,R2,R1 ;   x = key – y
  B  SWITCH_END ;   break
  
CASE_7  CMP  R2,#7  ; case 7:
  BNE  DEFAULT  
  MUL  R0,R2,R1 ;  x = key * y
  B  SWITCH_END  ;   break
  
DEFAULT  MOV  R0,#168  ; default: x = 168
  
SWITCH_END NOP
  
HALT  B  HALT  
  END 
附:
1.2012年4月27
控制流指令
   转移指令(branch)
       说明:无条件转移B,BAL
       举例:    B LABEL        ; LABEL为某个位置
   条件转移
       说明:    BEQ    相等
           BNE    不等
           BPL    非负
           BMI    负
           BCC    无进位
           BCS    有进位
           BLO    小于(无符号数)
           BHS    大于等于(无符号数)
           BHI    大于(无符号数)
           BLS    小于等于(无符号数)
           BVC    无溢出(有符号数)
           BVS    有溢出(有符号数)
           BGT    大于(有符号数)
           BGE    大于等于(有符号数)
           BLT    小于(有符号数)
           BLE    小于等于(有符号数)