PROGRAM MENCETAK KARAKTER BIL A > B JMP BERSYARAT DENGAN CMP PADA ASSEMBLY



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 :)






No comments:

Post a Comment