;Programa para mostrar o nome do aluno e digitar 2 notas.

;No final mostrar os nomes e a media.

;Obs.: para as notas, armazenar multiplicada por 10



Pilha Segment para Stack 'Stack'

      Db 256 Dup(0)

Pilha Ends



Dados Segment para Public 'Data'

      TabNomes   Db 'Luiz Erivelto de Oliveira Jr            '

                 Dw 0,0,0

                 Db 'James Tiberius Kirk                     '

                 Dw 0,0,0

                 Db 'Leonard Spock Nimoy                     '

                 Dw 0,0,0

                 Db 'Dr Magro Mackcoy                        '

                 Dw 0,0,0

                 Db 'Jean Luc Picard                         '

                 Dw 0,0,0

                 Db '*'

      SaidaNome  Db 10,40 Dup(0),'$'

      MsgN1      Db 10,13,' Nota 1: $'

      MsgN2      Db 13,10,' Nota 2: $'

      Soma       Dw 0

      MsgMedia   Db 13,10,' Media : '

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

      Media      Dw 0

Dados Ends

Prog Segment para Public 'Code'

      Assume Cs:Prog,Ds:Dados,Es:Dados

      Org    100h

      Inicio Proc Far

         Push Ds

         Xor Ax,Ax    ;Mov Ax,0

         Push Ax

         Mov Ax,Dados

         Mov Ds,Ax

         Mov Es,Ax

         Mov Ds,Ax

         Cld

         Mov Si,OffSet TabNomes

;Inicia a Leitura dos Nomes

         LerNome: Mov Di,OffSet SaidaNome+1

              Mov Al,[Si]

              Cmp Al,'*'

              Je Continua

              Mov Cx,40

              Rep MovSb

              Mov Ah,9

              Mov Dx,OffSet SaidaNome

              Int 21h



              Mov Ah,9

              Mov Dx,OffSet MsgN1

              Int 21h

              Call LerInt  ;Ax = Valor

              Mov Soma,Ax

              Mov Di,Si

              StoSw



              Mov Ah,9

              Mov Dx,OffSet MsgN2

              Int 21H

              Call LerInt

              StoSw



              Add Soma,Ax

              Mov Dx,0

              Mov Ax,Soma

              Mov Bx,2

              IDiv Bx

              StoSw



              Add Si,6

              Jmp Lernome

         Continua: Mov Si,OffSet TabNomes         



         Call PulaLinha



         MostraNome: Mov Di,OffSet SaidaNome+1

              Mov Al,[Si]

              Cmp Al,'*'

              Je FimMostrar

              Mov Cx,40

              Rep MovSb

              Lodsw

	      Lodsw

              Mov Ah,9

              Mov Dx,OffSet SaidaNome

              Int 21h

              

              Lodsw

              Mov Di,OffSet NumAsc

              Call DecAsc

              Mov Dx,OffSet MsgMedia

              Call Mostra



              Jmp MostraNome

         FimMostrar: Ret

     Inicio Endp

     Extrn DecAsc:Near

     Extrn Mostra:Near

     Extrn LerInt:Near

     Extrn PulaLinha:Near

Prog Ends

End Inicio

