Мне нужно написать процедуру на Masm32, которая должна найти элемент min и max в массиве. Эта процедура должна принять 4 параметра: 1) массив чисел с плавающей точкой, 2) Длина массива, 3) мин - выходной параметр 4) макс - выходной параметрMasm32. Найти min и max в массиве
Я пытался писать, но это Безразлично Не работай. Я не могу получить элементы из массива в процедуру. Правильно только первый элемент, а другие - нет.
Эта процедура:
getMinMax PROC arr:QWORD, len:DWORD, _min:PTR QWORD, _max:PTR QWORD
XOR ECX, ECX
XOR EBX, EBX
MOV ECX, len
DEC ECX
FLD arr[0]
FST _min
FSTP _max
ADD EBX, type arr
start:
FLD arr[EBX]
FLD _min
FCOMPP
FSTSW AX
SAHF
JP nomin
JZ nomin ; min == arr
JC nomin ; min > arr
; min < arr[i]
FLD arr[EBX]
FSTP _min
ADD EBX, type arr
nomin:
LOOP start
ret
getMinMax ENDP
А вот процедура вызова
invoke getMinMax, result, n, offset minVal, offset maxVal
где:
result dq 100 dup(?)
n dd 4
minVal dq ?
maxVal dq ?
Может кто-нибудь мне помочь?