int GetSum(int val)
{
int sum = 0;
_ _ asm _ _ _ _ volatile _ _(
" MOV r5,%1\n"//val被放入寄存器r5。
" MOV R1,#0\n" //sum = 0
" MOV·R2,#1\n"//i = 1
"循環:\n "
" ADD R1,R1,R2\n" //sum = sum + i
"添加R2 R2,#1\n" //i++ "
" CMP R5,R2\n" //判斷val是否減為0 if(i==val)。
" BEQ結束\n" //如果為0,則跳轉到結束處中斷。
" B LOOP\n" //跳轉到循環以進入下壹個循環,否則繼續。
"結束:\n "
" MOV %0,R1\n" //sum = R1
:" =r"(sum)//輸出
:" r"(val)//輸入
:“記憶”
);
返回總和;
}
以下是C源代碼版本
void Find_Max_Min(int arr[],int *max,int *min)
{
int I;
* max = arr[0];
* min = arr[0];
for(I = 1;我& ltLENi++)
{
if(* max & lt;arr[i])
* max = arr[I];
if(* min & gt;arr[i])
* min = arr[I];
}
}
請參考匯編版本和上述函數的例子自己寫。妳再也找不到我了。