Upload
abdan-sakura
View
15
Download
0
Embed Size (px)
Citation preview
PERINTAH – PERINTAH PERCABANGAN(Laporan Praktikum Bahasa Assembler)
Oleh:
Catur A. Novriadi 0517041025
LABORATORIUM FISIKA KOMPUTASIFAKULTAS MATEMATIKA DAN ILMU PENGETAHUAN ALAM
UNIVERSITAS LAMPUNG2008
I. PENDAHULUAN
A. Latar Belakang
Sebuah program tidaklah selalu dilaksanakan secara beruntun dari awal
hingga akhir program, tetapi kadang kala terjadi suatu loncatan atau percabangan
ke bagian lain dari program tersebut, atau dapat pula mengerjakan program yang
lain. Dalam bahasa assembler hal ini dimungkinkan dengan adanya perintah
loncatan (jump) yang menurut jenisna dapat dibedakan menjadi percabangan
bersyarat dan percabangan tak bersyarat.
Percabangan tak bersyarat adalah percabangan ke suatu bagian program
tanpa dipengaruhi adanya status flag. Percabangan jenis ini dilakukan dengan
perintah JMP.
B. Tujuan
Tujuan dari dilakukannya praktikum Mode pengalamatan Perintah –
perintah Percabangan ini adalah :
1. Mengetahui perbedaan dari perintah percabangan bersyarat dan
percabangan tak bersyarat .
2. Dapat membuat program sederhana dari perintah – perintah percabangan.
3. Mengetahui dan mengerti hasil compiler dari program – program yang
telah di buat.
II. TINJAUAN PUSTAKA
Perintah percabangan secara umum terbagi menjadi 2 yaitu percabangan tak
bersyarat dan percabangan bersyarat, umumnya begitu ditemui perintah bercabang
maka instruksi program akan melompat ke lokasi yang dituju oleh perintah
percabangan. Syntax yang umum dipakai percabangan tak bersyarat misalnya
JMP (JUMP) Tujuan.
Sedangkan pada perintah percabangan bersyarat, instruksi program akan
melompat ke lokasi tertentu yang dituju jika syarat – syarat tertentu telah
dipenuhi. Syarat – syarat tersebut merupakan kondisi hasil instruksi program
sebelumnya yang dapat diketahui melalui register flag. Perintah CMP (Compare,
membandingkan) merupakan instruksi yang paling banyak digunakan sebelum
percabangan dilakukan. Karena instruksi CMP dapat mempengaruhi kondisi (isi)
register flag, yaitu OF, SF, ZF dan CF.
1. Perintah – perintah percabangan bersyarat
\
Tabel 1. Perintah – perintah percabangan bersyarat
2. Percabangan bersyarat yang mengikuti perintah CMP
Beberapa perintah melompat yang mengikuti perintah CMP adalah :
JA JG JE JNE JB JL JBE JLE JAE JGE
(Arif Surtono, 2007)
Terdapat 4 buah format yang dapat dipergunakan, yaitu :
1. JMP DADDR : [PC] DADDR1
[CS] DADDR2
Contoh : JMP 2000:0250; kode mesin : EA 5002 0020
Percabangan ini berupa percabangan antar segment dengan alamat tujuan yang
ditunjukkan oleh DADDR. Byte 2 dan 3 merupakan offset sedang byte 4 dan 5
merupakan segment yang dituju.
2. JMP DISP ; [PC] [PC]+DISP
Contoh : JMP 010B ; kode mesin EB 09
JMP 0194 ; kode mesin E9 8300
Loncatan ke perintah berikutnys dilakukan dengan menambahkan isi program
counter dengan displacement sehingga PC mendapatkan lokasi yang dituju
DISP dapat berupa 8 bit atau 16 bit. Untuk DISP 8 bit, displacement akan
mmengalami perluasan tanda dan penjumlahan dengan PC harus ditambah
dengan 2.
3. JMP MEM ; [PC] [MEM]
[CS] [MEM+2]
Contoh : JMP FAR [BX+SI+7889], kode mesin FF A8 8978
Jenis ini akan memindahkan isi memory yang akan ditunjuk, ke PC dan
selanjutnya memindahkan word memory berikutnya ke register CS, sehingga
akhirnya membentuk alamat perintah yang akan dituju.
4. JMP MEM/REG ; [PC] [MEM/REG]
Contoh : JMP [DI] ; kode mesin FF 25
JMP [BX] ; kode mesin FF 27
JMP BX ; kode mesin FF E3
JMP [BX+SI] ; kode mesin FF 20
Percabangan jenis ini akan mengisikan alamat memory yang ditunjuk ke dalam
PC untuk bentuk JMP MEM, sebagai contoh : JMP [BX] dan memberikan isi
register PC untuk bentuk JMP REG, sebagai contoh : JMP BX.
(Andri Kristanto, 2003)
III. HASIL DAN PEMBAHASAN
A. Hasil Program
1. Percabangan bersyarat yang mengikuti perintah CMP
PROGRAM
.MODEL SMALL
.CODE
ORG 100h
TData : JMP Proses
BilA DB 67
BilB DB 66
kal0 DB 'Bilangan A lebih kecil dari bilangan B $'
kal1 DB 'Bilangan A sama dengan bilangan B $'
kal2 DB 'Bilangan A lebih besar dari bilangan B $'
Proses :
MOV AL, BilA
CMP AL, BilB
JB Akecil
JE Sama
JA Abesar
Akecil :
LEA DX, kal0
JMP Cetak
Sama :
LEA DX, kal1
JMP Cetak
ABesar :
LEA DX, kal2
Cetak :
MOV AH, 09
INT 21h
EXIT : INT 20h
END Tdata
HASILNYA
C:\TASM>TASM cmpj.asm
Turbo Assembler Version 2.0 Copyright (c) 1988, 1990 Borland International
Assembling file: cmpj.asm
Error messages: None
Warning messages: None
Passes: 1
Remaining memory: 476k
C:\TASM>tlink/t cmpj
Turbo Link Version 3.0 Copyright (c) 1987, 1990 Borland International
C:\TASM>cmpj
Bilangan A lebih besar dari bilangan B
2. Percabangan Bersyarat yang lain
PROGRAM
.MODEL SMALL
.CODE
ORG 100h
TData : JMP Proses
kal DB ' Belajar Bahasa Assembler ', 13, 10
DB ' Memang Asyiiikkk!! ', 7,7,'*'
Proses :
XOR BX, BX
MOV AH, 02h
Ulang :
CMP Kal[BX], '*'
JE Exit
MOV DL, Kal[BX]
INT 21h
INC BX
JMP Ulang
Exit : INT 20h
END TData
HASILNYA
C:\TASM>tasm jmpl.asm
Turbo Assembler Version 2.0 Copyright (c) 1988, 1990 Borland International
Assembling file: jmpl.asm
Error messages: None
Warning messages: None
Passes: 1
Remaining memory: 476k
C:\TASM>tlink/t jmpl
Turbo Link Version 3.0 Copyright (c) 1987, 1990 Borland International
C:\TASM>jmpl
Belajar Bahasa Assembler
Memang Asyiiikkk!!
B. Pembahasan Program
Dari praktikum yang telah dilakukan yaitu perintah – perintah
percabangan yang terbagi menjadi dua yaitu perintah percabangan bersyarat dan
perintah percabangan tak bersyarat yang masing – masing memiliki berbagai
macam perintah – perintah tertentu.
Pada program yang pertama yaitu percabangan bersyarat yang mengikuti
perintah CMP, pada program ini Kita akan mendemokan perintah lompat yang
mengikuti perintah CMP disini terdapat 3 buah kalimat, kalimat yang pertama
Bilangan A lebih kecil dari bilangan B, yang kedua Bilangan A sama dengan
bilangan B, dan yang ketiga Bilangan A lebih besar dari bilangan B. Program ini
memakai beberapa perintah lompatan seperti JB, JA, JE dan JMP. Hasil compiler
dari program ini akan menampilkan kalimat Bilangan A lebih besar dari bilangan
B yang berarti perintah bersyarat akan langsung melompat ke kalimat ketiga tidak
memunculkan kalimat pertama maupun kalimat yang kedua.
Pada program yang kedua Kita masih menggunakan program percabangan
bersyarat yang lain disini Kita juga akan mencetak kalimat pada program ini Kita
hanya menggunakan dua buah perintah lompatan saja yaitu perintah JE dan JMP
disini juga Kita tambahkan perintah XOR. JMP yang digunakan disini
menggantikan peran dari perintah Loop ulang. Hasil compiler dari program ini
akan menampilkan kalimat yang posisinya telah ditentukan dan akan ditambahkan
sedikit efek bunyi beep yaitu fungsi dari angka 7 tersebut. Program kedua ini lebih
sederhana dibandingkan dengan program pertama yang memiliki banyak perintah
khususnya perintah lompatan bersyarat yang ada.