Advertisement
Guest User

MelhorCodigoEmAssembler

a guest
Dec 5th, 2019
141
0
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
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement