2015-10-24 54 views
0

在此程序中有輕微錯誤。這是一個簡單的程序,允許用戶輸入一個高於2的數字並確定它是否爲素數。它對3和4的數字有很好的期望。據說3不是素數,4是素數。我只是簡單地顯示了計算的代碼。我不確定shr可能與錯誤有關。任何解釋?我試圖避免只爲這些值做跳轉。素數程序錯誤(MASM)

謝謝你的時間。

回答

2

je Prime是錯誤的。 ESI的值是EAX的一半(向下取整)。如果EAX是3,則ESI將變爲1. ECX以2開始有效(mov ecx, 1inc ecx)。所以它會遍歷整個32位的範圍,然後它將等於ESI。當ECX變爲3時,循環將打破到NotPrime

EAX如果== 4,環路將打破到Prime一次:第ECX是2和ESI是2

處理:更改je Primeja Prime