C语言设计 #define N 8 int main(void) { int ar[N] = { 9,5,3,1,7,-7,21,-23 }; int i,t; int sum=0, ave = 0; int max = ar[0]; for ( i = 0; i < N; i++) { sum += ar[i]; if (max < ar[i]) { max = ar[i]; } } ave = sum / N; //不允许使用除法指令 } 汇编语言设计 AREA example , CODE , READONLY N EQU 8 ENTRY CODE32 Start LDR r0 , = DATA MOV r1 , #N SUBr1 r1 , #1 ; 循环 LDR r2 , [r0] ; 用于存放最大值 MOV r3 , #0 ; 存放整数的和 MOV r4 , #0 ; 存放平均数 ADD r0 , r0 , #4 ; 获得下一个整数的地址 LDR r5 , [r0] ; 取下一个整数 SUB r1 , r1 , #1 ; 循环次数减1 CMP r2 , r5 ; 比较r2 ,r5两个数的大小 MOVCC r2 , r5 ; r5小于r2的时候,把r5的值移入r2 ADD r3 ,r3 , r5 ; 求和 CMP r1 ,#0 ; 判断循环次数是不是用完了 BNE start ; 没有用完跳转到start处再次执行 AVER SUB r3 , r3 ,#8 ;减去整数的个数 ADD r4 , r4 ,#1 ;r4用于存储平均数 CMP r3 ,#0 ; 判断r3的内容是否为0 BGT AVER ; 不相等就继续执行循环 AREA Array DATA , READWRITE DATA DCD 9 ,5 , 3 ,7 ,-7 ,21,-23 END