我在nasm程序中實施,可以檢測提供的質數。在nasm中查找質數
xor rax,rax;
mov eax, 6 ;
mov ecx, 1 ;
loop:
cmp ecx, 6
jbe end_loop ; ecx >= bufor
xor edx ,edx ;
mov eax, 6
div ecx ; div dla edi
cmp edx, 0
je not_prime
inc ecx ; i++
jmp loop_for
這是一個簡單的算法,檢查天氣6是素數,但它失敗。它檢查edx
寄存器中的div提醒。它始終在end_loop
(但它應該在not_prime
)指令結束,所以程序說6是一個素數,但它不是。有人能告訴我如何解決它嗎?我沒有任何線索。
你是否確定edx中什麼是當你期望它爲0? –
據我所知edx = eax mod ecx? – RMachnik
我們知道它可以被1整除1.從2開始我們可以通過執行'test eax,1'來確定一個值是否可以被2整除......但是......採取小步驟,從2開始。 –