Pada tutorial sebelumnya, kita membahas mengenai perintah JMP, nah pada kali ini membahas perintah JMP juga, namun bersyarat, apa itu bersyarat ? maksudnya perintah akan dijalankan jika syaratnya terpenuhi, seperti perintah if pada pascal.
Untuk melakukan perintah tersebut dibutuhkan pembanding atau Compare , pada assembly di buat dengan perintah CMP. Perintah CMP(Compare) digunakan untuk membandingkan dua operand, dengan syntax :
CMP operand1,operand2
Jenis perintah lompat yang mengikuti CMP, terdapat 12 buah, seperti berikut:
Perintah Lompat
|
Kondisi
|
JA ( Jump If Above )
|
Lompat, jika operand1 > operand 2
untuk bilangan tidak bertanda
|
JG ( Jump If Greater )
|
Lompat, jika operand1 > operand2
untuk bilangan bertanda
|
JE ( Jump If Equal )
|
Lompat, jika operand1 = operand2
|
JNE ( Jump If Not Equal )
|
Lompat, jika operand1 tidak sama
Dengan operand2
|
JB ( Jump If Below )
|
Lompat, jika operand1 < operand2 untuk bilangan tidak bertanda
|
JL ( Jump If Less )
|
Lompat, jika operand2 < Operand2 untuk
Bilangan bertanda.
|
JBE ( Jump If Below or Equal )
|
Lompat, jika operand1 <= operand2 untuk bilangan tidak bertanda.
|
JLE ( Jump If Less or Equal )
|
Lompat, jika operand1 <= operand2 untuk bilangan bertanda.
|
JAE ( Jump If Above or Equal )
|
Lompat, jika operand1 >= operand2 untuk bilangan tidak bertanda.
|
JGE ( Jump If Greater or Equal )
|
Lompat, jika operand1 >= operand2
Untuk bilangan bertanda.
|
Kita akan mencetak kalimat dengan perintah CMP dan JMP, langkah yang harus dilakukan adalah sebagai berikut:
Seperti biasa,siapkan terlebih dahulu aplikasi assembler nya, download di sini.
Selanjutnya buka cmd atau DOSBox untuk mengcompile program yang kita buat.
Ketikkan kode berikut pada text editor kalian.
.model small
.codeorg 100h
TData : JMP Proses
BilB DB 60
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,9
INT 21h
EXIT :
int 20h
end TData
Simpan dengan ekstensi *.ASM. Dilanjutkan dengan compile program, ketikkan perintah tasm 'namaprogram' kemudian linking dengan perintah tlink/t 'namaprogram' . Jalankan program
Jika progam dijalankan akan menghasilkan kalimat Bilangan A sama dengan bilangan B. Pada perintah BilA DB 65 dan BilB DB 60 adalah untuk memasukkan nilai dari Bilangan A dan B. Kemudian pada perintah MOV AL,BilA untuk memindahkan nilai BilA ke register AL. Untuk membandingkan nilai BilA dan BilB maka terdapat perintah CMP AL,BilB.
beberapa output yang terjadi adalah.
jika A = B : Bilangan A sama dengan bilangan B
jika A < B : Bilangan A kurang dari bilangan B
jika A > B : Bilangan A lebih dari bilangan B
Bedasarkan pada perintah JB,JE,dan JA. Kita hanya perlu mengubah nilai dari BilA dan BilB saja.
Selanjutnya kita akan membuat sebuah program membandingkan nilai ujian.
Ini adalah kode programnya
.MODEL SMALL
.CODEORG 100h
TData : JMP Proses
UAS DB 86
Kal0 DB 'Lulus $'
Kal1 DB 'Tidak Lulus $'
Kal2 DB 'Cumlaude $'
Proses :
MOV AL,UAS
CMP AL,50
JBE Tlulus
CMP AL,85
JAE Cumlaude
CMP AL,54
JAE Lulus
Tlulus :
LEA DX,Kal1
JMP Cetak
Cumlaude :
LEA DX,Kal2
JMP Cetak
Lulus :
LEA DX,Kal0
JMP Cetak
Cetak :
MOV AH,09
INT 21h
EXIT : INT 20h
END TData
Program tersebut membandingkan nilai UAS dengan masing-masing Compare(CMP).
CMP AL,50
JBE Tlulus ; jika nilai kurang dari atau sama dengan 50
maka output yang dihasilkan adalah Tidak Lulus
CMP AL,85
JAE Cumlaude ; jika nilai lebih dari atau sama dengan 85
maka output adalah cumlaude
CMP AL,54
JAE Lulus ; jika nilai lebih dari atau sama dengan 54
maka output adalah Lulus
Kita jalankan program tersebut. Saya memasukkan nilai 86 .
Maka hasilnya adalah Cumlaude.
Terimakasih.
Wassalamu'alaykum.
1 komentar:
terimakasih atas infonya
Replyisolasi tahan panas
Posting Komentar