Senin, 20 Oktober 2014

Menggunakan Perintah Lompat (JMP)

Assalamu'alaikum
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
 Pada tabel, dapat kita lihat bahwa terdapat dua operasi yang berbeda, yaitu operasi bilangan bertanda dan tidak bertanda. Bilangan bertanda adalah bilangan yang akan membedakan bilangan negatif dan positif (Misalnya 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.

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

0 komentar:

Posting Komentar