Assalamu'alaikum
Postingan kali ini akan membahas bagaimana cara menggunakan perintah lompat pada assembly
Postingan kali ini akan membahas bagaimana cara menggunakan perintah lompat pada assembly
Untuk melihat pdfnya bisa klik DISINI
Lompatan yang Mengikuti Compare(CMP)
Perintah CMP yang hanya mempengaruhi flag register, biasanya diikuti dengan perintah lompat yang melihat keadaan pada flags register ini. Jenis perintah lompat yang biasanya mengikuti perintah CMP:
PERINTAH LOMPAT | KONDISI |
JA (Jump If Above) | Lompat jika operand1>operand2 untuk bilangan tidak bertanda |
JG (Jump If Greater) | Lompat jika operand 1>operand 2 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 Operand1 < 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 Equal> | Lompat, jika Operand1 >= Operand2 untuk bilangan bertanda |
Langkah langkah Lompat yang mengikuti CMP
Operasi bilangan tidak bertanda
1. Buka Tasm1.4 yang sudah di instal, maka tampilan yang akan muncul seperti di bawah ini
2. Tuliskan kata edit lalu tekan enter
C:\ TASM>edit (enter)
3. Setelah di tekan enter, maka akan muncul lembar kerja berwarna biru
4.1. Pada layar biru tersebut, ketiklah
.MODEL SMALL -------------------------------------------baris1
.CODE --------------------------------------------baris2
ORG 100H -------------------------------------------baris3
TDATA: JMP PROSES ------------------------------------------baris4
BILA DB 67 ------------------------------------------- baris 5
BILB DB 68 ------------------------------------------- baris 6
KAL0 DB 'BILANGAN A LEBIH KECIL DARI BILANGAN B$'------- baris 7
KAL1 DB 'BILANGAN A SAMA DENGAN BILANGAN B$'---------- baris 8
KAL2 DB 'BILANGAN A LEBIH BESAR DARI BILANGAN B$'------ baris 9
PROSES: -------------------------------------------- baris 10
MOV AL,BILA -------------------------------------------- baris 11
CMP AL,BILB ------------------------------------------- baris 12
JB AKECIL ------------------------------------------- baris 13
JE SAMA -------------------------------------------- baris 14
JA ABESAR -------------------------------------------- baris 15
AKECIL: -------------------------------------------- baris 16
LEA DX,KAL0 -------------------------------------------- baris 17
JMP CETAK -------------------------------------------- baris 18
SAMA: --------------------------------------------- baris 19
LEA DX,KAL1 -------------------------------------------- baris 20
JMP CETAK -------------------------------------------- baris 21
ABESAR: -------------------------------------------- baris 22
LEA DX,KAL2 -------------------------------------------- baris 23
CETAK: -------------------------------------------- baris 24
MOV AH,09 --------------------------------------------- baris 25
INT 21H -------------------------------------------- baris 26
EXIT: INT 20H ------------------------------------------- baris 27
END TDATA -------------------------------------------- baris 28
Baris Ke 1 : Bentuk memori yang digunakan kurang dari 1 segmen atau 64KB
Baris Ke 2 : Menyimpan program yang akan dijalankan
Baris Ke 3 : Kode 100h berarti kita menyediakan 100byte kosong saat menjalankan program untuk mengontrol jalannya program
Baris Ke 4 : Tdata, data yang di pakai, JMP Proses: Lompat Ke Proses
Baris Ke 5 : Masukkan bilangan A, angka 67 bisa di ubah-ubah (kode DB atau ‘Define Byte’ adalah tipe data dengan ukuran 1Byte)
Baris Ke 6 : Masukkan bilangan B, angka 68 bisa di ubah(kode DB atau ‘Define Byte’ adalah tipe data dengan ukuran 1Byte)
Baris Ke 7 :Masukkan Kalimat 0 (karakter ‘$’ dijadikan sebagai tanda akhir dari kalimat yang ingin dicetak, maka pada proses pencetakan karakter di belakang tanda $ tidak akan tercetak pada layar)
Baris Ke 8 :Masukkan Kalimat 1( karakter $ sebagai tanda akhir)
Baris Ke 9 :Masukkan Kalimat 2( karakter $ sebagai tanda akhir)
Baris Ke 10 : Label untuk memulai
Baris Ke 11 : Masukkan Bilangan A pada AL
Baris Ke 12 : Bandingkan AL (BilA) dengan BilB
Baris Ke 13 : Jika BilA < BilB, lompat ke AKECIL
Baris Ke 14 : Jika BilA=BilB, lompat ke SAMA
Baris Ke 15 : Jika BilA>BilB, lompat ke ABESAR
Baris Ke 16 :AKECIL, label
Baris Ke 17: LEA DX, ambil offset kalimat0 (Register DX, digunakan untuk menampung sisa hasil pembagian 16 bit.)
Baris Ke 18 : Lompat ke CETAK
Baris Ke 19 : SAMA, label
Baris Ke 20 :Ambil offset kalimat1
Baris Ke 21 : Lompat ke CETAK
Baris Ke 22 :ABESAR, label
Baris Ke 23 : Ambil offset kalimat 2
Baris Ke 24 :CETAK, label
Baris Ke 25 :Nilai service untuk mencetak kalimat adalah 9
Baris Ke 26 :Cetak Karakter sampai tanda $
Baris Ke 27 : exit, kembali ke DOS
Baris Ke 28 :Mengakhiri Tdata
Untuk Screenshoot saat di buka di notepad bisa di lihat
5. Kemudian klik FILE> SAVE ( pada contoh di atas saya menyimpannya dengan nama JUMP1.ASM
6. Jika sudah di simpan, maka klik File>exit, maka akan tampil layar dosbox hitam, ketiklah
C:\TASM>tasm 2baris (enter)
C:\TASM>tlink/t 2baris (enter)
C:\TASM>2baris (enter)
Sudah Terlihat Kan Hasilnya...
Jika di atas adalah operasi bilangan tidak bertanda, maka saya juga mencoba untuk yang menggunakan operasi bilangan bertanda
Codenya saya screenshoot di notepad
Jika di jalankan, maka hasilnya akan seperti di bawah
OK.. Sampai di sini dulu ya postingan kali ini
Wassalamu'alaikum
Wassalamu'alaikum
0 komentar:
Posting Komentar