Ciao a tutti, devo fare un programma che dica se il numero inserito e' primo(Ris=1) o no(Ris=0)
Ecco il codice:
codice:
#include <stdio.h>
void main () {
unsigned int Num=2;
int Ris; // 1 se e' primo, 0 altrimenti
__asm {
SUB EAX,EAX
SUB EBX,EBX
SUB ECX,ECX
SUB EDX,EDX
CMP Num,2
JZ J1 ;Salta se Num=2
CMP Num,2
JNGE J2 ;Salta se Num<2
MOV EAX,Num
MOV EDX,2
DIV EDX ;EAX=MaxDiv=Num/2
MOV EBX,2 ;EBX=D=2
L1:
MOV ECX, Num MOD EBX ;Resto=ECX= Num MOD D --- MOD restituisce il resto della divisione Num/D // non funziona-errore di compilazione
CMP ECX,0
JZ J3: ;Salta se ECX=0
INC EBX ;D++
CMP EBX,EAX
JG J4 ;Salta se D>MaxDiv
JMP L1 ;Loop
J1:
J4:
MOV Ris,1
JMP J5
J3:
J2: MOV Ris,0
J5:
}
printf ("Ris:%d\n",Ris);
}
Vorrei sapere come posso utilizzare l'operatore MOD, perche' il compilatore mi da' errore se scrivo in questo modo:
codice:
MOV ECX, Num MOD EBX
PS: non posso cambiare l'algoritmo e il codice in c.