Anda di halaman 1dari 15

Mikroprosesor

Bab 6 : Operasi Percabangan

- Intruksi JUMP

1
INSTRUKSI JUMP

- Melibatkan register PC. PC adalah register 16 bit yang menyimpan alamat


memori dari intruksi yang akan dikerjakan.
- Intruksi JUMP merubah urutan program. Bila operasi biasa mengerjakan
program secara berurutan intruksi JUMP membuat lompatan-lompatan
sesuai dengan yang diinginkan.

Terdapat 2 bentuk :
2000H 2000H

2005H JP 3000H 2005H JP C,3000H

3000H 3000H

Lompat tanpa syarat Lompat bersyarat 2


INSTRUKSI JUMP
JUMP ke alamat memory nn JUMP ke segment tertentu

Contoh : JP 1250 H membuat lompatan Contoh : JR $+05H. Digunakan untuk


ke alamat memory 1250H. lompat ke lokasi ke-5 setelah isi PC.

3
INSTRUKSI JUMP
JUMP ke alamat memory nn jika syarat terpenuhi

JP cc, nn

ya
cc = 0 ?
tdk

4
INSTRUKSI JUMP
JUMP ke segment lain jika syarat terpenuhi

5
INSTRUKSI JUMP
1. Register B berisi data FFH. Register A berisi data FFH. Memori address 0004H
berisi instruksi untuk menambahkan isi register B dan A. Kemudian
decrementkan isi register B. Jika terdapat carry ulangi instruksi pada memori
address 0004H. Jika tidak ada carry lanjutkan program dengan istruksi pengisian
register H dengan data ACH!
2. Register A berisi data EBH. Register D berisi data 7CH. Lokasi memori 0004H
berisi instuksi mengurangkan isi register A dengan isi dari register D. Kemudian
meng-decrementkan isi register D. Jika no zero maka lompat ke segmen $ - 2.
Jika tidak NZ maka lakukan isntruksi pengisian register C dengan data 27H dan
kurangkan isi register A dengan isi register C tersebut !

5
INSTRUKSI JUMP
JUMP ke alamat memory yang dipegang register

1 2

Contoh : Isi PC adalah 1000H


3 1. Isi HL adalah 4700 H. Maka intruksi
JP (HL) akan membuat lompatan ke
alamat memori 4700H
2. Isi IX adalah 4800 H. Maka JP (IX)
akan melompat ke alamat memory
4800 H
3. Isi IY adalah 4900 H. Maka JP (IY)
akan melompat ke alamat memori
6
4900H
INSTRUKSI JUMP
JUMP ke segment lain bila Register B berisi bukan nol

Description:
Merupakan intruksi bersyarat dimana isi dari register menentukan hasil percabangan.
Register B di decrementkan. Bila hasilnya bukan nol maka nilai displacement e
ditambah ke isi PC. Intruksi berikutnya akan diambil dari isi PC terbaru.

7
INSTRUKSI JUMP

N Opcode +
Mnemonic Keterangan
o Operands
1 JP nn C3, n, n Jump ke alamat memory nn
2 JR e 18, e2 Jump ke segment lain
3 JP NZ, nn C2, n, n Jump jika No Zero ke alamat memory nn
4 JP Z, nn CA, n, n Jump jika Zero ke alamat memory nn
5 JP NC, nn D2, n, n Jump jika No Carry ke alamat memory nn
6 JP C, nn DA, n, n Jump jika Carry ke alamat memory nn
7 JP PO, nn E2, n, n Jump jika jumlah 1 genap ke alamat memory nn
8 JP PE, nn EA, n, n Jump jika jumlah 1 ganjil ke alamat memory nn
9 JP P, nn F2, n, n Jump jika S=0 (Positif) ke alamat memory nn
10 JP M, nn FA, n, n Jump jika S= 1 (Negatif) ke alamat memory nn

8
INSTRUKSI JUMP

N Opcode +
Mnemonic Keterangan
o Operands
1 JR C, e 38, e2 Jump jika ada Carry ke segment lain
2 JR NC, e 30, e2 Jump jika No Carry ke segment lain
3 JR Z,e 28, e Jump jika ada Zero ke segment lain
4 JR NZ, e 20, e Jump jika No Zero ke segment lain
5 JP (HL) E9 Jump ke alamat memori yang dipegang HL.
6 JR (IX) DD, E9 Jump ke alamat memori yang dipegang IX.
7 JR (IY) FD, E9 Jump ke alamat memori yang dipegang IY.
8 DJNZ, e 10, e2 Jump jika hasil decrement B bukan nol ke segment lain

9
INSTRUKSI JUMP

Contoh : Tentukan isi alamat-alamat memory dari program dibawah ini dengan
menggunakan alamat awal 0000H.
- LD C, 05H Alamat Memory Contents Mnemonic
0000H 3E LD C, 05H
- DEC C.
0001H 05 -
- JP Z,0009H.
0002H 0D DEC C
- JP 0002H.
0003H CA JP Z, 0009H
- HALT
0004H 09 -
0005H 00 -
0006H C3 JP 0002H
0007H 02 -
0008H 00 -
0009H 76 HALT
9
INSTRUKSI JUMP

FLOWCHART

START

LD C, 05H

DEC C

JP Z, 0009H

tdk
Z = 0? JP 0002H
ya
STOP

9
INSTRUKSI JUMP

1.Buatlah program untuk mengisi register C dengan data 46H.


Kemudian kalikan angka 15 dan 20, hasil perkalian simpan di reg
A. Tambahkan isi register C dengan isi register A!
2.Buatlah program untuk menemukan hasil bagi dari bilangan 63 /
9!
3.Buatlah program untuk menghitung hasil dari 6*8/12!

Anda mungkin juga menyukai