input tahun
if (tahun mod 100 = 0) AND (tahun mod 400 == 0) then
{
write(“Tahun Kabisat”)
} else {
If (tahun mod 100 != 0) AND (tahun mod 4 == 0) then
{
Write(“Tahun Kabisat”)
} else {
Write(“Bukan Tahun Kabisat”)
Assembly
.data #mengawali deklarasi variable
teks1:.asciiz "\nMasukkan tahun : " #variable string teks1
teks2:.asciiz "Tahun Kabisat" #variable string teks2
teks3:.asciiz "Bukan Tahun Kabisat" #variable string teks3
.text #mengawali instruksi
.globl main #label main adalah label global
main: #label main
la $a0, teks1 #load address teks1 ke $a0
li $v0, 4 #$v0, 4 -> perintah print string
syscall #string teks1 di-print
li $v0, 5 #$v0, 5 -> baca integer
syscall #integer di masukkan ke $v0
add $t0,$v0,$0 #t0 = $v0 + $0
addi $t1,$0,100 #t1 = 100
div $t0,$t1 #membagi $t0 dengan $t1
mfhi $t4 #t4 = t0 mod t1
beq $t4,$zero,emprat #jika nol ke emprat
j empat #ke label empat
emprat: #label emprat
addi $t2,$0,400 #t2 = 400
div $t0,$t2 #membagi $t0 dengan $t2
mfhi $t4 #t4 = t0 mod t2
beq $t4,$zero,kabisat #jika nol ke kabisat
j non #ke label non
empat: #label empat
addi $t3,$0,4 #t3 = 4
div $t0,$t3 #membagi $t0 dengan $t3
mfhi $t4 #t4 = t0 mod t3
beq $t4,$zero,kabisat #jika nol ke kabisat
j non #ke label non
kabisat: #label kabisat
li $v0,4 #$v0, 4 -> perintah print string
la $a0,teks2 #load address teks2 ke $a0
syscall #string teks2 dicetak
j exit #ke label exit
non: #label non
li $v0,4 #$v0, 4 -> perintah print string
la $a0,teks3 #load address teks3 ke $a0
syscall #string teks3 dicetak
j exit #ke label exit
exit: #label exit
jr $ra #mengakhiri program
No comments:
Post a Comment