Assembly04

advertisement
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
Download