Tags : Mikroprosesor8051FPGAProgrammableAlterarobotchipVHDLPemrogramanMCS-51PLCTeknologiMikrokontroler
Home » Mikrokontroler » Perintah Pencabangan Program (LJMP – JB)

Perintah Pencabangan Program (LJMP – JB)

Oleh , 21 Juli 2009.

LJMP (Long Jump)

Long Jump memungkinkan lompatan tak bersyarat kemana saja dalam lingkup ruang memori program 64K. LCALL adalah perintah 3-byte. Alamat tujuan 16-bit ditentukan secara langsung dalam perintah tersebut. Alamat tujuan ini di-load ke dalam konter program oleh perintah LJMP. Sebagai contoh, untuk melompat ke lokasi 0200H, kita dapat menulis “LJMP 0200H”

LCALL (Long Call)

LCALL memungkinkan panggilan ke subrutin yang berlokasi dimanapun dalam memori program 64K. Operasi LCALL berjalan seperti berikut:

(i)      Menambahkan ke dalam konter program sebanyak 3, karena perintahnya adalah perintah 3-byte.

(ii)    Menambahkan penunjuk stack sebanyak 1.

(iii)   Menyimpan byte yang lebih rendah dari konter program ke dalam stack.

(iv)  Menambahkan penunjuk stack.

(v)    Menyimpan byte yang lebih tinggi dari program ke dalam stack.

(vi)  Me-load konter program dengan alamat tujuan 16-bit.

Sebagai contoh, jika penunjuk stack dimulai pada 54H, maka perintah LCALL 0400H di lokasi 0100H dalam memori program akan menghasilkan nilai SP, PC dan stack, seperti yang ditunjukkan dalam gambar berikut:

Perintah JMP Tidak Langsung Tak Bersyarat JMP @A+DPTR

JMP adalah perintah Jump tidak langsung yang menggunakan akumulator dan DPTR. JMP @A+DPTR, perintah menambahkan konten 80bit tak bertanda dari akumulator dengan penunjuk data 16 bit ‘DPTR’ untuk memperoleh alamat tujuan 16-bit.. Alamat ini lalu di-load ke dalam PC. Perintah ini menggunakan mode pengalamatan register tidak langsung. Operasi ini digambarkan dalam gambar berikut:

fig4-11

Sebagai contoh, lihatlah perintah dibawah:

fig4-11b

Kendali program akan bercabang ke (0200H + 04H = 0204H). KOnten dari A dan DPTR tidak akan terpengaruh, dan dalam hal ini, A akan memiliki 04H dan DPTR akan memiliki 0200H di dalamnya.

Perintah Jump Bersyarat

Terpisah dari perintah tak bersyarat yang didiskusikan  diatas, ada beberapa perintah pencabangan bersyarat, yaitu JNB, JNC, JNZ, JZ, JB, JBC, JC, DJNZ and CJNE. Perintah-perintah ini menguji satu dari syarat yang ditentukan dalam perintah tersebut. Jika syaratnya berlaku, maka Jump ke lokasi tersebut dilakukan. Semua perintah ini menggunakan alamat relative selebar 8-bit dan Jump dapat dilakukan 128 bytes sebelum dan 127 bytes sesudah perintah Jump. Pelajari perintah-perintah ini satu demi satu.

JNB (Jump if bit not set)

Perintah JNB menguji yang terspesifikasi bit dalam perintah, dan jika hasil yang ditemukan adalah ‘0’, maka jump dilakukan ke alamat relative yang telah ditentukan dalam perintah. Sintaksnya adalah bit JNB, dimana rel adalah alamat 8-bit relative. Alamat relative ‘rel’ adalah pemindahan bertanda. Kita dapat menguji port bit dan pencabangan program dimungkinkan untuk mengambil tindakan tertentu. Sebagai contoh, jika P1.0 dihapus dan dengan mekanisme eksternal tertentu, maka lampu dimatikan. LMP_OF adalah alamat dari lokasi memori dimana sebuah perintah yang mengganti status lampu dituliskan. LMP_OF harus berada dalam jangkauan yang dapat dialamatkan yaitu 128 sebelum dan 127 sesudah perintah JNB. Ini mungkin perintah sederhana yang membersihkan pin port, contohnya, jika lampu dikendalikan oleh pin P2.0, lalu CLR P2.0 akan melaksanakannya.

JNZ (Jump if Not Zero)

Perintah ini menguji konten akumulator dan jika ia bukan nol, maka Jump dilakukan ke alamat relative. Sebagai contoh penggunaan perintah JNZ, mari kita asumsikan bahwa akumulatornya sudah dibersihkan, maka perintah berikut tidak akan menyebabkan Jump.

fig4-11d

Namun, sekarang jika akumulator adalah non-zero, maka Jump akan dilakukan ke alamat relatif.

fig4-11e1

 

JB (Jump if Bit Set)

Jump jika bit di-set sebagai perintah ‘JB bit, rel’ menguji sebuah bit untuk ‘1’, jika bit yang ditentukan di-set, maka Jump dilakukan ke alamat relative. Sebagai contoh, program berikut menguji pin Port1 dan pin P1.0 dan Jump ke STRT_M jika bit P1.0 di-set.

fig4-11e

· kirim komentar

Komentar

Tambahkan komentar anda di bawah, atau trackback dari situs anda. Berlangganan komentar ini melalui RSS.

Silahkan berdiskusi yang padat dan berisi. Tetap pada topik. Dilarang spam.