Código:
Gracias por la ayuda que me puedan dar :) DATOS SEGMENT PARA PUBLIC 'DATA' PRIMO DB 'Es primo',0AH,0Dh,'$' NPRIMO DB 'No es primo',0AH,0DH,'$' ERROR DB 'Solo acepto digitos',0AH,0DH,'$' CON DB 0 DATOS ENDS PILA SEGMENT PARA STACK 'STACK' DB 64 DUP (0) PILA ENDS CODIGO SEGMENT PARA PUBLIC 'CODE' ASSUME DS:DATOS,SS:PILA,CS:CODIGO MAIN PROC FAR INI:PUSH DS SUB AX,AX PUSH AX MOV CON,0 LEE:MOV AH,01 INT 21H ;LEEMOS 1 DIGITO SUB AL,30H ;COMPROBAMOS SI ES CMP AL,0AH ;NUMERO O CARACTER JL CONVER ;FUE DIGITO MOV AX,DATOS;IMPRIME MSG ERROR MOV DS,AX MOV DX,OFFSET ERROR CALL IMPRIME JG LEE ;FUE CARACTER CONVER:MOV AH,00 ;ES CERO? CMP AL,0 JZ CERO1 ;FUE CERO NO CONVERTIMOS MOV CX,0008 SHL AX,CL CERO1:MOV BX,AX ;COLOCAMOS EL PRIMER DIGITO LEE1:MOV AH,01 INT 21H SUB AL,30H CMP AL,0AH JLE DIGIT MOV AX,DATOS MOV DS,AX MOV DX,OFFSET ERROR CALL IMPRIME JG LEE1 DIGIT:MOV AH,00 CMP AL,0 JZ CERO2 MOV CX,0004 SHL AL,CL CERO2:ADD BX,AX LEE2:MOV AH,01 INT 21H SUB AL,30H CMP AL,0AH JL DIGIT1 MOV AX,DATOS MOV DS,AX MOV DX,OFFSET ERROR CALL IMPRIME DIGIT1:MOV AH,00 ADD BX,AX MOV AX,BX PUSH BX MOV BX,0001 DIV BX CMP DX,0000 ;ES MULTIPLO DE 1? JG M2 INC CON M2:POP BX MOV AX,BX PUSH BX MOV BX,0002 DIV BX CMP DX,0000 ;ES MULTIPLO DE 2? JG M3 INC CON M3:POP BX MOV AX,BX PUSH BX MOV BX,0003 DIV BX CMP DX,0000 ;ES MULTIPLO DE 3? JG M5 INC CON CMP CON,03 JZ NP M5:POP BX MOV AX,BX PUSH BX MOV BX,0005 DIV BX CMP DX,0000 ;ES MULTIPLO DE 5? JG M7 INC CON MOV AL,CON CMP AL,03 JZ NP M7:POP BX MOV AX,BX PUSH BX MOV BX,0007 DIV BX CMP DX,0000 ;ES MULTIPLO DE 7? JG PRI INC CON MOV AL,CON CMP AL,03 JZ NP PRI:MOV AX,DATOS MOV DS,AX MOV DX,OFFSET PRIMO CALL IMPRIME JG FIN NP:MOV AX,DATOS MOV DS,AX MOV DX,OFFSET NPRIMO CALL IMPRIME FIN:RET MAIN ENDP IMPRIME PROC NEAR MOV AH,09 INT 21H MOV AH,00 RET IMPRIME ENDP CODIGO ENDS END INI