第二次:1.求10个整数的最大值 2.求两个数组的最大值(用函数封装)
1.从键盘输入10个整数,并存放在内存中,求这10整数 最大值,并在屏幕中输出最大值
Include Irvine32.inc
.data
arr dd 10 dup(?)
.code
main PROC
mov ebx,0
input:
cmp ebx,9
ja final0
call readint
mov arr[4 * ebx],eax
add ebx,1
jmp input ;输入10个数
final0:
mov ebx,0
mov eax,arr[0]
again:
cmp ebx,9 ;不用loop
ja final
cmp eax,arr[4 * ebx]
ja next
mov eax,arr[4 * ebx]
next:
add ebx,1
jmp again
final:
call writeint
exit
main ENDP
END main
2. 在内存存放有两组整数中,分别求两组整数最大值,并在屏幕中输出各自最大值
Include Irvine32.inc
.data
arr1 dd 32,44,55,1,10,2,111
arr2 dd 34,555,1,42,52,11,22,453
.code
main PROC
mov edx,offset arr1 ; arr1的首地址放到edx
mov ecx,6 ; ecx存len
call max ; 用max封装函数
call writeint
call Crlf ; \n
mov edx,offset arr2
mov ecx,7
call max
call writeint
exit
main ENDP
max PROC
;edx是首地址
;ecx是长度
mov eax,[edx] ;eax放max
mov ebx,0 ;ebx<-0
again: ;不使用loop
cmp ebx,ecx
ja final
cmp eax,[edx + 4 * ebx]
ja next
mov eax,[edx + 4 * ebx]
next:
add ebx,1
jmp again
final:
ret
max ENDP
END main