Mbakbie bersama kawan2 se- kerja lab, mendapatkan tugas assembly… suruh cari jalur2 jalan dari mana ke mana…

Buatlah assembly dari kasus diatas, dengan peraturan jalan melalui bundaran harus mengikuti arahnya!
Contoh:
Awal: A
Tujuan: Z
Melalui:
1. Jl. Adhyaksa
2. Gg. Akil
3. Jl. Sukapura
4. Gg. Demang
5. Jl. Sukabirus
Contoh:
Awal: B
Tujuan: X
Melalui:
1. Jl. Sukapura
2. Gg. PGA
3. Jl. Adhyaksa
2. JAWABAN
#Asumsi
#Input:
#1 berarti A
#2 berarti B
#3 berarti C
#4 berarti X
#5 berarti Y
#6 berarti Z
.data
mes0:.asciiz “Program Jalan Baru\n”
mes1:.asciiz “Awal:\n 1 utk A \n 2 utk B \n 3 utk C \n \nTujuan: \n 4 utk X \n 5 utk Y \n 6 utk Z \n
\n”
mes2:.asciiz “Awal:”
mes3:.asciiz “Tujuan:”
mes4:.asciiz “Melalui:\n”
mes5:.asciiz “Jl.Adhyaksa\n”
mes6:.asciiz “Jl.Sukapura\n”
mes7:.asciiz “Jl.Sukabirus\n”
mes8:.asciiz “Gg.Akil\n”
mes9:.asciiz “Gg.Radio\n”
mes10:.asciiz “Gg.Demang\n”
mes11:.asciiz “Gg.PGA\n”
#mes12:.asciiz “Maaf inputan salah!!\n”
.text
.globl main
main:
addu $t1,$t1,1
addu $t2,$t2,2
addu $t3,$t3,3
addu $t4,$t4,4
addu $t5,$t5,5
addu $t6,$t6,6
la $a0,mes0
li $v0,4 #print mes0
syscall
la $a0,mes1
li $v0,4 #print mes1
syscall
la $a0,mes2
li $v0,4 #print mes2
syscall
li $v0,5 #minta inputan integer
syscall
addu $t0,$v0,0 #inputan ditampung ke $t0
la $a0,mes3
li $v0,4 #print mes3
syscall
li $v0,5 #minta inputan integer
syscall
addu $t7,$v0,0 #inputan ditampung ke $t7
beq $t0,$t1,A # membandingkan nilai di t0 dan t1, jika t0<> t1 lompat ke A
beq $t0,$t2,B # membandingkan nilai di t0 dan t2, jika t0<> t2 lompat ke B
beq $t0,$t3,C # membandingkan nilai di t0 dan t3, jika t0<> t3 lompat ke C
#j warning
exit: jr $ra
A:
beq $t7,$t4,AX # membandingkan nilai di t7 dan t4, jika t7<> t4 lompat ke AX
beq $t7,$t5,AY # membandingkan nilai di t7 dan t5, jika t7<> t5 lompat ke AY
beq $t7,$t6,AZ # membandingkan nilai di t7 dan t6, jika t7<> t6 lompat ke AZ
#j warning
B:
beq $t7,$t4,BX # membandingkan nilai di t7 dan t4, jika t7<> t4 lompat ke BX
beq $t7,$t5,BY # membandingkan nilai di t7 dan t5, jika t7<> t5 lompat ke BY
beq $t7,$t6,BZ # membandingkan nilai di t7 dan t6, jika t7<> t6 lompat ke BZ
#j warning
C:
beq $t7,$t4,CX # membandingkan nilai di t7 dan t4, jika t7<> t4 lompat ke CX
beq $t7,$t5,CY # membandingkan nilai di t7 dan t5, jika t7<> t5 lompat ke CY
beq $t7,$t6,CZ # membandingkan nilai di t7 dan t6, jika t7<> t6 lompat ke Cz
#j warning
AX:
la $a0,mes4
li $v0,4 #print mes4
syscall
la $a0,mes5
li $v0,4 #print mes5
syscall
j $ra
AY:
la $a0,mes4
li $v0,4 #print mes4
syscall
la $a0,mes5
li $v0,4 #print mes5
syscall
la $a0,mes8
li $v0,4 #print mes8
syscall
la $a0,mes6
li $v0,4 #print mes6
syscall
j $ra
AZ:
la $a0,mes4
li $v0,4 #print mes4
syscall
la $a0,mes5
li $v0,4 #print mes5
syscall
la $a0,mes8
li $v0,4 #print mes8
syscall
la $a0,mes6
li $v0,4 #print mes6
syscall
la $a0,mes10
li $v0,4 #print mes10
syscall
la $a0,mes7
li $v0,4 #print mes7
syscall
j $ra
BX:
la $a0,mes4
li $v0,4 #print mes4
syscall
la $a0,mes6
li $v0,4 #print mes6
syscall
la $a0,mes11
li $v0,4 #print mes11
syscall
la $a0,mes5
li $v0,4 #print mes5
syscall
j $ra
BY:
la $a0,mes4
li $v0,4 #print mes4
syscall
la $a0,mes6
li $v0,4 #print mes6
syscall
la $a0,mes11
li $v0,4 #print mes11
syscall
la $a0,mes5
li $v0,4 #print mes5
syscall
la $a0,mes8
li $v0,4 #print mes8
syscall
la $a0,mes6
li $v0,4 #print mes6
syscall
j $ra
BZ:
la $a0,mes4
li $v0,4 #print mes4
syscall
la $a0,mes6
li $v0,4 #print mes6
syscall
la $a0,mes10
li $v0,4 #print mes10
syscall
la $a0,mes7
li $v0,4 #print mes7
syscall
j $ra
CX:
la $a0,mes4
li $v0,4 #print mes4
syscall
la $a0,mes7
li $v0,4 #print mes7
syscall
la $a0,mes9
li $v0,4 #print mes9
syscall
la $a0,mes6
li $v0,4 #print mes6
syscall
la $a0,mes11
li $v0,4 #print mes11
syscall
la $a0,mes5
li $v0,4 #print mes5
syscall
j $ra
CY:
la $a0,mes4
li $v0,4 #print mes4
syscall
la $a0,mes7
li $v0,4 #print mes7
syscall
la $a0,mes9
li $v0,4 #print mes9
syscall
la $a0,mes6
li $v0,4 #print mes6
syscall
j $ra
CZ:
la $a0,mes4
li $v0,4 #print mes4
syscall
la $a0,mes7
li $v0,4 #print mes7
syscall
j $ra
CONSOLE
yah… begitulah assembly…
susah…
Share This