Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- # Cria uma funcao em assembly que receba uma data de nascimento, o dia atual, e retorne a quantidade de dias vividos.
- .text
- main:
- addi $2, $0, 5
- syscall
- add $8, $0, $2 # dia
- addi $2, $0, 5
- syscall
- add $9, $0, $2 # mes
- addi $2, $0, 5
- syscall
- add $10, $0, $2 # ano
- # Data de Hoje
- addi $2, $0, 5
- syscall
- add $11, $0, $2 # H-dia
- addi $2, $0, 5
- syscall
- add $12, $0, $2 # H-mes
- addi $2, $0, 5
- syscall
- add $13, $0, $2 # H-ano
- jal bissexto
- # add o valor calculado de ano ao reg $10 (ano = ano * 366 ou 365)
- add $10, $zero, $24
- # reg livres = $14, $15, $24, $25
- # (ano % 4 == 0) && ((ano % 100 != 0)
- # (ano % 400 == 0));
- bissexto:
- addi $14, $zero, 4
- div $10, $14
- mfhi $15
- add $25, $zero, $ra # pega o ponto que parou e adiciona ao registrador $25
- bne $15, $zero, n_bissexto
- addi $14, $zero, 100
- div $10, $14
- mfhi $15
- beq $15, $zero, n_bissexto
- addi $14, $zero, 400
- div $10, $14
- mfhi $15
- bne $15, $zero, n_bissexto
- # Se chegou aqui, o numero eh bissesto
- addi $15, $zero, 366
- mul $24, $10, $15
- jr $25
- n_bissexto:
- addi $15, $zero, 365
- mul $24, $10, $15
- jr $25 # retorna ao ponto onde `bissexto` parou.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement