Effettivamente non è difficilissimo... ma credo sia un po' lunghetto, essendo Assembly.
Io proporrei una cosa del genere:
- Crea un array VETT, o un file... con tutti i numeri primi da 1 a 100000, magari automaticamente... non so se esista un modo facile
- Leggi il numero e mettilo in un registro, che so, CX (il che dovrebbe velocizzare le cose)
- Azzera l'indice SI, in modo che punti all'inizio dell'array
- Ciclo:
- Metti il numero in AX e dividilo per VETT[SI] con la DIV
- Se il resto è zero, hai trovato un fattore: stampalo (SENZA incrementare SI, il numero potrebbe essere, che ne so, 12 = 2 * 2 * 3) e metti il quoziente in CX (rappresenta il numero senza il fattore trovato)
- Altrimenti incrementa SI
- Fine ciclo se CX == 1 oppure se il SI è arrivato a fine vettore
Almeno spero...