Anda di halaman 1dari 7

Handout Praktikum AOK

Topik 2 “Percabangan”

Tujuan :
• Agar mahasiswa dapat mengerti konsep percabangan pada ASC, serta mampu
menerapkannya pada praktikum.
• Agar mahasiswa dapat mengenal tentang proteksi-proteksi dengan menggunakan instruksi
percabangan.
• Agar mahasiswa dapat mengembangkan teori ke dalam praktikum dan tugas rancang.

Peralatan :
• 1 Set Komputer
• ASCASM
• ASCML

Dasar teori :
Secara umum, instruksi-instruksi yang ada pada ASC dikelompokkan menjadi 3 bagian
besar, yaitu :
• MRI (Memory Reference Instruction)
• RRI (Register Reference Instruction)
• IOI (Input Output Instruction)

Daftar instruksi pada ASC : LDA, STA, INP, INC, CMI, CMA, CME, CLA, CLE, ADD,
AND, CIL, CIR, CTR, CTL, SNA, SPA, SZA, SZE, ION, IOF, BUN, BSA, ORG, OUT, HLT.

Tiap instruksi akan dijelaskan lebih detail pada topik-topik selanjutnya. Untuk topik ini, kita
hanya perlu mengenal beberapa perintah dasar saja, seperti :
• ORG XXX : untuk memberikan alamat awal XXX
• HLT : menghentikan program secara paksa
• LDA VAR : untuk mengcopy nilai dari variabel VAR ke ACC
• STA VAR : untuk mengcopy nilai dari ACC ke variabel VAR
• ADD VAR : untuk menambah nilai yang sudah ada di ACC dengan nilai variable VAR,
lalu disimpan di ACC lagi atau ACC = ACC + VAR
• AND VAR : untuk melakukan operasi AND antara nilai yang sudah ada di ACC dengan
nilai variabel VAR, lalu disimpan di ACC lagi.
• INP : meminta sebuah inputan dari keyboard, lalu nilai ASCIInya akan disimpan
pada ACC. Misalkan kita memasukkan inputan ‘A’, maka ACC akan terisi
nilai 41h atau 65 desimal. (coba cek di tabel ASCII)
• OUT : menampilkan karakter yang nilai ASCIInya adalah nilai ACC saat itu ke
layar monitor. Misalkan pada ACC terdapat nilai 61h atau 97 desimal, maka
karakter yang ditampilkan adalah ‘a’.
• INC : mengincrement ACC. Dengan kata lain ACC = ACC + 1
• CMA : nilai ACC akan di 1’s complement, lalu disimpan di ACC lagi.
• CMI : nilai ACC akan di 2’s complement, lalu disimpan di ACC lagi.
• CLA : clear accumulator. Mereset nilai ACC menjadi 0h.
• CLE : clear Extended Bit. Mereset bit E menjadi 0.
• CIL : E dan ACC digeser secara circular ke kiri sebanyak satu kali
• CIR : E dan ACC digeser secara circular ke kanan sebanyak satu kali
• CTL : sama dengan 2x CIL
• CTR : sama dengan 2x CIR

Instruksi-instruksi percabangan dengan perbandingan (test case) pada bahasa ASC adalah
sebagai berikut :
• SNA : skip if negative ACC
Jika nilai ACC < 0 => skip
Jika nilai ACC ≥ 0 => run normally
• SPA : skip if positive ACC
Jika nilai ACC > 0 => skip
Jika nilai ACC ≤ 0 => run normally
• SPN : skip if positive or negative ACC
Jika nilai ACC ≠ 0 => skip
Jika nilai ACC = 0 => run normally
• SZA : skip if zero ACC
Jika nilai ACC = 0 => skip
Jika nilai ACC ≠ 0 => run normally
• SZE : skip if zero E bit
Jika nilai E = 0 => skip
Jika nilai E = 1 => run normally

Flowchart instruksi SNA : Flowchart instruksi SPA :

SNA SPA
False case yes False case yes

True case True case

dst dst

Flowchart instruksi SPN : Flowchart instruksi SZA :


SPN SZA
False case yes False case yes

True case True case

dst dst

Sebelum kita masuk contoh coding untuk percabangan, kita pelajari terlebih dahulu instruksi
“CMI”. Instruksi ini diperlukan untuk mempermudah proteksi percabangan.
ORG 100
INP ->meminta inputan (misal kita menekan “4” ASCII = 52)
CMI ->2’s complement dari ACC = -52
LDA A ->nilai ACC = 65
CMI ->2’s complement dari ACC = -65
HLT
A, DEC 65

Karena di ASCASM tidak memiliki instruksi “pengurangan” maka bisa kita gunakan cara
var1 + (- var2) = var1-var2. Selain CMI kita juga perlu mempelajari instruksi “BUN”. Instruksi
ini digunakan untuk loncat ke label yang ditunjuk.

ORG 100
AWL, BUN MEN ->loncat ke label “MEN”
LDA A ->dilewati
OUT ->dilewati
LDA B ->dilewati
OUT ->dilewati
LDA C ->dilewati
OUT ->dilewati
LDA D ->dilewati
OUT ->dilewati
MEN, LDA E >>menampilkan huruf “E” ke layar
OUT
HLT
A, DEC 65
B, DEC 66
C, DEC 67
D, DEC 68
E, DEC 69

Berikut adalah sebuah coding yang dapat memproteksi menu

ORG 100
MEN, INP
STA IN
ADD -49
SPN
BUN ME1
LDA IN
ADD -50
SPN
BUN ME2
BUN MEN
ME1, LDA S
OUT
LDA A
OUT
LDA T
OUT
LDA U
OUT
BUN SEL
ME2, LDA D
OUT
LDA U
OUT
LDA A
OUT
BUN SEL
SEL, HLT
IN, DEC 0
-49, DEC -49
-50, DEC -50
1, DEC 49
2, DEC 50
S, DEC 83
A, DEC 65
T, DEC 84
U, DEC 85
D, DEC 68

Penjelasan coding
Di dalam ASCASM proteksi hanya berupa instruksi pembanding ACC. Untuk coding
diatas kita menggunakan SPN yaitu Skip if Positif or Negatif ACC. Atau apabila nilai ACC tidak
sama dengan 0, maka akan skip 1 baris.
MEN, INP ->meminta inputan (dimisalkan kita menekan “2”)
STA IN ->nilai var “IN” adalah ASCII dari “2” = 50
ADD -49 ->nilai ACC ditambah var “-49” >> 50-49 =1
SPN ->nilai ACC =1 -> skip 1 baris (loncat ke baris LDA IN)
BUN ME1
LDA IN ->nilai ACC =50
ADD -50 ->nilai ACC =50-50 =0
SPN ->nilai ACC =0 sehingga tidak skip
BUN ME2 ->loncat ke label “ME2” (mencetak tulisan “DUA”)
BUN MEN

Misal kita memberi inputan berupa angka “2” dari keyboard.

Misal kita memberi inputan berupa angka “A” dari keyboard.


MEN, INP ->meminta inputan (dimisalkan kita menekan “A”)
STA IN ->nilai var “IN” adalah ASCII dari “A” = 65
ADD -49 ->nilai ACC ditambah var “-49” >> 65-49 =16
SPN ->nilai ACC =16 -> skip 1 baris (loncat ke baris LDA IN)
BUN ME1
LDA IN ->nilai ACC =65
ADD -50 ->nilai ACC =65-50 =15
SPN ->nilai ACC =15 -> skip 1 baris (loncat ke baris BUN MEN)
BUN ME2
BUN MEN ->loncat ke label “MEN” (meminta inputan lagi)

Coding ini adalah contoh penggunaan instruksi “SPN” untuk aplikasi proteksi menu.
Sehingga hanya dapat menekan angka 1 atau 2 saja.
Instruksi percabangan lainnya seperti SZA, SPA, dan SNA memiliki pola yang mirip.
Sekali lagi pecabangan ini hanya membandingkan nilai “ACC” saja.

Tugas Rumah
Buatlah sebuah program yang meminta 1 buah inputan angka antara 1 – 9 yang kemudian
hasilnya akan menampilkan bulan ke X sesuai dengan inputan X yang diberikan.
Ingat gunakan proteksi inputan seperti contoh proteksi menu.

Gambar 1. Contoh Program yang menampilkan Bulan ke X dari inputan X

Gambar 2. Contoh Program jika inputan yang diberikan tidak sesuai perintah

Tugas dikumpulkan paling lambat bersamaan dengan soal praktikum dimulai, di kirim ke
email
Dengan Format nama file yang dikirim Tugas2_[nim].asm
Disarankan untuk PRINT coding dan dibawa saat praktikum, karena akan membantu.
Konfirmasi ke asisten setelah mengirim tugas

NB: Tugas Boleh dikerjakan Boleh juga tidak


Tugas sebagai sarana untuk menambah nilai
Kerjakan tugas sebaik mungkin, sangat membantu saat praktikum
Konsekuensi ditanggung oleh masing – masing Praktikan

Anda mungkin juga menyukai