Programación en lenguaje ensamblador ---- Determinación de números primos
SEGMENTO DE PILA PARA PILA 'Pila'
DW 32 DUP(0)
EXTREMOS DE PILA
------ ----------------------------------
DATASEG SEGMENT PARA 'Datos '
mess1 db 'Ingrese un número n(gt; 2):', 0ah, 0dh, '$'
mess2 db 'sí, lo es.', 13, 10. '$ '
mess3DB' no lo es.
DATASEG TERMINA
;--------------------------------- -----------
SEGMENTO CODESEG PARA 'Código'
PROC PRINCIPAL FAR
ASUME SS: STACK, DS: DATASEG, CS: CODESEG
mov ax, dataseg
mov ds, ax
inicio:
lea dx, mess1
mensaje de llamada
llamada a putin
y ax, 000fh Dado que el número ingresado hace que el valor de retorno esté en los 4 bits inferiores de AL, entonces...
mov num, ax
cmp num, 2; determina si es menor que 2
jle start
dec ax; AX, si es el número -1, ¡obtendrás resultados incorrectos!
mov cx, ax; dar tiempos de bucle CX
mm:
cmp cx, 1
je isss
mov dx, 0; resto inicial
mov ax, num
mov bx, cx
div bx
cmp dx, 0
je notss
loop mm
isss:
lea dx, mess2
mensaje de llamada p>
jmp _out; salta al juzgar el resultado
notss:
lea dx, mess3
mensaje de llamada
jmp _out; salta cuando se obtiene el resultado
solicitud de procesamiento de salida
mov ah, 09h
int 21h
ret
solicitud final
putin proc; entrada de número
mov ah, 1
int 21h
ret; aquí termina la ejecución, también debe haber RET
putin endp
_out:
mov ax, 4c00h; el programa debe tener un final normal, ¿no?
int 21h
ENDP PRINCIPAL;
CODESEG TERMINA
FIN PRINCIPAL