.MODEL small .STACK 100h .DATA Message1 DB 'Digite uma sequencia de caracteres',13,10,'$' Message2 DB 'Este nao e um caracter valido:',13,10,'$' Message3 DB 'Tamanho do vetor foi excedido',13,10,'$' Vetor1 DB 0,0,0,0,0,0,0,0,0,0,13,10,'$' Vetor2 DB 0,0,0,0,0,0,0,0,0,0,13,10,'$' newline DB 13,10,'$' var1 DB 0 var2 db 0 POS db 0 ;posicao no vetor Tam DB 10 .CODE mov cx,@data ; mov ds,cx ;set DS to point to the data segment xor cx,cx ;limpa cx mov ah,9 ;funcao mostrar na tela mov dx,OFFSET Message1 ;funcao mostrar na tela int 21h ;funcao mostrar na tela Pega_caracter_Verifica: mov ah,1 ;funcao 1 da int 21 h, pega caracter int 21h ;caracter que eu peguei, vai em al cmp al,13 ;compara bl com 13 je FINALIZA1 ;condicional cmp al,32 ;compara bl com 32 valor em inteiro de space jb NOT_DIGIT ;verificar se o primeiro caracter pego é um digito cmp al,127 ;tenho que verificar se o caracter em al, está entre 0 e 9. ja NOT_DIGIT ;senão é digito CALL GUARDA_NO_VETOR jmp Pega_caracter_Verifica NOT_DIGIT: xor ax,ax ;limpa ax mov ah,9 ;funcao mostrar na tela mov dx,OFFSET Message3 ;funcao mostrar na tela int 21h ;funcao mostrar na tela jmp Pega_caracter_Verifica ;pula para Pega_Numero_Verifica FINALIZA1: mov ah,9 ;move 9 para ah mov dx,OFFSET newline ;pula linha int 21h ; xor ax,ax ;resetar ax mov ah,9 ;DOS print string function mov dx,OFFSET Vetor1 ;ponteiro para o conteudo de fibvetor int 21h ;Mostra o conteudo do vetor mov ah,4ch ;DOS terminate program function int 21h ;terminate the program ; GUARDA_NO_VETOR proc near push bx ;empilha bx xor ch,ch ;limpa ch mov cl, [POS] ;move tam para cl cmp cl,[Tam] je limite_do_vetor mov si, cx ;move cx para si mov bx, OFFSET Vetor1 ;move FibVetor para bx mov [bx][si],al ;move ah para vetor inc cx ;decrementa cx mov [POS],cl ;move cl para tam pop bx ;desempilha bx ret limite_do_vetor: mov ah,9 mov dx,OFFSET Message3 int 21h ret ENDP END ;fim