Jumat, 09 November 2012

Instruksi Lompatan Bersyarat

Instruksi Lompatan Bersyarat
Instruksi Jump bersyarat merupakan instruksi inti bagi mikrokontroler, tanpa kelompok instruksi ini program yang ditulis tidak banyak berarti. Instruksi-instruksi ini selain melibatkan Program Counter, melibatkan pula kondisi-kondisi tertentu yang biasanya dicatat dalam bit-bit tertentu yang dihimpun dalam Register tertentu.
Khusus untuk keluarga mikrokontroler MCS51 yang mempunyai kemampuan menangani operasi dalam level bit, instruksi jump bersyarat dalam MCS51 dikaitkan pula dengan kemampuan operasi bit MCS51.
Nomor memori-program baru yang harus dituju tidak dinyatakan dengan nomor memori-program yang sesungguhnya, tapi dinyatakan dengan ‘pergeseran relatip’ terhadap nilai Program Counter saat instruksi ini dilaksanakan. Cara ini dipakai pula untuk instruksi SJMP.
Instruksi JZ / JNZ
Instruksi JZ (Jump if Zero) dan instruksi JNZ (Jump if not Zero) adalah instruksi JUMP bersyarat yang memantau nilai Akumulator A.
MOV A,#0
JNZ BukanNol
JZ Nol
. . .
BukanNol:
. . .
Nol :
. . .
Dalam contoh program di atas, MOV A,#0 membuat A bernilai nol, hal ini mengakibatkan instruksi JNZ BukanNol tidak akan pernah dikerjakan (JNZ artinya Jump kalau nilai A<>0, syarat ini tidak pernah dipenuhi karena saat instruksi ini dijalankan nilai A=0), sedangankan instruksi JZ Nol selalu dikerjakan karena syaratnya selalu dipenuhi.
Instruksi JC / JNC
Instruksi JC (Jump on Carry) dan instruksi JNC (Jump on no Carry) adalah instruksi jump bersyarat yang memantau nilai bit Carry di dalam Program Status Word (PSW).
Bit Carry merupakan bit yang banyak sekali dipakai untuk keperluan operasi bit, untuk menghemat pemakaian memori-program disediakan 2 instruksi yang khusus untuk memeriksa keadaan bit Carry, yakni JC dan JNC. Karena bit akan diperiksa sudah pasti, yakni bit Carry, maka instruksi ini cukup dibentuk dengan 2 byte saja, dengan demikian bisa lebih menghemat memori program.
JC Periksa
JB PSW.7,Periksa
Hasil kerja kedua instruksi di atas sama, yakni MCS51 akan JUMP ke Periksa jika ternyata bit Carry bernilai ‘1’ (ingat bit Carry sama dengan PSW bit 7). Meskipun sama tapi instruksi JC Periksa lebih pendek dari instruksi JB PSW.7,Periksa, instruksi pertama dibentuk dengan 2 byte dan instruksi yang kedua 3 byte.
Instruksi JBC sama dengan instruksi JB, hanya saja jika ternyata bit yang diperiksa memang benar bernilai ‘1’, selain MCS51 akan JUMP ke instruksi lain yang dikehendaki MCS51 akan me-nol-kan bit yang baru saja diperiksa
Instruksi JB / JNB / JBC
Instruksi JB (Jump on Bit Set), instruksi JNB (Jump on not Bit Set) dan instruksi JBC (Jump on Bit Set Then Clear Bit) merupakan instruksi Jump bersyarat yang memantau nilai-nilai bit tertentu. Bit-bit tertentu bisa merupakan bit-bit dalam register status maupun kaki input mikrokontroler MCS51.
Pengujian Nilai Boolean dilakukan dengan instruksi JUMP bersyarat, ada 5 instruksi yang dipakai untuk keperluan ini, yakni instruksi JB (JUMP if bit set), JNB (JUMP if bit Not Set), JC (JUMP if Carry Bit set), JNC (JUMP if Carry Bit Not Set) dan JBC (JUMP if Bit Set and Clear Bit).
Dalam instruksi JB dan JNB, salah satu dari 256 bit yang ada akan diperiksa, jika keadaannya (false atau true) memenuhi syarat, maka MCS51 akan menjalankan instruksi yang tersimpan di memori-program yang dimaksud. Alamat memori-program dinyatakan dengan bilangan relatip terhadap nilai Program Counter saat itu, dan cukup dinyatakan dengan angka 1 byte. Dengan demikian instruksi ini terdisi dari 3 byte, byte pertama adalah kode operasinya ($29 untuk JB dan $30 untuk JNB), byte kedua untuk menyatakan nomor bit yang harus diuji, dan byte ketiga adalah bilangan relatip untuk instruksi tujuan.
Contoh pemakaian instruksi JB dan JNB sebagai berikut :
JB P1.1,$
JNB P1.1,$
Instruksi-instruksi di atas memantau kedaan kaki IC MCS51 Port 1 bit 1. Instruksi pertama memantau P1.1, jika P1.1 bernilai ‘1’ maka MCS51 akan mengulang instruksi ini, (tanda $ mempunyai arti jika syarat terpenuhi kerjakan lagi instruksi bersangkutan). Instruksi berikutnya melakukan hal sebaliknya, yakni selama P1.1 bernilai ‘0’ maka MCS51 akan tertahan pada instruksi ini.
http://www.mytutorialcafe.com/mikrokontroller%20set%20instruksi4.htm
• Lompatan Absolut bersyarat : JP cc, nn : PC nnJika syarat cc terpenuhi
• Lompatan Relatif bersyarat : JR cc, n : PC PC + eJika syarat cc terpenuhi
Lompatan Relatif bersyarat Khusus : DJNZ : B B - 1Jika B = 0 kontinyu dan jika B <> 0 PC PC + eSyarat yang dimaksud untuk setiap perintah Jump terkait dengankondisi bit status Flag dari satu step perintah sebelumnya. Ada 8kemungkinan syarat yang dapat diberikan terkait dengan bit status flag.Kedelapan syarat itu dalam mikroprosesor dicatat dalam sebuah registeryang disebut dengan register Flag. Untuk mikroprosesor Z-80 CPUsusunan status dari register flag sebagai berikut :
S Z X H X P/V N C
Susunan Register Flag Z-80 CPU

Makna masing-masing bit dari tanda status flag pada register Fadalah sebagai berikut :
• S (Sign) = 1 Menunjukkan hasil operasi aritmetika/logikasebelumnya bertanda negatif (b7 = 1) = 0 Menunjukkan hasiloperasi aritmetika/logika sebelumnya bertanda positif (b7 = 0)
• Z (Zerro) = 1 Menunjukkan hasil operasi aritmetika/logikasebelumnya bernilai nol = 0 Menunjukkan hasil operasiaritmetika/logika sebelumnya bernilai tidak nol
• H (Half- = 1 Jika ada carry dari bit B3 ke bit B4 Carry) = 0 Jika tidakada carry dari bit B3 ke bit B4
• P/V(Parity = 1 Jika hasil operasi aritmetika/logika sebelumnyamenunjukkan paritas ganjil atau terjadi Overflow Overflow) = 0 Jikahasil operasi aritmetika/logika sebelumnya menunjukkan paritasgenap atau tidak terjadi Overflow
• N (Non = 1 Operasi sebelumnya adalah operasiSUBTRACK/Pengurangan Carry) = 0 Operasi sebelumnya adalahoperasi bukan SUBTRACK/Pengurangan
• C (Carry) = 1 Jika operasi sebelumnya menghasilkan Carry atauborrow = 0 Jika operasi sebelumnya tidak menghasilkan Carry atauborrow
• X : tidak digunakan
http://www.scribd.com/doc/61691817/48/JUMP-Bersyarat


Tidak ada komentar:

Posting Komentar