print macro msg
   lea dx,msg
   mov ah,09h
   int 21h
endm
read macro n,j1,j2
j1:mov ah,01h
    int 21h                     
    cmp al,0dh
    je j2
    sub al,30h
    mov bl,al
    mov ax,n
    mov dx,0ah
    mul dx
    xor bh,bh
    add ax,bx
    mov n,ax
    jmp j1
j2 :nop
endm
.model small
.stack 100h
.data
    msg1 db 10,13,'Enter the number: $'
    msg2 db 10,13,'Prime Number $'
    msg3 db 10,13,'Not a Prime Number$'
    msg4 db 10,13,'Invalid Entry$'
    num dw 0
        
.code
main proc
    mov ax,@data
    mov ds,ax
    print msg1
    
    ;reading 1st multidigit number
    read num,jump1,jump2
    
    mov ax,num
    ;if num=0
    cmp ax,00
    jne notzero
    print msg4
    jmp stop
notzero:;if num=1 or 2
    cmp ax,03
    jnc jump3
    jmp prim
    
    ;check wheather num is prime or not
jump3:mov cx,02
    div cx
    mov cx,ax
    mov bx,02
loop1:xor dx,dx
    mov ax,num
    div bx
    cmp dx,00
    je notprim
    inc bx
    loop loop1
    
prim:print msg2
    jmp stop
    
notprim:print msg3
stop:mov ah,4ch
    int 21h
main endp
end
No comments:
Post a Comment