Title 배열의 최소값 구하기
INCLUDE Irvine32.inc
IntegerCount = 20; array size
.data
intArray SDWORD 5 DUP(?)
min SDWORD ?
prompt1 BYTE "Enter an integer: ",0
prompt2 BYTE "Min : ",0
.code
main PROC
mov esi,OFFSET intArray
mov ecx, lengthof intArray
call PromptForIntegers ; 입력 다받음
mov esi, 0 ; index
mov eax, intArray[0] ; min
mov ecx, lengthof intArray-1 ; 4번 돌아야함
L1 :
add esi, type intarray ; 한칸증가 array[1] 부터 검사
cmp intarray[esi], eax ; 비교
jnl L2 ; 작지 안으면 반복
mov eax, intarray[esi] ; 작으면 교환
L2 : loop L1
mov edx,OFFSET prompt2
call WriteString ; display string
call WriteInt ; display EAX = min
call Crlf
exit
main ENDP
;-----------------------------------------------------
PromptForIntegers PROC
;
; 사용자로부터 배열에 정수를 입력 받는다.
; 매개변수 >> ESI : 더블형 정수 배열 주소, ECX : 배열의 크기
; Returns: the array contains the values
; entered by the user(반환값 >> 사용자에 의해 입력된 정수)
; Calls: ReadInt, WriteString(정수입력, 정수입력을 위한 안내문)
;-----------------------------------------------------
pushad ; save all registers
mov edx,OFFSET prompt1
L1:
call WriteString ; display string
call ReadInt ; read integer into EAX
mov [esi],eax ; store in array
add esi,4 ; next integer
loop L1
L2:
popad ; restore all registers
ret
PromptForIntegers ENDP
END main