Assalamu’alaikum Wr.wb
Sedikit penjelasan
terlebih dahulu :)
BANDINGKAN DAN LOMPAT
LOMPAT
TANPA SYARAT
Perintah JMP(Jump),perintah ini digunakan untuk melompati daerah
data program. Perintah JMP digunakan dengan syntax:
JMP
Tujuan
Perintah JMP ini dikategorikan sebagai Unconditional Jump, karena
perintah ini tidak menyeleksi keadaan apapun untuk melakukan suatu lompatan.
Setiap ditemui perintah ini maka lompatan pasti dilakukan.
Selain dari perintah jump tanpa syarat, masih banyak perintah Jump
yang menyeleksi suatu keadaan tertentu sebelum dilakukan lompatan. Perintah
jump dengan penyeleksian kondisi terlebih dahulu biasanya diikuti dengan
perintah untuk melihat kondisi, seperti membandingkan dengan perintah
"CMP"(Compare).
MEMBANDINGKAN
DENGAN CMP
Perintah CMP(Compare) digunakan untuk membandingkan 2 buah
operand, dengan syntax:
CMP
Operand1,Operand2
CMP akan membandingkan operand1 dengan operand2 dengan cara
mengurangkan operand1 dengan operand2. CMP tidak mempengaruhi nilai Operand1
dan Operand2, perintah CMP hanya akan mempengaruhi flags register sebagai hasil
perbandingan. Adapun flag-flag yang terpengaruh oleh perintah CMP ini adalah:
- OF
akan 1, jika operand1 lebih kecil dari operand2 pada operasi
bilangan bertanda.
- SF
akan 1, bila operand1 lebih kecil dari operand2, pada operasi
bilangan bertanda.
- ZF
akan 1, jika operand1 nilainya sama dengan operand2.
- CF
akan 1, jika operand1 lebih kecil dari operand2 pada operasi
bilangan tidak bertanda.
Perlu
anda ingat bahwa CMP tidak dapat membandingkan antar 2 lokasi memory.
13.3.
LOMPAT YANG MENGIKUTI CMP
Perintah
CMP yang hanya hanya mempengaruhi flag register, biasanya diikuti dengan
perintah lompat yang melihat keadaan pada flags register ini. Jenis perintah
lompat yang biasanya mengikuti perintah CMP, terdapat 12 buah seperti pada
gambar 13.1.
Pada tabel
13.1. terdapat dua operasi yang berbeda, yaitu operasi bilangan bertanda dan
tidak bertanda. Bilangan bertanda adalah bilangan yang akan membedakan bilangan
negatif dan positif (Mis. 37 dan -37). Sedangkan bilangan tidak bertanda adalah
bilangan yang tidak akan membedakan positif dan negatif, jadi angka -1 untuk
operasi bilangan bertanda akan dianggap FFh pada bilangan tidak bertanda.
-----------------------------+----------------------------------
Perintah Lompat | Kondisi
-----------------------------+----------------------------------
JA | Lompat, jika Operand1 > Operand2
| untuk bilangan tidak bertanda
JG | Lompat, jika Operand1 > Operand2
67
| untuk bilangan bertanda
JE | Lompat, jika Operand1 = Operand2
JNE | Lompat, jika Operand1 tidak sama
| dengan Operand2
JB | Lompat, jika Operand1 < Operand2
| untuk bilangan tidak bertanda
JL | Lompat, jika Operand1 < Operand2
| untuk bilangan bertanda
JBE | Lompat, jika operand1 <= Operand2
| untuk bilangan tidak bertanda
JLE | Lompat, jika Operand1 <= Operand2
| untuk bilangan bertanda
JAE | Lompat, jika Operand1 >= Operand2
| untuk bilangan tidak bertanda
JGE = Operand2
Equal> | untuk bilangan bertanda
-----------------------------+----------------------------------
;
Program : CMPJ.ASM ;
;
Author : S’to ;
;
Fungsi : Mendemokan perintah lompat ;
;
yang mengikuti perintah CMP ;
; ;
;\=========================================/;
.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 ;
Masukkan bilangan A pada AL
CMP AL,BilB ; Bandingkan AL(BilA) dengan Bilangan B
JB AKecil ;
Jika BilA < BilB, lompat ke AKecil
JE Sama ;
Jika BilA = BilB, lompat ke Sama
JA ABesar
; Jika BilA > BilB, lompat ke ABesar
Akecil :
LEA
DX,Kal0
; Ambil offset Kal0
JMP
Cetak ;
Lompat ke cetak
Sama:
LEA
DX,Kal1
; Ambil offset Kal1
JMP
Cetak ;
Lompat ke cetak
ABesar :
LEA
DX,Kal2 ; Ambil offset Kal2
Cetak:
MOV
AH,09 ; Servis
untuk mencetak kalimat
INT 21h
; Cetak
kalimat !!
EXIT:
INT 20h ; Kembali ke
DOS.
END
TData
Bila
program 13.1. dijalankan, maka akan tampak pada layar:
Bilangan
A lebih besar dari bilangan B
Anda bisa
mengganti nilai pada variabel BilA dan BilB untuk melihat hasil yang akan
ditampilkan pada layar.
Baiklah langsung saja kita buat program di atas dengan
langkah-langkah berikut ini :
1.panggil atau buka
M-DOS ( command prompt ) dari menu start pada dekstop>pilih command
prompt>lalu klik dua kali . atau jika
belum punya Program Software asembly nya
bisa sobat download terlebih dahulu disini downloadProgram Software assembly.
2.lalu akan muncul
kotak dialog dari command prompt yang kita panggil tadi
3.buka lembar kerja
pada command prompt dengan cara
mengetikan edit pada kotak dialog cmd yg dipanggil tadi , lalu enter
4.maka akan muncul
lembar kerja seperti ini
5.ketikkan program pada
lembar kerja edit seperti pada gambar dibawah ini atau modul diatas.
6.simpan program dengan
memilih menu file>pilih save/save as . kemudian kasih nama . disini saya
menyimpan nya dengan nama lompat.asm ( ingat program assembler yang disimpan
harus berekstensi .asm )
7.panggil program yang kita
buat tadi dengan cara pilih menu file>exit , atau dengan memanggil cmd dari
menu start. lalu ketik dan ikuti seperti
pada gambar 1.1
GAMBAR 1.1
Penjelasan gambar 1.1
- Ø panggil
Comand Promptnya lalu Ketik D: ( atau jika sobat menyimpan program nya di disk C maka Ketik C: ) , lalu enter
- Ø ketik
Cd Assembly ( atau folder tempat
menyimpan program assembly) , Lalu Enter
- Ø ketik
Cd Asm ( atau sub folder tempat menyimpan program assembly) , Lalu Enter
- Ø ketik
Tasm lompat ( atau nama file yang sobat save tadi) , Lalu Enter
- Ø ketik
Tlink –T lompat, Lalu Enter
- Ø kemudian
ketik nama file lompat , Tekan Enter maka akan mucul bilangan A lebih kecil
dari bilangan B
bagaimana mencetak
karakter bilangan A sama dengan bilangan B?
pada lembar edit
program pada bilA db dan bilB db di masukan angka 8. lihat seperti gambar di
bawah ini .
Lalu ikuti langkah
seperti pada membuka program di atas , lalu hasil akhir ketika program di
panggil seperti pada gambar berikut.
bagaimana mencetak karakter
bilangan A lebih besar dari bilangan B?
pada lembar edit
program pada bilA db di masukan angka lebih besar daripada angka pada bilb
missal 9. lihat seperti gambar di bawah ini
Lalu ikuti langkah
seperti pada membuka program di atas , lalu hasil akhir ketika program di
panggil seperti pada gambar berikut.
Program mencetak karakter bil A
lebih besar dari B bersyarat dengan jmp dan perbandingan atau cmp pada assembler berhasil dieksekusi :)
Semoga bermanfaat J jangan lupa
untuk memberikan + pada materi ini dan blognya :)
Jazzakumullah khoiron
katsiron , nun walqolami wama yasturun , Wassalamua’laikum wr.wb :)
Belum ada tanggapan untuk "PROGRAM MENCETAK KARAKTER BIL A > B JMP BERSYARAT DENGAN CMP PADA ASSEMBLY"
Post a Comment