SHARE
TWEET

MelhorCodigoEmAssembler

a guest Dec 5th, 2019 107 Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. JMP start
  2.  
  3. ;X e a variável que armazena o valor do vetor
  4. ;O DB 0 simboliza que chegou no fim da string
  5. X:  DB "1;7;3;6;5;5;2"
  6.     DB 0   
  7.  
  8. start: 
  9.     MOV C, X    ;Atribui o endereço do vetor X no registrador C
  10.     MOV B, 0d
  11.  
  12. escreverMensagemInicial:
  13.     ;Escreve o inicio da mensagem
  14.     MOV D, 232d
  15.  
  16.     MOV [D], 77
  17.     INC D
  18.     MOV [D], 69
  19.     INC D
  20.     MOV [D], 68
  21.     INC D
  22.     MOV [D], 40
  23.     INC D
  24.    
  25.     MOV D, 0d
  26.  
  27. calculo:
  28.     ;Inicia a soma dos elementos do vetor
  29.     MOV A, [C]
  30.  
  31.     ;CMP e usado para compara se o valor de A e igual a 59d(;)
  32.     ;caso se igual e realizado um salto para virgula
  33.     CMP A, 59d
  34.     JE virgula 
  35.  
  36.     SUB A, 48d
  37.     ADD B, A
  38.    
  39. virgula:
  40.     INC C
  41.    
  42.     ;Compara se o valor do registrador D e o mesmo que o valor em C naquela posição
  43.     ;caso não seja igual a 0 e saltado para calculo
  44.     CMP D, [C]     
  45.     JNZ calculo
  46.    
  47.     ;Operação de identificação do numero de elementos do vetor
  48.     MOV A, C
  49.     DIV 2d
  50.     MOV D, A
  51.  
  52.     ;Efetua a operação de calculo da media e envia os resultados pelo push
  53.     MOV A, B
  54.     MOV B, D
  55.     MOV D, A
  56.     DIV B
  57.     PUSH A
  58.    
  59.     MUL B
  60.     SUB D, A
  61.     MOV A, D
  62.     MUL 10d
  63.     DIV B
  64.     PUSH A
  65.  
  66. organizarRegistradores:
  67.     ;Preparando os registradores para escrever o resto da mensagem
  68.     MOV A, 0d
  69.     MOV B, 0d
  70.     MOV C, 2d
  71.     MOV D, 236d
  72.  
  73. escreverValoresVetor:   ;Usado para enviar os valores do vetor para a saída do sistema
  74.     MOV A, [C]
  75.     MOV [D], A
  76.     INC D
  77.     INC C
  78.  
  79.     CMP B, [C]
  80.     JNZ escreverValoresVetor
  81.  
  82. escreverFinalMensagem:
  83.     ;Conclui a mensagem de saída do sistema
  84.     MOV [D], 41
  85.     INC D
  86.     MOV [D], 32
  87.     INC D
  88.     MOV [D], 61
  89.     INC D
  90.     MOV [D], 32
  91.     INC D
  92.  
  93.     ;Realizar a permuta no resultado do sistema
  94.     POP B
  95.     POP A
  96.     PUSH B
  97.     PUSH A
  98.     MOV A, 0d
  99.     POP A
  100.     ADD A, 48d
  101.     ADD B, 48d
  102.  
  103.     ;Enviando o resultado para a saída
  104.     MOV [D], A
  105.     INC D
  106.     MOV [D], 44d
  107.     INC D
  108.     MOV [D], B
  109.     INC D
  110.  
  111.     HLT ;Encerrando todas as operacoes
RAW Paste Data
We use cookies for various purposes including analytics. By continuing to use Pastebin, you agree to our use of cookies as described in the Cookies Policy. OK, I Understand
Top