2.3.5. Instruksi Percabangan
description
Transcript of 2.3.5. Instruksi Percabangan
1
2.3.5. Instruksi Percabangan
Instruksi percabangan mengubah urutan normal pelaksanaan suatu program. Dengan instruksi ini program yang sedang dilaksanakan akan mencabang ke suatu alamat tertentu.
- Instruksi percabangan tanpa
syarat
- Instruksi percabangan bersyarat
2
a. Instruksi percabangan tanpa syarat
- CALL alamatInstruksi ini melakukan lompatan ke suatu subroutine yang ditunjuk oleh alamat/label. Ada beberapa instruksi CALL1. ACALL alamat-11b
Lompatan yang dapat dilakukan berada di area 2 Kbyte
2. LCALL alamat-16bLompatan yang dapat dilakukan berada
di area 64 Kbyte
3
- JMP alamat
Instruksi ini melakukan lompatan ke suatu tempat yang ditunjuk oleh alamat/label. Ada beberapa instruksi JMP
1. SJMP alamat-8b
Lompatan yang dapat dilakukan berada
di area 256 alamat
2. AJMP alamat-11b
Lompatan yang dapat dilakukan berada
di area 2 Kbyte
4
3. LJMP alamat-16b
Lompatan yang dapat dilakukan berada
di area 64 Kbyte
5
b. Instruksi percabangan bersyarat
CJNE
Instruksi ini akan membandingkan isi register, atau isi memory dengan suatu data. Bila sama, instruksi selanjutnya yang dituju. Bila tidak sama, instruksi yang ditunjuk oleh label yang akan dilaksanakan.
6
Contoh instruksi:
CJNE R0,#02H,Tak_sama
berarti jika R0 tidak sama dengan 02H maka instruksi akan menuju ke label Tak_Sama
7
DJNZ
Instruksi ini akan mengurangi isi register, atau isi memory dengan satu. Bila sudah “0”, instruksi selanjutnya yang akan dilaksanakan. Bila belum “0”, instruksi dilanjutkan ke label.
8
Contoh instruksi:
DJNZ R1,Ulang
berarti jika R1 tidak sama dengan “0” setelah dikurangi “1” , pelaksanaan instruksi harus melompat ke label Ulang
9
JB
Instruksi ini akan menguji suatu alamat bit. Bila isinya “1”, instruksi akan menuju lael. Bila isinya “0”, instruksi selanjutnya yang akan dilaksanakan.
10
Contoh instruksi:
JB P1.0,Ulang
berarti jika P1.0 berisi “1” , pelaksanaan instruksi melompat ke label Ulang.
11
JBC
Instruksi ini akan menguji suatu alamat bit. Bila isinya “1” (set), bit tersebut akan di clear dan eksekusi menuju label. Bila alamat bit berisi “0”, instruksi selanjutnya yang akan dilaksanakan.
12
Contoh instruksi:
JBC C,LANJUT
bila Carry flag berisi 1, carry flag akan di-clear dan eksekusi menuju label LANJUT. Bila carry flag berisi 0, instruksi selanjutnya yang akan dijalankan
13
JC
Instruksi ini akan menguji Carry Flag. Bila isinya “1” (set), eksekusi menuju label. Bila Carry Flag berisi “0”, instruksi selanjutnya yang akan dilaksanakan.
14
Contoh instruksi:
JC LANJUT
bila Carry flag berisi 1, carry flag akan di-clear dan eksekusi menuju label LANJUT. Bila carry flag berisi 0, instruksi selanjutnya yang akan dijalankan
15
JNB
Instruksi ini akan menguji suatu alamat bit. Bila isinya “0”, instruksi akan menuju label. Bila isinya “1”, instruksi selanjutnya yang akan dilaksanakan.
16
Contoh instruksi:
JNB P2.0,Ulang
berarti jika P2.0 berisi “0” , pelaksanaan instruksi melompat ke label Ulang.
17
JNC
Instruksi ini menguji isi carry flag. Jika berisi 0, eksekusi akan menuju ke label. Jika berisi 1, instruksi selanjutnya yang akan dilaksanakan.
18
JNZ
Instruksi ini akan menguji akumulator. Jika isinya tidak sama dengan “0”, eksekusi akan menuju ke label. Jika sama dengan “0” instruksi selanjutnya yang akan dilaksanakan.
19
JZ
Instruksi ini akan menguji akumulator. Jika berisi sama dengan “0”, eksekusi akan menuju ke label. Jika tidak sama dengan “0” instruksi selanjutnya yang akan dilaksanakan.