Advertisement
Guest User

ass

a guest
Nov 23rd, 2014
167
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. # Cria uma funcao em assembly que receba uma data de nascimento, o dia atual, e retorne a quantidade de dias vividos.
  2.  
  3. .text
  4. main:
  5.     addi $2, $0, 5
  6.     syscall
  7.    
  8.     add $8, $0, $2 # dia
  9.    
  10.     addi $2, $0, 5
  11.     syscall
  12.    
  13.     add $9, $0, $2 # mes
  14.    
  15.     addi $2, $0, 5
  16.     syscall
  17.    
  18.     add $10, $0, $2 # ano
  19.    
  20.     # Data de Hoje
  21.     addi $2, $0, 5
  22.     syscall
  23.    
  24.     add $11, $0, $2 # H-dia
  25.    
  26.     addi $2, $0, 5
  27.     syscall
  28.    
  29.     add $12, $0, $2 # H-mes
  30.    
  31.     addi $2, $0, 5
  32.     syscall
  33.    
  34.     add $13, $0, $2 # H-ano
  35.  
  36.     jal bissexto
  37.    
  38.     # add o valor calculado de ano ao reg $10 (ano = ano * 366 ou 365)
  39.     add $10, $zero, $24
  40.    
  41.     # reg livres = $14, $15, $24, $25
  42.  
  43.        
  44.  # (ano % 4 == 0) && ((ano % 100 != 0)
  45.  # (ano % 400 == 0));  
  46. bissexto:
  47.  
  48.     addi $14, $zero, 4
  49.     div $10, $14
  50.     mfhi $15
  51.    
  52.     add $25, $zero, $ra # pega o ponto que parou e adiciona ao registrador $25
  53.    
  54.     bne $15, $zero, n_bissexto
  55.    
  56.     addi $14, $zero, 100
  57.     div $10, $14
  58.     mfhi $15
  59.    
  60.     beq $15, $zero, n_bissexto
  61.    
  62.     addi $14, $zero, 400
  63.     div $10, $14
  64.     mfhi $15
  65.    
  66.     bne $15, $zero, n_bissexto
  67.     # Se chegou aqui, o numero eh bissesto
  68.     addi $15, $zero, 366
  69.     mul $24, $10, $15
  70.    
  71.     jr $25
  72.    
  73. n_bissexto:
  74.  
  75.     addi $15, $zero, 365
  76.     mul $24, $10, $15
  77.     jr $25 # retorna ao ponto onde `bissexto` parou.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement