;Programa de Identificacao de Numeros Primos

;Nome - Luiz Erivelto de Oliveira Jr

;Ra   - 97427



Pilha Segment para Stack 'Stack'

      Db 512 Dup(0)

Pilha Ends



Dados Segment para Public 'Data'

      NumAsc  Db 6 Dup(0),10,13,'$'

      Divisor Dw 0

      Numero  Dw 0

Dados Ends

Programa Segment para Public 'Code'

      Assume Cs:Programa,Ds:Dados,Es:Dados

      Org    100h

      Inicio Proc Far

         Push Ds

         Xor Ax,Ax

         Push Ax

         Mov Ax,Dados

         Mov Ds,Ax

         Mov Es,Ax



         Mov Ax,1

         Mov Di,OffSet NumAsc

         Call DecAsc

         Mov Dx,OffSet NumAsc

         Call Mostra



         Mov Ax,2

         Mov Di,OffSet NumAsc

         Call DecAsc

         Mov Dx,OffSet NumAsc

         Call Mostra



;Inicia a Procura dos Numeros Primos

      Mov Numero,2

      Comeca: Add Numero,1

         Mov Ax,Numero

         Mov Divisor,2



;Inicia a Procura dos Numeros Pares (Nao Primos)

         Test Ax,1

         Jz   NaoPrimo

        

         Interno: Mov Bx,Divisor

                  Mov Ax,Numero

                  Cmp Ax,Bx

                  Je  Primo

                  Mov Dx,0

                  IDiv Bx

                  Cmp Dx,0

                  Je  NaoPrimo

                  Add Divisor,1

                  Jmp Interno



   Primo: Mov Ax,Numero

          Mov Di,OffSet NumAsc

          Call DecAsc

          Mov Dx,OffSet NumAsc

          Call Mostra



NaoPrimo: Cmp Numero,1000

          Je Termina

          Jmp Comeca

    

      Termina: Ret

      Inicio Endp

      Extrn DecAsc:Near

      Extrn Mostra:Near

      Extrn PulaLinha:Near

Programa Ends

End Inicio

