
Manipulasi Bit MCS51
CLR C
| Siklus | Jumlah Byte | Instruksi | | | | | | | |
|--------|--------------|-----------|----|----|-----|-----|----|---|---|
| 1 | 2 | CLR C | | | | | | | |
| Flag | | C | AC | F0 | RS1 | RS0 | OV | | P |
| | | X | | | | | | | |
Clear Carry Flag atau mengubah bit Carry Flag menjadi 0.
CLR bit
| Siklus | Jumlah Byte | Instruksi | | | | | | | |
|--------|--------------|-----------|----|----|-----|-----|----|---|---|
| 1 | 2 | CLR Bit | | | | | | | |
| Flag | | C | AC | F0 | RS1 | RS0 | OV | | P |
| | | | | | | | | | |
Clear bit atau mengubah bit-bit pada RAM Internal ataupun register yang dapat dialamati secara bit (bit addressable) menjadi 0.
Contoh:
Clr P1.2
SETBĀ C
| Siklus | Jumlah Byte | Instruksi | | | | | | | |
|--------|--------------|-----------|----|----|-----|-----|----|---|---|
| 2 | 3 | SETB C | | | | | | | |
| Flag | | C | AC | F0 | RS1 | RS0 | OV | | P |
| | | X | | | | | | | |
Set Carry Flag atau mengubah bit Carry Flag menjadi 1.
SETB bit
| Siklus | Jumlah Byte | | Instruksi | | | | | | |
|--------|--------------|---|-----------|----|-----|-----|----|---|---|
| 2 | 2 | | SETB bit | | | | | | |
| Flag | | C | AC | F0 | RS1 | RS0 | OV | | P |
| | | | | | | | | | |
Set bit atau mengubah bit-bit pada RAM Internal maupun register yang dapat dialamat secara bit (bit addressable) menjadi 1.
Contoh:
Setb A.7
Bit ke 7 dari akumulator A diubah menjadi 1, bila sebelumnya nilai akumulator A adalah 02H atau 00000010b maka setelah instruksi ini dijalankan, nilai akumulator A akan menjadi 82H atau 10000010b.
CPL C
| Siklus | Jumlah Byte | Instruksi | | | | | | | |
|--------|--------------|-----------|----|----|-----|-----|----|---|---|
| 2 | 2 | CPL C | | | | | | | |
| Flag | | C | AC | F0 | RS1 | RS0 | OV | | P |
| | | X | | | | | | | |
Melakukan komplemen pada bit carry flag, apabila sebelumnya bit carry flag adalah 0 maka setelah instruksi ini dijalankan maka bit carry flag akan berada pada posisi set atau 1 demikian pula sebaliknya.
CPL bit
| Siklus | Jumlah Byte | Instruksi | | | | | | | |
|--------|--------------|-----------|----|----|-----|-----|----|---|---|
| 1 | 1 | CPL bit | | | | | | | |
| Flag | | C | AC | F0 | RS1 | RS0 | OV | | P |
| | | | | | | | | | |
Melakukan komplemen pada bit pada register atau memori yang dapat dialamati secara bit (bit addressable), apabila sebelumnya bit pada memori atau register tersebut adalah 0 maka setelah instruksi ini dijalankan maka bit pada memori atau register tersebut akan berada pada posisi set atau 1 demikian pula sebaliknya.
ANL C,bit
| Siklus | Jumlah Byte | Instruksi | | | | | | | |
|--------|--------------|-----------|----|----|-----|-----|----|---|---|
| 2 | 2 | ANL C,bit | | | | | | | |
| Flag | | C | AC | F0 | RS1 | RS0 | OV | | P |
| | | X | | | | | | | |
Melakukan operasi AND antara bit carry flag dan bit pada register atau memori yang dapat dialamati secara bit (bit addressable).
ANL C,/bit
| Siklus | Jumlah Byte | Instruksi | | | | | | | |
|--------|--------------|------------|----|----|-----|-----|----|---|---|
| 2 | 2 | ANL C,/bit | | | | | | | |
| Flag | | C | AC | F0 | RS1 | RS0 | OV | | P |
| | | X | | | | | | | |
Melakukan operasi AND antara bit carry flag dengan komplemen dari bit pada register atau memori yang dapat dialamati secara bit (bit addressable).
Contoh:
ANL C,/A.7
Bila sebelumnya bit carry flag adalah 0 dan nilai akumulator A adalah 80H atau 10000000b, maka 0 pada bit carry flag akan di AND dengan 1 pada bit ketujuh akumulator A dan menghasilkan 0. Hasil AND ini disimpan pada bit carry flag, sehingga nilai carry flag sesudah instruksi ini dijalankan adalah tetap 0.
ORL C,bit
| Siklus | Jumlah Byte | Instruksi | | | | | | | |
|--------|--------------|------------|----|----|-----|-----|----|---|---|
| 2 | 2 | ORL C,/bit | | | | | | | |
| Flag | | C | AC | F0 | RS1 | RS0 | OV | | P |
| | | X | | | | | | | |
Melakukan operasi OR antara bit carry flag dengan komplemen dari bit pada register atau memori yang dapat dialamati secara bit (bit addressable).
Contoh:
ORL C,/A.7
Bila sebelumnya bit carry flag adalah 0 dan nilai akumulator A adalah 80H atau 10000000b, maka 0 pada bit carry flag akan di OR dengan 1 pada bit ketujuh akumulator A dan menghasilkan 0. Hasil OR ini disimpan pada bit carry flag, sehingga nilai carry flag sesudah instruksi ini dijalankan adalah tetap 0.
MOV C,bit
| Siklus | Jumlah Byte | Instruksi | | | | | | | |
|--------|--------------|-----------|----|----|-----|-----|----|---|---|
| 1 | 2 | MOV C,bit | | | | | | | |
| Flag | | C | AC | F0 | RS1 | RS0 | OV | | P |
| | | | | | | | | | |
Melakukan pemindahan dari bit pada register atau memori yang dapat dialamati secara bit (bit adressable) ke bit carry flag.
Contoh:
Mov C,A.0
Apabila nilai akumulator A adalah 01H atau 00000001 maka bit ke 0 dari akumulator A, yaitu 0 akan dipindah ke bit carry flag sehingga nilai dari bit ini adalah 0.
MOV bit,C
| Siklus | Jumlah Byte | Instruksi | | | | | | | |
|--------|--------------|-----------|----|----|-----|-----|----|---|---|
| 2 | 2 | MOV bit,C | | | | | | | |
| Flag | | C | AC | F0 | RS1 | RS0 | OV | | P |
| | | | | | | | | | |
Melakukan pemindahan dari bit carry flag ke bit pada register atau memori yang dapat dialamati secara bit (bit adressable).
Contoh:
Mov A.1,C
Apabila nilai akumulator A adalah 01H atau 00000001b dan nilai bit carry flag adalah 1 atau set maka nilai 1 pada bit carry flag akan dipindah ke bit ke 1 dari akumulator A, sehingga nilai akumulator A akan berubah menjadi 03H atau 00000011b.
JC rel
| Siklus | Jumlah Byte | Instruksi | | | | | | | |
|--------|--------------|-----------|----|----|-----|-----|----|---|---|
| 2 | 2 | JC rel | | | | | | | |
| Flag | | C | AC | F0 | RS1 | RS0 | OV | | P |
| | | | | | | | | | |
Melakukan lompatan ke suatu alamat yang didefinisikan apabila carry flag set. Apabila carry flag clear maka program akan menjalankan instruksi selanjutnya.
Contoh:
Jc Alamat1
Mov A,#05H
Alamat1:
Mov R1,#00H
Apabila carry flag set, maka program akan lompat label alamat 1 dan menjalankan instruksi Mov R1,#00H, namun bila carry flag clear maka program akan menjalankan instruksi Mov A,#05H terlebih dahulu sebelum menjalankan instruksi di label alamat 1.
JNC rel
| Siklus | Jumlah Byte | Instruksi | | | | | | | |
|--------|--------------|-----------|----|----|-----|-----|----|---|---|
| 2 | 2 | JNC rel | | | | | | | |
| Flag | | C | AC | F0 | RS1 | RS0 | OV | | P |
| | | | | | | | | | |
Melakukan lompatan ke suatu alamat yang didefinisikan apabila carry flag clear. Apabila carry flag set maka program akan menjalankan instruksi selanjutnya.
Contoh:
Jnc Alamat1
Mov A,#05H
Alamat1:
Mov R1,#00H
Apabila carry flag clear, maka program akan lompat label alamat 1 dan menjalankan instruksi Mov R1,#00H, namun bila carry flag set maka program akan menjalankan instruksi Mov A,#05H terlebih dahulu sebelum menjalankan instruksi di label alamat 1.
JB bit,rel
| Siklus | Jumlah Byte | Instruksi | | | | | | | |
|--------|--------------|------------|----|----|-----|-----|----|---|---|
| 2 | 3 | JB bit,rel | | | | | | | |
| Flag | | C | AC | F0 | RS1 | RS0 | OV | | P |
| | | | | | | | | | |
Melakukan lompatan ke suatu alamat yang didefinisikan apabila bit dari register atau memori yang dapat dialamati secara bit (bit addressable) set. Apabila bit tersebut clear maka program akan menjalankan instruksi selanjutnya.
Contoh:
Jb P1.0,Alamat1
Mov A,#05H
Alamat1:
Mov R1,#00H
Apabila bit tersebut set, maka program akan lompat label alamat 1 dan menjalankan instruksi Mov R1,#00H, namun bila bit tersebut clear maka program akan menjalankan instruksi Mov A,#05H terlebih dahulu sebelum menjalankan instruksi di label alamat 1.
JNB bit,rel
| Siklus | Jumlah Byte | Instruksi | | | | | | | |
|--------|--------------|-------------|----|----|-----|-----|----|---|---|
| 2 | 3 | JNB bit,rel | | | | | | | |
| Flag | | C | AC | F0 | RS1 | RS0 | OV | | P |
| | | | | | | | | | |
Melakukan lompatan ke suatu alamat yang didefinisikan apabila bit dari register atau memori yang dapat dialamati secara bit (bit addressable) clear. Apabila bit tersebut set maka program akan menjalankan instruksi selanjutnya.
Contoh:
JNB P1.0,Alamat1
Mov A,#05H
Alamat1:
Mov R1,#00H
Apabila bit tersebut clear, maka program akan lompat label alamat 1 dan menjalankan instruksi Mov R1,#00H, namun bila bit tersebut set maka program akan menjalankan instruksi Mov A,#05H terlebih dahulu sebelum menjalankan instruksi di label alamat 1.
JBC bit,rel
| Siklus | Jumlah Byte | Instruksi | | | | | | | |
|--------|-------------|-------------|----|----|-----|-----|----|---|---|
| 2 | 3 | JBC bit,rel | | | | | | | |
| Flag | | C | AC | F0 | RS1 | RS0 | OV | | P |
| | | | | | | | | | |
Sama dengan instruksi Jb bit,rel , namun terdapat proses clear pada bit tersebut sesudah lompatan dilakukan.
Contoh:
JBC A.7,Alamat1
Apabila bit ketujuh dari akumulator A set, maka lompat ke alamat 1 dan sekaligus mengubah kondisi bit ketujuh dari akumulator A menjadi clear.