Selasa, 13 November 2012

Pemrograman Bahasa Rakitan : Materi 5

Kayanya hari ini ane harus kerja keras dech. Gara" nunggak satu tugas jadi harus posting dua kali. :( . Tapi nggak apa-apa dech, yang penting ikhlas :)


Yang mau bahas kali ini tentang Lompatan atau istilah kerennya Jump. Lompatan atau Jump berfungsi sebagai pengecualian terhadap urutan bahasa rakitan. Khan kita hanya tahu kalo bahasa rakitan secara struktural akan mengurutkan membaca instruksi yang ada di bawahnya. Lho koq pengecualian? Ya karena nggak selamanya kita memproses sebuah data secara urut. Terkadang kita menginginkan instruksi yang bakal  dilakukan selanjutnya bukan instruksi yang berada di bawahnya, atau mungkin kita menginginkan suatu kondisi tertentu dalam menjalankan sebuah instruksi.


Nah, di situlah Jump digunakan. Secara umum Jump terdiri dari 2 lompatan yaitu
Unconditional Jump (Lompatan Tak Bersyarat) dan Conditional Jump (Lompatan Bersyarat).

Unconditional Jump 

JMP
Perintah ini termasuk ke dalam Unconditional Jump, karena perintah ini akan melakukan lompatan tanpa adanya syarat atau kondisi-kondisi tertentu

Contoh :


.model small .code org 100h mulai:mov ah,02h mov dl,70 mov cx,15 ulang:int 21h inc dl jmp exitloop ulangexit : int 20h end mulai


Kode di atas akan menampilkan output F karena kode tersebut langsung melompat ke label exit sebelum melakukan looping.

Conditional Jump

CMP
Perintah ini akan melakukan lompatan jika syarat perbandingannya terpenuhi. CMP akan membandingkan operand1 dan operand2 dan tidak mempengaruhi keduanya.


mov ah,02h
mov dl,65
mov cx,15
ulang:
CMP dl,73
JE cetak
inc dl
loop ulang
cetak : int 21h
Kode diatas menampilkan output I, karena pada saat menemukan CMP dl,73 akan dibandingkan isi dl dengan 73. kemudian saat menemukan perintah JE cetak maka akanlangsung lompat ke label cetak karena pada saat dl berisi 73 maka akan menghasilkan kondisi benar (JE=Jump if Equal).

Berikut ini beberapa Conditional Jump yang sering digunakan



O iya, di dalam blog dosen ane. Ane dikasih tugas buat nampilin output "FGHIJK" dengan pemberian nilai awal dl=65 dan cx=15. Wah, agak bingung juga ya gan. Kalo angka 65 khan outputnya A dan cx-nya 15. Kalo yang kita tahu hasil outputnya adalah "ABCDEFGHIJKLMNOP". Tenang aja gan. Ane udah nemuin kode yang pas sesuai dengan syaratnya. Dan ini dia kodenya


.model small.codeorg 100hmulai :  mov ah,02h  mov dl,65  mov cx,15  ulang:  CMP dl,70  JE cetak   inc dl  loop ulang  cetak : int 21h  mov cx,5   putar:  inc dl  int 21h  loop putar  int 20hend mulai
Wah panjang banget ya gan. Tapi hasil outputnya jadi koq. Kaya gini nih.



Phhiieww... Akhirnya selesai juga materi yang satu ini. Semoga agan bisa paham dengan sepaham-pahamnya. Sekian dulu postingan ane kali ini. Semoga bermanfaat. Oke, seperti biasa, tunggu postingan ane selanjutnya

Tidak ada komentar:

Posting Komentar