C语言描述该程序流程:
#include <stdio.h> int main() { int arr1[]={11,33,23,542,12233,5443,267,456,234,453}; int arr2[]={21,123,432,45,234,534,6517,678,879,1}; int max=arr1[0]; for(int i=1;i<10;i++) { if(arr1[i]>max) { max=arr1[i]; } } printf("%d\n",max); max=arr2[0]; for(int i=1;i<10;i++) { if(arr2[i]>max) { max=arr2[i]; } } printf("%d",max); }
汇编语言:
include irvine32.inc .data arr1 dword 11,33,23,542,12233,5443,267,456,234,453 arr2 dword 21,123,432,45,234,534,6517,678,879,1 num dword 9 ;需对比9次 .code main proc mov esi,offset arr1 mov eax,[esi] ;设第一个元素为最大值 findmax1: cmp num,0 ;如果num为0,输出并开始找第二个数组的最大值 jz func mov edx,[esi+4] cmp eax,edx jge nextnum1 ;如果该数不比eax大,就继续往下找 mov eax,edx nextnum1: add esi,4 dec num jmp findmax1 func: call writeint mov esi,offset arr2 mov eax,[esi] mov num,9 findmax2: cmp num,0 jz output mov edx,[esi+4] cmp eax,edx jge nextnum2 mov eax,edx nextnum2: add esi,4 dec num jmp findmax2 output: call writeint main endp end main
运行结果: