12
PERINTAH – PERINTAH PERCABANGAN (Laporan Praktikum Bahasa Assembler) Oleh: Catur A. Novriadi 0517041025

Andry Assembler 5

Embed Size (px)

Citation preview

Page 1: Andry Assembler 5

PERINTAH – PERINTAH PERCABANGAN(Laporan Praktikum Bahasa Assembler)

Oleh:

Catur A. Novriadi 0517041025

LABORATORIUM FISIKA KOMPUTASIFAKULTAS MATEMATIKA DAN ILMU PENGETAHUAN ALAM

UNIVERSITAS LAMPUNG2008

Page 2: Andry Assembler 5

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.

Page 3: Andry Assembler 5

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

Page 4: Andry Assembler 5

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

Page 5: Andry Assembler 5

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)

Page 6: Andry Assembler 5

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

Page 7: Andry Assembler 5

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

Page 8: Andry Assembler 5

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

Page 9: Andry Assembler 5

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.