0
在此程序中有輕微錯誤。這是一個簡單的程序,允許用戶輸入一個高於2的數字並確定它是否爲素數。它對3和4的數字有很好的期望。據說3不是素數,4是素數。我只是簡單地顯示了計算的代碼。我不確定shr
可能與錯誤有關。任何解釋?我試圖避免只爲這些值做跳轉。素數程序錯誤(MASM)
謝謝你的時間。
在此程序中有輕微錯誤。這是一個簡單的程序,允許用戶輸入一個高於2的數字並確定它是否爲素數。它對3和4的數字有很好的期望。據說3不是素數,4是素數。我只是簡單地顯示了計算的代碼。我不確定shr
可能與錯誤有關。任何解釋?我試圖避免只爲這些值做跳轉。素數程序錯誤(MASM)
謝謝你的時間。
je Prime
是錯誤的。 ESI
的值是EAX
的一半(向下取整)。如果EAX
是3,則ESI
將變爲1. ECX
以2開始有效(mov ecx, 1
inc ecx
)。所以它會遍歷整個32位的範圍,然後它將等於ESI
。當ECX
變爲3時,循環將打破到NotPrime
。
EAX
如果== 4,環路將打破到Prime
一次:第ECX
是2和ESI
是2
處理:更改je Prime
到ja Prime
。