Dati SEGMENT
N DW ? ; numero da cui individuare i primi
Primi DB 1000 DUP(?) ; vettore dei primi individuati
Dati ENDS
Codice SEGMENT
; BX - contatore che determina su quale numero va svolto il
; test di primalità
Inizio:
MOV AX,Dati
MOV DS,AX
MOV DI,0h
MOV BX,N
Ciclo3:
MOV CX,BX ; imposta il contatore CX come il numero corrente - 1
DEC CX
Ciclo2:
; il dividendo viene posto a BX, ossia il numero sotto test corrente
MOV AX,BX
MOV DX,0h
DIV CX ; controllo della divisibilità di BX per CX
CMP DX,0h
JE Non_Primo2
; ciclo che imposta un divisore successivo
DEC CX
CMP CX,1d
JA Ciclo2
; memorizza in locazioni progressive (di Primi)
; i numeri che sono risultati primi
MOV Word Ptr[Primi + DI],BX
INC DI
Non_Primo2:
DEC BX ; ciclo che imposta il test per un numero successivo...
CMP BX,1h
JNE Ciclo3
MOV AH,4Ch ; uscita al sistema operativo
INT 21h
Codice ENDS
END Inizio