Мне нужно написать процедуру на Masm32, которая должна найти минимальный и максимальный элемент в массиве. Эта процедура должна принимать 4 параметра: 1) массив чисел с плавающей запятой, 2) длина массива, 3) min -- выходной параметр 4) 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 ?
Может ли кто-нибудь помочь мне?