C语言描述该程序流程:
#include <stdio.h> int main() { int a[10]; for(int i=0;i<10;i++) { scanf("%d",&a[i]); } int max=a[0]; for(int i=1;i<=9;i++) { if(a[i]>=max) { max=a[i]; } } printf("%d",max); }
汇编语言:
include irvine32.inc .data arr dword 10 dup(?) ;dup(?) 表示元素被初始化为未定义的值 num dword 9 ;需对比9次 .code main proc lea esi,arr mov ecx,10 inputloop: call readint mov [esi],eax add esi,4 loop inputloop mov esi,offset arr mov eax,[esi] ;设第一个元素为最大值 findmax: cmp num,0 jz output ;如果num为0,则输出 mov edx,[esi+4] ;下一个数 cmp eax,edx jge nextnum ;如果该数不比eax大,就继续往下找 mov eax,edx nextnum: add esi,4 dec num jmp findmax output: call writeint main endp end main
运行结果: