DEPARTEMEN PENDIDI KAN NASIONAL POLITEKNI

LAPORAN PRAKTIKUM
OPERASI PORT

DISUSUN OLEH
Nama

: Muhammad Iqbal

NIM

: 1557301091

Kelas

: TI 1.1

Jurusan/Prodi

: Teknologi Informasi & Komputer / T. Informatika

Dosen Pembimbing


: Azhar, S.T, M.T

DEPARTEMEN PENDIDIKAN NASIONAL
POLITEKNIK NEGERI LHOKSEUMAWE
TAHUN AJARAN 2015/2016

TUJUAN
1. Mahasiswa memahami dan mengerti tentang berbagai operasi pengambil
keputusan dalam bahasa mesin

DASAR TEORI
Sama seperti pada pemrograman level tinggi, maka pemrograman bahasa
mesin juga mengenal perintah-perintah untuk penentuan keputusan. Fungsi ini
dilakukan menggunakan instruksi jump (JMP) dan compare (CMP). Jump (JMP)
merupakan perintah untuk mengarahkan eksekusi suatu program ke suatu
alamat tertentu. Instruksi ini bisa membutuhkan suatu syarat maupun tidak
tergantung dari kebutuhan programnya. Sintaknya sebagai berikut :
JMP Tujuan
Perintah JMP yang menggunakan syarat pada umumnya menggunakan instruksi

bit dan logika maupun instruksi pembandingan sebagai awal dari lompatannya.
Contohnya TEST atau CMP yang diikuti dengan JNZ, JNE, ataupun instruksi
lompat bersyarat lainnya.
Perintah perbandingan dengan CMP akan membandingkan 2 buah operan
dengan sintak sebagai berikut :
CMP Operan1, Operan2
Operasinya yaitu operasi pengurangan antara Operan1 dan Operan2. Sama
seperti TEST, maka instruksi ini hanya akan mengubah flag regsteer saja, bukan
operan-operannya. Adapun flag yang bisa berubah antara lain :
Flag
OF = 1
SF = 1
ZF = 1
CF = 1

Operan1
Operan1
Operan1
Operan1


<
<
=
<

Kondisi
Operan2 untuk operasi bilangan bertanda
Operan2 untuk operasi bilangan bertanda
Operan2
Operan2 untuk operasi bilangan tak bertanda

Instruksi CMP biasanya akan diikuti dengan instruksi lompat bersyarat dengan
kondisi berbeda-beda sesuai tabel berikut ini:
Instruksi
JA ( Jump If Above )
JG ( Jump If Greater )
JE ( Jump If Equal )
JNE ( Jump If Not Equal )
JB ( Jump if below )
JL ( Jump if less )

JBE ( Jump if below or equal )
JLE ( Jump if less or equal )
JAE ( Jump if above or equal )
JGE ( Jump if greater or equal )

Kondisi
Operan1 > Operan2 ( bilangan tak bertanda )
Operan1 > Operan2 ( bilangan bertanda )
Operan1 = Operan2
Operan1 Operan2
Operan1 < Operan2 ( bilangan tak bertanda )
Operan1 < Operan2 ( bilangan bertanda )
Operan1 = Operan2 ( bilangan bertanda )

Sedangkan untuk instruksi yang termasuk dalam lompat bersyarat di mana
jarak tujuan harus dalam jangkauan -128 sampai dengan +127 byte dari tempat
melompatnya, selain instruksi pada tabel sebelumnya, juga terdapat instruksi
lainnya seperti dapat dilihat pada tabel berikut :
Instruksi
JC ( Jump if carry )

JCXZ ( Jump if CX is zero )
JNA ( Jump if not above )
JNAE ( Jump if not above or
equal )
JNB ( Jump if not below )
JNBE ( Jump if not below nor
equal )
JNC ( Jump if no carry )
JNG ( Jump if not greater )
JNGE ( Jump if not greater nor
equal )
JNL ( Jump if not less )
JNLE ( Jump if not equal nor
less )
JNO ( Jump if no overfow )
JNP ( Jump if not parity )
JNS ( Jump if no sign )
JNZ ( Jump if not zero )
JO ( Jump on overfow )
JP ( Jump on parity )

JPE ( Jump on parity even )
JPO ( Jump if parity odd )
JS ( Jump on sign )
JZ ( Jump on zero )

Kondisi
CF = 1
CX = 0
Operan1 < Operan2 dengan CF atau ZF = 1
Operan1 < Operan2 dengan CX =1
Operan1 > Operan2 dengan CF = 0
Operan1 > Operan2 dengan CF atau ZF = 0
CF = 0
Operan1 < Operan2 dengan ZF = 1 atau SF
OF
Operan1 = Operan2 dengan SF = OF
Operan1 > Operan2 dengan ZF = 0 dan SF =
OF
OF = 0
Hasil operasi ganjil

SF = 0
Hasil operasi 0
OF = 1
Hasil operasi genap
PF = 1
PF = 0
SF = 1
Hasil operasi = 0

Stack merupakan bagian dari memori yang dipergunakan untuk penyimpanan
data sementara. Instruksinya meliputi PUSH, POP, PUSF, POPF. Pada program
satu segmen maka akan digunakan pasangan register SS:SP sebagai penunjuk
lokasi stack. Stack akan melakukan penyimpanan suatu data dan pengeluaran
kembali datanya dengan sistem LIFO (Last In First Out). Untuk memasukkan
data ke stack maka dipergunakan PUSH, dan untuk mengeluarkan lagi datanya
dipergunakan POP. Urutan PUSH dan POP harus mengikuti sistem LIFO.
PUSHF dan
POPF memiliki fungsi yang sama dengan PUSH dan POP tapi untuk datanya
adalah fag register. Jadi PUSHF sama saja dengan PUSH fag register, dan
POPF sama saja dengan POP fag register.


PROSEDUR PERCOBAAN
Instruksi lompat
1. Tuliskan program attembly berikut menggunakan TASM , lalu lsngksng
menjadi COM :
.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 ; Kembals ke DOS.
End TData
2. Jalankan programnya dan lihat hasilnya. Ubahlah programnya sehingga
ketiga kondisinya dapat terjadi.

Lompat bersyarat
1. Tuliskan program attembly berikut menggunakan TASM , lalu lsngksng menjadi

COM :
.Model Small
.Code
ORG 100h
TData :
JMP Proses
Kal db ' Lucky Luck menembak ',13,10
db 'Lebih cepat dari bayangannya !! ',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
2. Jalankan programnya dan amati yang terjadi. Ubah JE Exit dengan instruksi
lompat lain yang dapat menghasilkan output yang sama.

Stack software
1. Tuliskan program attembly berikut menggunakan TASM , lalu lsngksng
menjadi COM :
.Model Small
.Code
ORG 100h
TData :
JMP Proses

Kal db 'LANG LING LUNG $'
Ganti db 13,10,'$'
Stacks dw ?
Proses:
LEA DX,Kal
MOV Stacks,DX
MOV AH,09
INT 21h
LEA DX,Ganti
INT 21h
MOV DX,Stacks
INT 21h
Exit :
INT 20h
End TData
3. Jalankan programnya dan amati yang terjadi. Mengapa program ini disebut
menggunakan stack software?

Stack hardware
1. Tuliskan program attembly berikut menggunakan TASM , lalu lsngksng
menjadi COM :
.Model Small
.Code
ORG 100h
TData :
JMP Proses
Kal db 'LANG LING LUNG $'
Ganti db 13,10,'$'
Stacks dw ?
Proses:
LEA DX,Kal
PUSH DX
MOV AH,09
INT 21h
LEA DX,Ganti
INT 21h
POP DX
INT 21h
Exit :
INT 20h
End TData
2. Jalankan programnya dan amati yang terjadi. Mengapa program ini disebut
menggunakan stack hardware?

LANGKAH DAN HASIL PERCOBAAN
1. Jalankan notepad, ketikkan program percobaan pertama pada aplikasi notepad
seperti pada gambar dibawah ini :

2. Simpan fle dengan format name : (nama fle).asm , save type as : all fles,
contoh : tugas.asm

3. Jalankan Dosbox, ketikkan “mount d: d:\tasm2 (enter)”, lalu ketikkan “d: (enter)”
4. Ketikkan “tasm tugas.asm(enter)” pada Dosbox untuk mendapatkan fle .obj, cek
pada keluaran program, jika tidak terdapat error dan warning maka hasil tasm
akan memunculkan fle “tugas.obj”

5. Linking fle dengan mengetikkan “tlink/t tugas.obj(enter)” pada Dosbox untuk
mendapatkan fle “tugas.com”

6. Jalankan program dengan mengetikkan perintah “tugas.com (enter)” pada
Dosbox.

7. Tukarkan lah nilai BilA dengan BilB ( BilA = 67, BilB = 66 ). Ikuti kembali langkah


langkah

diatas

dan

jalankan

program

“tugas.com(enter)” seperti gambar di bawah ini:

kembali

dengan

perintah

8. Ubahlah nilai BilA sama dengan BilB. Ikuti kembali langkah – langkah diatas dan
jalankan program kembali dengan perintah “tugas.com(enter)” seperti gambar di
bawah ini:

ANALISA
TData:
JMP Proses
BilA db 67
BilB db 66
( masukkan nilai 67 dalam BilA dan nilai 66 dalam BilB )
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
( salin isi ofset BilA kedalam Register AL )

CMP AL,BilB
( lakukan perbandingan isi dari Register AL dengan ofset BilB )
JB AKecil
( jika isi Register AL lebih kecil dari isi nilai ofset BilB, maka program
akan langsung menuju ke label Akecil )
JE Sama
(jika isi Register AL sama dengan isi nilai ofset BilB, maka program akan
langsung menuju ke label Sama )
JA ABesar
(jika isi Register AL lebih besar dari isi nilai ofset BilB, maka program
akan langsung menuju ke label ABesar )
Akecil:
LEA DX,Kal0
JMP Cetak
( ambil isi ofset kal0 dan salin ke register DX, lalu langsung menuju ke
label Cetak )
Sama:
LEA DX,Kal1
JMP Cetak
( ambil isi ofset kal1 dan salin ke register DX, lalu langsung menuju ke
label Cetak )
ABesar:
LEA DX,Kal2
(ambil isi ofset kal2 dan salin ke register DX )
Cetak:
MOV AH,09
INT 21h
( interup 21h dan servis AH, 09 adalah interup untuk mencetak kalimat )
EXIT:
INT 20h
End Tdata
Dari program di atas, saat di eksekusi maka program akan menghasilkan output
“Bilangan A lebih besar dari bilangan B” karena saat melakukan perbandingan
nilai Register AL yaitu 67 lebih kecil dari nilai ofset BilB yaitu 66, akibatnya
program akan melakukan lompatan ke label Akecil dan mencetak kalimat dari
ofset kal2.

Untuk membuat program melakukan lompatan ke label sama, maka saat
melakukan perbandingan nilai ofset BilA dan BilB haruslah sama besarnya.
Untuk membuat program melakukan lompatan ke label AKecil, maka maka saat
melakukan perbandingan nilai ofset BilA harus lebih kecil dari nilai ofset BilB.

Jalankan notepad, ketikkan program percobaan kedua pada aplikasi notepad
seperti pada gambar dibawah ini :

Simpan fle dengan format name : (nama fle).asm , save type as : all fles,
contoh : tugas.asm

Jalankan Dosbox, ketikkan “mount d: d:\tasm2 (enter)”, lalu ketikkan “d: (enter)”
Ketikkan “tasm tugas.asm(enter)” pada Dosbox untuk mendapatkan fle .obj, cek
pada keluaran program, jika tidak terdapat error dan warning maka hasil tasm
akan memunculkan fle “tugas.obj”

Linking fle dengan mengetikkan “tlink/t tugas.obj(enter)” pada Dosbox untuk
mendapatkan

fle

“tugas.com”

Jalankan program dengan mengetikkan perintah “tugas.com (enter)” pada
Dosbox.

ANALISA :

Jalankan notepad, ketikkan program percobaan ketiga pada aplikasi
notepad seperti pada gambar dibawah ini :

Simpan fle dengan format name : (nama fle).asm , save type as : all fles,
contoh : tugas.asm

Jalankan Dosbox, ketikkan “mount d: d:\tasm2 (enter)”, lalu ketikkan “d:
(enter)”
Ketikkan “tasm tugas.asm(enter)” pada Dosbox untuk mendapatkan
fle .obj, cek pada keluaran program, jika tidak terdapat error dan warning
maka hasil tasm akan memunculkan fle “tugas.obj”

Linking fle dengan mengetikkan “tlink/t tugas.obj(enter)” pada Dosbox
untuk mendapatkan fle “tugas.com”

Jalankan program dengan mengetikkan perintah “tugas.com (enter)” pada
Dosbox.