1
0
Files
Laboratori-MIPS/Laboratorio9/bisestile.asm
2024-03-22 13:53:19 +01:00

70 lines
1.5 KiB
NASM

LUNG =, 6
.data
anni: .word 1945, 2008, 1800, 2006, 1748, 1600
ris: .space LUNG
.text
.globl main
.ent main
main:
la $a0, anni
la $a1, ris
li $a2, LUNG
jal bisestile
li $v0, 10 # codice per uscita dal programma
syscall # fine
.end main
.ent bisestile
bisestile:
addi $sp, $sp, -4
sw $ra, ($sp)
li $s0, 0
sll $a2, $a2, 2
addu $s1, $a0, $a2
move $s2, $a0
move $s3, $a1
loop:
lw $a0, ($s2)
jal bisestileS
beq $v0, $0, skip
addiu $s0, $s0, 1
skip:
sb $v0, ($s3)
addiu $s2, $s2, 4
addiu $s3, $s3, 1
bne $s2, $s1, loop
move $v0, $s0
lw $ra, ($sp)
addi $sp, $sp, 4
jr $ra
.end bisestile
.ent bisestileS
bisestileS:
# anno in $a0
li $t0, 400
div $a0, $t0
mfhi $t0
beq $t0, 0, bis
li $t0, 100
div $a0, $t0
mfhi $t0
beq $t0, 0, nbis
li $t0, 4
div $a0, $t0
mfhi $t0
beq $t0, 0, bis
nbis:
li $v0, 0
jr $ra
bis:
li $v0, 1
jr $ra
.end bisestileS