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 1 a. Instruksi percabangan tanpa syarat - CALL alamat Instruksi ini melakukan lompatan ke suatu subroutine yang ditunjuk oleh alamat/label. Ada beberapa instruksi CALL 1. ACALL alamat-11b Lompatan yang dapat dilakukan berada di area 2 Kbyte 2. LCALL alamat-16b Lompatan yang dapat dilakukan berada di area 64 Kbyte 2 - 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 3 3. LJMP alamat-16b Lompatan yang dapat dilakukan berada di area 64 Kbyte 4 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. 5 Contoh instruksi: CJNE R0,#02H,Tak_sama berarti jika R0 tidak sama dengan 02H maka instruksi akan menuju ke label Tak_Sama 6 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. 7 Contoh instruksi: DJNZ R1,Ulang berarti jika R1 tidak sama dengan “0” setelah dikurangi “1” , pelaksanaan instruksi harus melompat ke label Ulang 8 JB Instruksi ini akan menguji suatu alamat bit. Bila isinya “1”, instruksi akan menuju lael. Bila isinya “0”, instruksi selanjutnya yang akan dilaksanakan. 9 Contoh instruksi: JB P1.0,Ulang berarti jika P1.0 berisi “1” , pelaksanaan instruksi melompat ke label Ulang. 10 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. 11 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 12 JC Instruksi ini akan menguji Carry Flag. Bila isinya “1” (set), eksekusi menuju label. Bila Carry Flag berisi “0”, instruksi selanjutnya yang akan dilaksanakan. 13 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 14 JNB Instruksi ini akan menguji suatu alamat bit. Bila isinya “0”, instruksi akan menuju label. Bila isinya “1”, instruksi selanjutnya yang akan dilaksanakan. 15 Contoh instruksi: JNB P2.0,Ulang berarti jika P2.0 berisi “0” , pelaksanaan instruksi melompat ke label Ulang. 16 JNC Instruksi ini menguji isi carry flag. Jika berisi 0, eksekusi akan menuju ke label. Jika berisi 1, instruksi selanjutnya yang akan dilaksanakan. 17 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. 18 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. 19