我在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开始。 –