[英]Masm32. Find min and max in array
我需要在Masm32上編寫一個過程,該過程應該在數組中找到min和max元素。 此過程應使用4個參數:1)浮點數數組,2)數組長度,3)min-out參數4)max-out參數
我嘗試編寫它,但是沒有用。 我無法將元素從數組插入過程。 只有第一個元素是正確的,而其他元素則不正確。
此過程:
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 ?
有人可以幫我嗎?
一種。 您不應該在第一個參數上使用OFFSET / PTR嗎?
invoke getMinMax, offset result, n, offset minVal, offset maxVal
getMinMax PROC arr:PTR QWORD, len:DWORD, _min:PTR QWORD, _max:PTR QWORD
b。 危險地假設LEN始終至少為2。您應該測試LEN = 0和LEN = 1的情況
C。 您必須交換這些行! 加法必須始終經過每次迭代。
ADD EBX, type arr
nomin:
d。 您當前的程序不會計算任何最大值。
e。 在將LEN移入ECX之前,清除ECX是多余的。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.